We will use the background story from The Flow.
The world will be generated randomily but just once.
Generators are written in modules. Each module is a file inside the src/gen directory.
Modules are written in such a way that they can be both called directly or by other modules, check src/gen/cryo_chamber.js and src/gen/cryo_storage.js to understand how this works.
The flow-gen command line utility can be used to call these files into a map, example:
] flow-gen new map.json from map.json
% clear
% cryo_storage
% save
writing...
written to map.json
- clear: clears all objects in the map except characters;
- save: saves the map;
- log: prints the map to the console;
- exit: well... it surprisingly exits!
- anything else: calls the file with the same name found in
gen/filename.js. Example:cryo_storagewill load and run the filegen/cryo_storage.jsby creating an object of its type.
Generating it with one more dimension (time) and moving along it, or applying cellular automatas to it in real time (both are essentialy the same)
Each user will start at a different location, but all of them inside a cryo-chamber.
Some interesting scenarios I have in mind:
- crashed ship
- broken ship floating in space near a space station, so the user would have to find a way to make it to the space station. This would also need the implementation of multiple z-levels to simulate space.
- space station
- underground bunker
- crashed cryo-chamber
- basement
- tower
- cryo-chamber storage (with multiple cryo-chambers near it)
Permadeath?
Multiple planets with just in time generation when a user arrives (or teleports) to it
node.js server and client.
A square centered on the player is the player's view. The size of this square can change in-game, but maybe 7x7 or 5x5 is good.
Every message sent from the player to the server is an action. To every action, the server replies to all the players within the view of the player who initiated the action with a world state.
The world state is an array of all (modified?) objects within the view of a player.
There is one special action, called view (used when the player connects), which just informs the server who is the player and the it replies with the world state of the player.
All the messages are JSON-based.
Custom file format.
Implement tile support, even if the node.js version can only work on a terminal.
The plan is to expland it to a fully featured browser/desktop version in the future.
We will work using github:
https://github.com/felipetavares/flow
to contribut use PRs.
Will be represented using github issues.
Check out interface.md.
The go command when called without arguments, makes the character move
to the last direction he/she moved.
When used with one argument (if there is more than one argument, the remaining is ignored) go moves the character to the direction indicated by the argument.
This direction can be:
nswenenwsesw
The keypad numbers/h, j, k, and l can be used to move around.
Meele and gun combat. Also, lots of explosives.
Maybe hacking?
for motivating me to start this project!