robotopia-x / todo Goto Github PK
View Code? Open in Web Editor NEW:warning: DEPRECATED - projects will be now tracked on organization level
Home Page: https://github.com/orgs/robotopia-x/projects/2
License: The Unlicense
:warning: DEPRECATED - projects will be now tracked on organization level
Home Page: https://github.com/orgs/robotopia-x/projects/2
License: The Unlicense
We should follow the best practices behind: https://github.com/trainyard/choo-cli
I want to deal with this right now because when starting to implement #33 I realized that a lot of the "RobotRuntime" code is running outside of choo. This means that when ever we want to change the behaviour of how units are crated we have to change the runtime. These two things should not be coupled. Instead we should follow the choo pattern more strictly and push non-choo code towards the edges of our application.
5 Points
Currently the rotate command cost 1 turn. This makes this command far less attractive then using move(up/down/left/right). There are still use cases for rotate though. For example walking in a square requires far less code:
repeat 4:
move('FORWARD')
move('FORWARD')
move('FORWARD')
rotate('LEFT')
My suggestion is that the rotate command should be free and cost no turn.
2 story points
4 story points
10 story points
4 story points
As first quick draft to get into all this.
2 points
2 points
Questions to answer:
Blockly uses the module system of the google closure compiler. There are existing bundles but they are either outdated or don't work. Including the javscript files directly with script tags is not an option (at least not with budo). There exists a loader for webpack which has support for closure modules: https://www.npmjs.com/package/webpack-closure-compiler. My proposed solution is to create our own blockly repo which bundles everything toghether with webpack.
I want to be able to see the code blocks of the selected robot and which block is currently executed
7 Points
3 story points
Add spawn action
#12 has to be implemented first
I just looked at the feautures which seemed usefull for my problem. Here is my basic understanding of how esper.js works:
An simple robot program could look like this:
robot.onMarker = function (marker) {
// do something with marker
}
while (true) {
robot.move('FORWARD')
robot.move('FORWARD')
robot.move('FORWARD')
robot.move('FORWARD')
robot.rotate('LEFT')
}
If this program is executed an esper engine is created which runs the code. When an event is triggered a fork of the engine is created which has just the call to the event handler as a code.
The robot runtime switches then to the forked engine and executes it until it terminates. Then the robot runtime returns to the main engine.
const subEngine = engine.fork()
subEngine.load('robot.onMarker({x: 0, y: 6})')
...
I've changed the api a little bit so its more friendly if you write it by hand.
Main routine and event routine are stored separately with each of them running in their own esper.js interpreter. If an event is triggered the robot runtime switches to esper runtime of the event and executes it until it terminates. Then it switches back to the main runtime
Disadvantages:
no shared global state
no nice way to support writing JavaScript directly instead of using blockly
[ ] extend create bot function. Bot program consists of one main routine and multiple optional event routines
- [ ] store currently executed routine and triggered events in interpreter for each bot.
[ ] when executing next step of bot program, check before if event has happened. If an event has been triggered for the bot the interpreter should switch to the event routine.
[ ] if the end of a subroutine is reached continue executing the main routine
Open for discussion:
4.0.0
The routing patchThis patch changes the way we handle routes. It introduces query string
support (!), and changes the router to use a lisp-like syntax. It also inverts
the argument order of effects and reducers to be more intuitive. We also
managed to sneak in some performance upgrades ✨ - We hope you enjoy
it!
state
and data
argument order |choo/http
. Use xhrrouter
to use memoization |sheet-router
|location
state to expose search
parameters (query strings) |state
and data
argument order7 Points
4 story points
Currently we will limit the attack to static entities (towers)
Game Engine
Gameplay
2 Points
5 Points
Check the research repo for detailed a more detailed description
#31 - Tutorial mechanics - has to be implemented first
Striked ones will be implemented at a later point
- [ ] add main routine start block might be added later
#14 has to be implemented first
4 Points
2 Points
Rotation commands are currently from the perspective of the player. Which makes it hard to reason about the code is rotated to the left or the right. The directions should be switched around
3 story points
shooter attacks one entity with the least health per round which is in its range
Implement update action
11 Points
7 Points
<script>
tags from index.js and move them into an index.html1 story point
At the beginning of a game the bots need to explore the map, searching for resources. Player need randomness in order to build this behaviour into their robots
Robots should be animated. Instead of abruptly jumping from one field to another they should smoothly move between fields. This helps understand what the bots are actually doing, especially if there are multiple bots on the board.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.