Asciifarm/README.md

144 lines
4.0 KiB
Markdown
Raw Normal View History

# AsciiFarm
2017-10-15 21:40:39 +00:00
2017-10-23 14:57:08 +00:00
Formerly: **Rooms**
2017-10-15 21:40:39 +00:00
This is a multiplayer ascii farming/fighting game.
2017-10-15 21:40:39 +00:00
![screenshot](screenshot.png)
<!-- why doesn't the screenshot get updated? -->
## Working Features
- Multiplayer
- Walking around
- Switching between rooms
- Persistent inventory
- Fighting
- NPC's
- Farming
- Building
2017-12-29 10:30:07 +00:00
- Chat
- World persistence
## Installation/starting instructions
Requires python3, tested to work on at least python 3.5.2 in linux
2017-10-23 14:24:42 +00:00
Because of the use of NCURSES, it probably won't work on windows (will be fixed later)
It works on a mac, but when testing abstract domain sockets didn't work.
Use the command line argument `-s inet` for both client and server to run this on a mac.
2017-10-26 17:24:05 +00:00
Not on pypi yet, but you should be able to install it like this:
2017-10-26 17:24:05 +00:00
python -m pip install git+https://github.com/jmdejong/Asciifarm.git
Then you can run `hostfarm` to start the server and `asciifarm` to play the
game!
2017-12-29 10:30:07 +00:00
### Playing instructions
Controls can be configured.
These are the default controls:
Use the arrow keys or wasd to move around.
2017-10-23 12:54:38 +00:00
Use 'e' to add an item from the ground into your inventory.
Use 'q' to drop the top item in your inventory.
2017-10-23 12:54:38 +00:00
Use 'E' to use/interact with the top item in your inventory.
2017-12-29 10:30:07 +00:00
Use 'r' interact with something in the same square as you.
Use 'f' to attack an enemy nearby.
Use 'F' to attack an enemy in the same square as you.
Use WASD to attack enemies in adjacent squares.
2017-12-29 10:30:07 +00:00
Use 't' to open the chat input
2017-12-29 10:30:07 +00:00
### Advanced installation instructions
2017-12-29 10:30:07 +00:00
See [install.md](docs/install.md).
2017-10-26 17:24:05 +00:00
2017-10-18 15:33:20 +00:00
## Vision/ideas
The idea is to make 3 different kind of areas:
- private areas, where players can build their own house/farm
* these areas will be the only one where players can build
* other players can only enter with permission of the owner
* maybe some group areas too? (that can be bought with in-game currency)
- public areas, where players can interact with each other and npcs
* towns, where players can trade
* static dungeons, where monsters spawn
* whatever levels someone feels like making
* similar to the world of most mmorpgs
- procedurally generated dungeons, where players can explore and fight for loot
* like roguelikes
* if the player dies they can not return to the same dungeon
* group dungeons would be great too
2017-10-18 15:33:20 +00:00
## TODO first
- better code documentation
- testing
- remove code duplication in display
- display equipment
- transparent background on sprites
- labels
- make farming more work
- autofight/autoretaliate?
- display target enemy health
2017-10-20 22:32:41 +00:00
- better reaction on player death
- better inventory selection
- runtime-created rooms
- tutorial room
- support websockets
- windows comptibility (libtcod/tdl instead of ncurses?)
- write converter to convert tiled map files to readable files
## Other Ideas
- multicharacter sprites
- plants growing as cellular automata
## DONE
- in-game chat
- relative position room transitions
- custom world persistence (json)
- defense/armour
- nondeterminism in combat, grow times and spawn times
- equipment
- world persistence
2017-11-01 11:41:38 +00:00
- log messages in client to file
2017-10-30 20:59:02 +00:00
- room unloading when there are no players
2017-10-30 15:10:42 +00:00
- merge package brach
2017-10-29 22:13:43 +00:00
- only plant seeds in soil
- make idle NPC's stay around spawn
- messages in the client
- sort objects on ground on height
- follow player when room larger than terminal
- multiple actions per keypress
- healthbar
- colours
2017-10-24 14:33:17 +00:00
- fullwidth characters as sprites
2017-10-24 14:12:33 +00:00
- load world from files
- more content (rooms, objects etc)
- multiple socket types (regular unix, abstract unix, inet), selectable as command line arguments
- configurable graphics
- configurable keybindings
- make items usable
- farming
- loot
- more efficient target detection for monsters
- more efficient drawing/communication by only updating changed squares
- growing plants
2017-10-20 22:32:41 +00:00
- monster/object spawners
- healing
- make health persistent
- make server robust to invalid messages
- attack cooldown
- add enemies
2017-10-19 21:41:31 +00:00
- factions
- add combat
- improve inventory: probably store it in Player instead of Playerent
- better interaction system
- more code reusability in gameobjects
- avoid long files