Code Monkey home page Code Monkey logo

robocodo's People

Contributors

andrioden avatar bjorntore avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

robocodo's Issues

Future Ideas up for discussion

World

  • Natural Obstacles. The basic principle is to increase the difficulty of programming correctly. This will make the world come alive.
  • Neutral nomads. Quests, similar to City States in CIV.
  • Can find Thorium or such that can be harvested for extra energy, or placed a building ontop which serves as a energy station. Or such

Robots

  • New Robot type: Construction Robots, has instruction "BUILDING COMPLETE" and "REDO CODE" or something. that allows them to be reprogrammed when done. Or maybe they automatically have to be SCRAPPED to iron and copper when their task is done. Maybe thats more balanced, so you cant build an army of constructions robots, but instead its a temporary investment to contstruct faster.
  • New Robot type: Fertalizer, can increase growth and/or refertalize land. Or such.
  • New Robot type: BatteryRobot, has a huge secondary battery that itself (maybe) and other robots can charge from using a Charge Instruction. Meaning it has its normal "energy" and a "battery" value.
  • New Robot type: City Logistics Robot. Can automate city actions: Building robots, programming robots, sending robots out. etc.
  • Can clone a robot, the robot type, the code and the modules.
  • Show robot energy status in GUI somewhere?
  • New robot: pull robot, that pulls other robots
  • Flying robots? Very expensive, high energy demand.
  • Manned Robots
    • Can be recalled.
    • Costs 1 population to craft

Robots - Modules

  • Combat AI Module which allows two new instructions:
    • Seek Nearest Enemy (might be to OP)
    • Attack Nearby Enemy (maybe this should be the only allowable)
  • Harvest AI Module
    • Seek Nearest Copper
    • Seek Nearest Iron
    • Seek Nearest Resource
  • Defensive Module
    • Shoots on scavengers

Robots - Code

  • Save code as blueprints? We could call it "Save to GIT (Global Instruction Trunk)" ; )

Buildings

  • House: Allows more population.
  • Resource Depot (should be the first we try, as its the most interesting one)
  • Solar Rescharge Station
  • Harvesting Building,
  • Defence Tower,
  • Teleport Station
  • Walls as defence?
  • Takes a physical spot on the world and cant be passed.

Technology

  • Tech that unlocks Code Help
  • Teching is done with minipuzzles "SciencePuzzle", for instance that you should optimalize a route (using instructions in a non-world game board). And consume science on the way. Puzzles start easy the lower the tech. New robot ResearchRobot that is not present in the upper world. Puzzles can be randomly genereated at the start of the game and is the same for all players. New instructions: Jump and Dig. Maybe you can se a ghost form of other players robots.
    • Puzzles placed below ground, using real game objects.

Other

  • Add support for turn based. Just need to tweak the WorldTicker
  • Game Mode - Defense: A horde of neutral attacking robots roams the map and attacks everything.
  • Win conditions:
    • Wonder
    • TyCooon style without win condition, but instead just a net worth?
  • Add Fog of War,
    • Scout Robots, which is sent into the fog of war to scout it, can be viewed through a camera. When it returns it reveals that part of the map.
  • AI
  • Gathering resources near infection can have a chance of spreading it, meaning the infection resource object itself can carry "infection".
  • City Manager Robot with advanced instruction sets that can make it program other robots. Allowing you to fully automating the expansion of your resource gathering.

GUI

  • Insane GUI proposal: The GUI is actually a screen, the player can click a left or right button to switch between screens. For instance Screen 1 is the overview, Screen 2 is the tech tree. Imagine turning your head from screen 1 and screen 2. This indicates that you the player is actually a person in the game, sitting in his chair and looking at a screen. When switching, you can actually see that you look from screen 1 to 2.

Non-Functional

Buying robot costs resources

Add resource system to game

Clicking the city should spawn a new robot, which costs resources:
○ 3 Iron
○ 1 Copper

Button to salvage and reprogram robot

"Salvage next time when home" - Gives you 25% of robot cost back.
"Reprogram next time when home" - Cost 25% of robot cost (paid when you push button).

Add Combat Robot

