robocodo's People
robocodo's Issues
Make Possible Commands clickable
Clicking on a Command adds it to the Code input field, not to the instructions list on the robot.
Resource size reduction should scale by % volume not % size
Should robots be stackable
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.
- Lava that flows in certain times, or permanently. Destroys robot if it touches it.
- Weather effects that has a chance to damage the robot
- Swap that cost extra energy to cross
- Huge Tremor like alien that attacks at a regular pattern (https://s-media-cache-ak0.pinimg.com/236x/f2/a5/cd/f2a5cda836297b29a7d49da94ffa8e8a.jpg)
- Wall of Fire crossing the land.
- 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
- Host migration: https://docs.unity3d.com/Manual/UNetHostMigration.html
- StackingRobotsOverview probably has bad performance. Maybe look into.
- Rewrite Instruction list to an tree. Se Abstract_syntax_tree
Buying robot costs resources
Add resource system to game
Clicking the city should spawn a new robot, which costs resources:
○ 3 Iron
○ 1 Copper
Add instruction LOOP START and LOOP END
○ LOOP START [COUNT]
§ Count indicates how many times the loop will run, if not given, infinite.
○ LOOP END
Player starts with two harvester robots
Instructions - Add MOVE HOME
Clicking outside robot panel should close the panel
Sync Harvester inventory to clients
Destroying city leaves some stuff where it was
Present City Resources in GUI
Instruction - DETECT ENEMY THEN MOVE HOME
Returns true if enemy is 2 tiles adjacent.
Syncing inventory for city/robot should be done more efficieniently
Rewrite the encode / decode methods to send simpler data. that indicates how many of each item it is. Instead of just sending everything.
Fix ground to scale on client as well
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).
RobotPanel - Present all data
- Health current/max
- Damage
- Inventory Capacity
- ETCETC
Spawn robot that walks between tiles according to instructions WALK
Add support for WALK DIRECTION
Also syncs to client
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
Edge scrolling has to stop when mouse outside window
- Does not work perfectly with windowed.
- Does not work perfectly when debugging.
Make it only work right at the edge.
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.
Add grid to plane
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 nodes should have an amount per tile.
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.
Spawn player and node positions over network
Add ACTION: RANGED ATTACK for all 4 directions
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
Define game ticks/time/game speed
RobotPanel - Make code copyable
Generate a random world
- Spawn location Player 1
- Spawn location Player 2
- Some Copper nodes
- Some Iron Nodes
Remove automatic looping of Code. Include a LOOP START and LOOP END in demo
Create new Network GUI
- Se på kildekode til NetworkManager HUD.
- https://bitbucket.org/Unity-Technologies/networking/src/2bdd9961092c4a73443c09694cff5dde9e56f9f1/Runtime/NetworkManagerHUD.cs?at=5.4&fileviewer=file-view-default
- Meaning joining game takes a nickname as input.
Smart resource spawning
Should spawn x tiles close to player reserved spots
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?
Robot "running code" in panel not working on clients, only host
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.
Dont close robot panel when starting robot?
So we can watch its first steps. Agree?
Disconnected player - Remove old PlayerCity game object
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;
}
Detect Lose condition - PlayerCityObject destroyed
- Remove all player related objects
- Popup "Lost game"
- Let everyone stay in the game.
Screen edge mouse scrolling
Make it possible to edge scroll with mouse
When spawing robot from city the user should get an interface to program it
As simplistic as possible. String input in new lines.
A Right-Aligned transparent GUI that covers half the screen.
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.