2017-10-23 14:55:16 +00:00
|
|
|
# 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
|
|
|
|
2017-10-23 14:55:16 +00:00
|
|
|
This is a multiplayer ascii farming/fighting game.
|
2017-10-15 21:40:39 +00:00
|
|
|
|
2017-10-23 14:55:16 +00:00
|
|
|
![screenshot](screenshot.png)
|
2017-10-27 10:24:55 +00:00
|
|
|
<!-- why doesn't the screenshot get updated? -->
|
2017-10-16 18:17:58 +00:00
|
|
|
|
2017-10-20 14:30:57 +00:00
|
|
|
## Working Features
|
2017-10-19 20:14:28 +00:00
|
|
|
|
|
|
|
- Multiplayer
|
|
|
|
- Walking around
|
|
|
|
- Switching between rooms
|
|
|
|
- Persistent inventory
|
2017-10-20 14:30:57 +00:00
|
|
|
- Fighting
|
|
|
|
- NPC's
|
2017-10-22 17:04:20 +00:00
|
|
|
- Farming
|
2017-10-22 20:37:45 +00:00
|
|
|
- Building
|
2017-12-29 10:30:07 +00:00
|
|
|
- Chat
|
|
|
|
- World persistence
|
2017-10-19 20:14:28 +00:00
|
|
|
|
2017-10-22 12:22:45 +00:00
|
|
|
## 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)
|
2017-10-22 12:22:45 +00:00
|
|
|
|
2017-11-09 12:38:12 +00:00
|
|
|
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-22 12:22:45 +00:00
|
|
|
|
2017-10-26 17:24:05 +00:00
|
|
|
Not on pypi yet, but you should be able to install it like this:
|
2017-10-22 12:22:45 +00:00
|
|
|
|
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-10-22 12:22:45 +00:00
|
|
|
|
2017-12-29 10:30:07 +00:00
|
|
|
### Playing instructions
|
|
|
|
|
|
|
|
Controls can be configured.
|
|
|
|
These are the default controls:
|
2017-10-22 12:22:45 +00:00
|
|
|
|
|
|
|
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.
|
2017-10-22 12:22:45 +00:00
|
|
|
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.
|
2017-10-22 14:28:45 +00:00
|
|
|
Use 'F' to attack an enemy in the same square as you.
|
2017-10-22 12:22:45 +00:00
|
|
|
Use WASD to attack enemies in adjacent squares.
|
2017-12-29 10:30:07 +00:00
|
|
|
Use 't' to open the chat input
|
2017-10-22 12:22:45 +00:00
|
|
|
|
2017-12-29 10:30:07 +00:00
|
|
|
### Advanced installation instructions
|
2017-10-19 20:14:28 +00:00
|
|
|
|
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
|
2017-10-22 12:22:45 +00:00
|
|
|
* group dungeons would be great too
|
2017-10-18 15:33:20 +00:00
|
|
|
|
|
|
|
## TODO first
|
2017-10-16 18:17:58 +00:00
|
|
|
|
2017-10-20 19:50:09 +00:00
|
|
|
- better code documentation
|
2017-10-23 11:36:26 +00:00
|
|
|
- testing
|
2017-11-07 18:07:34 +00:00
|
|
|
- remove code duplication in display
|
2017-11-06 22:27:13 +00:00
|
|
|
- display equipment
|
2017-12-28 20:22:27 +00:00
|
|
|
- transparent background on sprites
|
|
|
|
- labels
|
2017-10-22 20:37:45 +00:00
|
|
|
- make farming more work
|
2017-10-25 13:50:24 +00:00
|
|
|
- autofight/autoretaliate?
|
2017-10-23 11:36:26 +00:00
|
|
|
- display target enemy health
|
2017-10-20 22:32:41 +00:00
|
|
|
- better reaction on player death
|
2017-10-27 18:38:35 +00:00
|
|
|
- better inventory selection
|
2017-10-25 13:50:24 +00:00
|
|
|
- runtime-created rooms
|
2017-11-05 22:12:03 +00:00
|
|
|
- tutorial room
|
2017-10-22 20:37:45 +00:00
|
|
|
- support websockets
|
2017-10-23 11:36:26 +00:00
|
|
|
- windows comptibility (libtcod/tdl instead of ncurses?)
|
2017-10-29 22:00:47 +00:00
|
|
|
- write converter to convert tiled map files to readable files
|
|
|
|
|
|
|
|
## Other Ideas
|
|
|
|
|
|
|
|
- multicharacter sprites
|
|
|
|
- plants growing as cellular automata
|
2017-10-19 20:14:28 +00:00
|
|
|
|
|
|
|
## DONE
|
|
|
|
|
2017-12-28 21:56:31 +00:00
|
|
|
- in-game chat
|
2017-12-28 20:22:27 +00:00
|
|
|
- relative position room transitions
|
2017-12-27 14:10:42 +00:00
|
|
|
- custom world persistence (json)
|
2017-11-07 18:07:34 +00:00
|
|
|
- defense/armour
|
2017-11-06 22:27:13 +00:00
|
|
|
- nondeterminism in combat, grow times and spawn times
|
2017-11-05 22:12:03 +00:00
|
|
|
- equipment
|
2017-11-02 19:23:18 +00:00
|
|
|
- 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
|
2017-10-29 15:50:09 +00:00
|
|
|
- make idle NPC's stay around spawn
|
|
|
|
- messages in the client
|
2017-10-27 20:51:42 +00:00
|
|
|
- sort objects on ground on height
|
2017-10-27 18:38:35 +00:00
|
|
|
- follow player when room larger than terminal
|
2017-10-27 14:43:15 +00:00
|
|
|
- multiple actions per keypress
|
2017-10-27 10:15:49 +00:00
|
|
|
- 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
|
2017-10-22 20:37:45 +00:00
|
|
|
- more content (rooms, objects etc)
|
|
|
|
- multiple socket types (regular unix, abstract unix, inet), selectable as command line arguments
|
|
|
|
- configurable graphics
|
2017-10-22 17:58:22 +00:00
|
|
|
- configurable keybindings
|
2017-10-22 14:28:45 +00:00
|
|
|
- make items usable
|
|
|
|
- farming
|
2017-10-21 22:20:51 +00:00
|
|
|
- loot
|
2017-10-21 18:45:44 +00:00
|
|
|
- more efficient target detection for monsters
|
2017-10-21 16:24:39 +00:00
|
|
|
- more efficient drawing/communication by only updating changed squares
|
2017-10-21 11:47:02 +00:00
|
|
|
- growing plants
|
2017-10-20 22:32:41 +00:00
|
|
|
- monster/object spawners
|
2017-10-20 21:23:49 +00:00
|
|
|
- healing
|
2017-10-20 19:50:09 +00:00
|
|
|
- make health persistent
|
2017-10-20 14:30:57 +00:00
|
|
|
- make server robust to invalid messages
|
2017-10-20 11:42:26 +00:00
|
|
|
- attack cooldown
|
|
|
|
- add enemies
|
2017-10-19 21:41:31 +00:00
|
|
|
- factions
|
2017-10-19 20:14:28 +00:00
|
|
|
- add combat
|
|
|
|
- improve inventory: probably store it in Player instead of Playerent
|
|
|
|
- better interaction system
|
|
|
|
- more code reusability in gameobjects
|
|
|
|
- avoid long files
|