All Projects → JimmyCushnie → Succ

JimmyCushnie / Succ

Licence: wtfpl
Sexy and Utilitarian Code Configuration

Programming Languages

csharp
926 projects

Projects that are alternatives of or similar to Succ

Savegamefree
Save Game Free is a free and simple but powerful solution for saving and loading game data in unity.
Stars: ✭ 279 (+179%)
Mutual labels:  serialization-library, serialization, unity, unity3d, unity3d-plugin
Restclient
🦄 Simple HTTP and REST client for Unity based on Promises, also supports Callbacks! 🎮
Stars: ✭ 675 (+575%)
Mutual labels:  unity, unity3d, unity3d-plugin
Lunar Unity Console
High-performance Unity iOS/Android logger built with native platform UI
Stars: ✭ 628 (+528%)
Mutual labels:  unity, unity3d, unity3d-plugin
Savegamepro
A Complete and Powerful Save Game Solution for Unity (Game Engine)
Stars: ✭ 30 (-70%)
Mutual labels:  unity, unity3d, unity3d-plugin
Spriteglow
A sprite glow effect for Unity game engine
Stars: ✭ 1,287 (+1187%)
Mutual labels:  unity, unity3d, unity3d-plugin
Spritedicing
Unity extension for reusing sprite texture areas
Stars: ✭ 589 (+489%)
Mutual labels:  unity, unity3d, unity3d-plugin
Ubernet
Flexible networking library for Unity
Stars: ✭ 10 (-90%)
Mutual labels:  unity, unity3d, unity3d-plugin
Crystalai
A Utility AI for C# and Unity
Stars: ✭ 328 (+228%)
Mutual labels:  unity, unity3d, unity3d-plugin
Unityasync
Task and Async Utility Package for Unity. Start co-routines from anywhere.
Stars: ✭ 58 (-42%)
Mutual labels:  unity, unity3d, unity3d-plugin
Awesome Unity Open Source On Github
A categorized collection of awesome Unity open source on GitHub (800+)
Stars: ✭ 1,124 (+1024%)
Mutual labels:  unity, unity3d, unity3d-plugin
Extosc
extOSC is a tool dedicated to simplify creation of applications in Unity with OSC protocol usage.
Stars: ✭ 69 (-31%)
Mutual labels:  unity, unity3d, unity3d-plugin
Jengine
JEngine是针对Unity开发者设计的开箱即用的框架,封装了强大的功能,小白也能快速上手,轻松制作可以热更新的游戏 | JEngine is a streamlined and easy-to-use framework designed for Unity Programmers which contains powerful features, beginners can start up quickly and making hot update-able games easily
Stars: ✭ 564 (+464%)
Mutual labels:  unity, unity3d, unity3d-plugin
Unity3d Rainbow Folders
This asset allows you to set custom icons for any folder in unity project browser.
Stars: ✭ 519 (+419%)
Mutual labels:  unity, unity3d, unity3d-plugin
Unitymeshsimplifier
Mesh simplification for Unity.
Stars: ✭ 592 (+492%)
Mutual labels:  unity, unity3d, unity3d-plugin
Opencvforunity
OpenCV for Unity (Untiy Asset Plugin)
Stars: ✭ 359 (+259%)
Mutual labels:  unity, unity3d, unity3d-plugin
Uduino
Simple and easy connection between Arduino and Unity
Stars: ✭ 25 (-75%)
Mutual labels:  unity, unity3d, unity3d-plugin
Unity Colourlovers Importer
Unity editor tool to load colours and palettes directly from COLOURlovers.com
Stars: ✭ 85 (-15%)
Mutual labels:  unity, unity3d, unity3d-plugin
Unity Script Collection
A maintained collection of useful & free unity scripts / library's / plugins and extensions
Stars: ✭ 3,640 (+3540%)
Mutual labels:  unity, unity3d, unity3d-plugin
Mapssdk Unity
This repository contains samples, documentation, and supporting scripts for Maps SDK, a Microsoft Garage project.
Stars: ✭ 307 (+207%)
Mutual labels:  unity, unity3d, unity3d-plugin
X Postprocessing Library
Unity Post Processing Stack Library | Unity引擎的高品质后处理库
Stars: ✭ 1,079 (+979%)
Mutual labels:  unity, unity3d, unity3d-plugin