Add damage to Combat Robot
Harvester has 0 damage and 1 health

Allow instructions for Combat Robot
○ ACTION: Melee Attack

- Health: 5
- Damage: 1
- Memory: 15
- Energy: 30
- Cost:
    ○ 2 Iron
    ○ 5 Copper

Define first pattern for instructions

  • Rename WALK to MOVE
  • Has to be able to call an class and get an object that represents "MOVE UP" or returns "MOVE UP". But it has to be strongly typed. Ala Instructions.MoveUp()

Run robot på client feiler i RobotPanel før synk av instruksjoner er gjort

Med en client. test å starte en robot og se at current instruction feiler litt i starten. Så funker det igjen. Du får ca 2.3 argumentOutOfRangeException
skjer nok fordi instruksjonen ikke blir synket helt instant, og dermed aksesseres av panelet før synk er gjort. Instruksjonen bør lagres av CLIENT først lokalt. Og sendes til server.

Robot Panel feedback

  • I think we should autoindent or something when LOOPS is used. for code readabillity.
  • Think we need more space for the code

Add robot speed

1 speed is normal, 2 speed makes it run two instructions per "tick".

Resource on hover should maybe show remaining resources

Now it is just an internal value that is printable when you click the resource. You can also tell by the size of the node.

Or maybe we should not do it like this? But keep it as secret information, and rather just let the size be the only indicator.

Add energy

Robots may run out of energy and stops
Robots recharge to max when touches PlayerCity
MOVE HOME costs just as much as it would if it was hardcoded.

Show preview of move directions

  • Show both when running code and when planning.
  • Has to be based on the RunNextIInstruction logic, the code has to be written reusable.
  • Arrows per tile. ÅÅÅÅÅÅHsexy

Limit robot instruction by robot memory

André thinks:

  • Define memory is HarvesterClass. No setting for now.
  • Verify that instructions is not longer than memory
  • Limit inputrows of code i HarvesterPanel by memory

Buy robot menu/panel

When clicking city, the player should get a menu which alows it to buy an Harvester Robot or Attack Robot.

Should show cost, maybe as icons? Same icons as the inventory on robots I guess?

Harvest Instruction feedback has to be fixed

I commented out your feedback logic, it was wierd so i assume it was some of the uncomplete code you checked in.

Se method HarvesterRobotController.RunNextInstruction

I think the feedback stuff should be wrapped in a method.

Can attack own city and robots

Hard to detect if an game object belong to attacking game object. Because we use HasAuthority to detect stuff like that. But this code runs on the server.

Lets rediscuss this.

Autoindent LOOPS

  • More space for Code
  • Every time a user inputs a key, we should re-indent the whole code by the logic:
    • LOOP START: indent after
    • LOOP END: Less indent from END and below.
  • Trim input from GUI. ALways.

Something like that.

Vurder å putte objekter i hierarki og navngi de, samt synke dette til klienter

[Command]
private void CmdSyncMeAllChildParentRelations()
{
    //List<ParentChildPair> pairs = new List<ParentChildPair>();

    //TODO: Make part of some loading stuff
    foreach (GameObject go in FindObjectsOfType<GameObject>()) // Må endres til bare å finne NetworkIdenty greier
    {
        if (go.transform.parent != null)
            RpcSyncChildParentRelation(go, go.transform.parent.gameObject);
            //pairs.Add(new ParentChildPair(go.transform, go.transform.parent));
    }

    //return pairs;
}

[ClientRpc]
public void RpcSyncChildParentRelation(GameObject child, GameObject parent)
{
    Debug.Log("SYNCING CHILD PAR LOL PC");
    if (child == null)
        Debug.Log("Child is null");
    else
        Debug.Log("Syncing child " + child.name);

    if (parent == null)
        Debug.Log("Parent is null");
    else
        Debug.Log("Syncing parent " + parent.name);

    if (child == null || parent == null)
        Debug.Log("Skipping");
    else
        child.transform.parent = parent.transform;
}

Robot can harvest resources

Add support for instruction HARVEST and DROP INVENTORY

Add inventory

If the tile is empty, the robot just stands there.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.