Sexy and Utilitarian Code Configuration
Created by Jimmy Cushnie


Do your configuration files look like this?

<weapons>
    <weapon>
        <name>sword</name>
        <damage>10</damage>
        <attackSpeed>1</attackSpeed>
    </weapon>
    <weapon>
        <name>dagger</name>
        <damage>6</damage>
        <attackSpeed>1.3</attackSpeed>
    </weapon>
    <weapon>
        <name>axe</name>
        <damage>20</damage>
        <attackSpeed>0.4</attackSpeed>
    </weapon>
</weapons>

Do your configuration files, god forbid, look like this? cough cougheasy save

{"weapons":{"__type":"System.Collections.Generic.List`1[[Weapon, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]],mscorlib","value":[{"name":"sword","damage":10,"attackSpeed":1},{"name":"dagger","damage":6,"attackSpeed":1.3},{"name":"axe","damage":20,"attackSpeed":0.4}]}}

With SUCC, your configuration files can look like this:

weapons:
    -
        name: sword
        damage: 10
        attackSpeed: 1
    -
        name: dagger
        damage: 6
        attackSpeed: 1.3
    -
        name: axe
        damage: 20
        attackSpeed: 0.4

Look at that. That's a beautiful configuration file. There's zero wasted space on formatting. Everything is laid out clearly so that it's easy to find what you're looking for. The file is fast for a human to read and fast for a human to edit. If you were working on this game and needed to add a new weapon type, what would you rather the configuration file look like?

Furthermore, SUCC gives you a lot of freedom when writing or editing config files. You can play around with the colon position and the indentation level, you can add whitespace, you can add comments. The following file will, to SUCC, load exactly the same as the preceding one:

weapons:
    -
      # the sword is your starting weapon, very general purpose.
      name        : sword
      damage      : 10
      attackSpeed : 1
      
    -
      # daggers are useful against enemies with slow attack rates.
      name        : dagger
      damage      : 6
      attackSpeed : 1.3
      
    -
      # you use an axe when you need to get rid of a low-health
      # enemy as quickly as possible.
      name        : axe
      damage      : 20 # this is overpowered. TODO balance better
      attackSpeed : 0.4

Not only are SUCC files easy to work with in a text editor, they're easy to work with in your code too. Here is all the code required to recreate that configuration file:

using System.Collections.Generic;
using SUCC;

public class Weapon
{
    public string name;
    public float damage;
    public float attackSpeed;
}

static class Program
{
    static void Main()
    {
        List<Weapon> weapons = new List<Weapon>()
        {
            new Weapon()
            {
                name = "sword",
                damage = 10,
                attackSpeed = 1
            },
            new Weapon()
            {
                name = "dagger",
                damage = 6,
                attackSpeed = 1.3f
            },
            new Weapon()
            {
                name = "axe",
                damage = 20,
                attackSpeed = 0.4f
            },
        };

        var file = new DataFile("weaponsFile");
        file.Set("weapons", weapons);
    }
}

The important part of that is

var file = new DataFile("weaponsFile");
file.Set("weapons", weapons);

You keep a reference to that DataFile variable, and later when you need to read it, it's as simple as this:

var weaponsList = file.Get<List<Weapon>>("weapons");

But it can be even easier. You just do

var weaponsList = file.Get("weapons", defaultValue: weapons);

SUCC will check if a value called "weapons" exists in the file. If so, it will read the file and give you that data. If not, it will save defaultValue to the file and return it to you.

Start Using SUCC

Much more information about SUCC can be found on the wiki. If you're new to SUCC, you probably want to see the Installing and Getting Started pages.

Related Projects

In C#

InterSUCC is an extension for SUCC that lets you create SUCC DataFiles which implement an interface type. Getting and setting the properties of those interfaces gets and sets the values in the DataFiles.

SUCC in Other Languages

Check out SUCC4J by FalsePattern, a full port of SUCC to java!

There are also ongoing projects to port SUCC to Rust and node.js.

Also check out cSUCC, a tool for reading and writing values to SUCC files in C.

SUCC Utilities

Sublime SUCC by pipe01 provides syntax highlighting for SUCC files in Sublime Text 3.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].