From: Christian Heller Date: Sun, 6 Mar 2016 22:12:22 +0000 (+0100) Subject: Make PtIG default game, add documentation. X-Git-Tag: tce~80 X-Git-Url: https://plomlompom.com/repos/%7B%7Bdb.prefix%7D%7D/static/%7B%7B%20web_path%20%7D%7D/decks/%7B%7Btodo.comment%7D%7D?a=commitdiff_plain;h=a4e6c51b2e9aa85dc5f5e3067b602c01953a6d43;p=plomrogue Make PtIG default game, add documentation. --- diff --git a/README b/README index b0daed4..0ad300f 100644 --- a/README +++ b/README @@ -1,32 +1,14 @@ plomrogue ========= -plomlompom tries to build his own roguelike. It doesn't do much yet (although -plomlompom has insanely ambitious long-term plans). - -You can move around a player on an island and meet different enemies. You have 5 -hitpoints to lose before death. Enemies start with different amounts of -hitpoints, depending on their species. Dead enemies become dirt, skeletons, or -food to consume (each turn reduces one's "satiation", and the further away from -a healthy center it is, the smaller the chance of regaining lost hitpoints by -healing, and the stronger the chance of suffering from hunger or overfeeding -and thereby losing hitpoints). Note that different kinds of movements/actions -take different numbers of turns to finish. - -Enemies' AI is very dumb so far: Each turn, they look out for actors of -different species to flee from (if their type starts out with more hitpoints -than they have) or (if the opposite is the case) move towards for purposes of -attack. If they see no enemy, they search for and consume "magic meat". - -Every move of yours re-writes a file "save" that describes the new state of the -world, if more than 15 seconds have passed since its last writing. Once you -re-start the game, the game state is recreated from the "save" file. To -start over in a new world, simply delete this file. +plomlompom tries to build his own roguelike engine. There is one game for it so +far, which is loaded by default: "Please the Island God". See ./README_PtIG for +details on it. System requirements / installation / running the game ----------------------------------------------------- -The game is expected to run: +The engine is expected to run: - on Unix systems with a vt100-like terminal environment (xterm will do) - that contain the ncurses library - and Python3 (version >= 3.2.3). @@ -35,7 +17,7 @@ To build it, this is furthermore necessary: - gcc (version >= 4.7.2); some llvm masked as gcc was tested successfully on OSX - libc library headers (libc6-dev?) -To build and start, just run: +To build and start it with the default game, just run: $ ./roguelike @@ -46,11 +28,16 @@ script and start either or both of the two by hand if you please. Save files, replay game recording, starting over ------------------------------------------------ -By default, the game state is saved in the file ./save, and read from there on -(server) restart. Another file name to use can be given with the -l option (i.e. -start the game with "./roguelike -l alternate_savefile"). To start over in a new -world, remove ./save, or use the -l option with the name of a file that does not -exist yet. +Every move of yours re-writes a file "save" that describes the new state of the +world, if more than 15 seconds have passed since its last writing. Once you +re-start plomrogue, the game state is recreated from the "save" file. To start +over in a new world, simply delete this file and re-start the engine. + +The save file is called ./save be default, but another file name to use can be +given with the -l option (i.e. start the game with "./roguelike -l +alternate_savefile"). The -l option can also be used to start over in a new +world whose state will be read and saved with the alternate file path, without +overwriting other games saved in other save files. Once you start a new world, every game action of yours is appended to a file called "record_" plus the save file name. Run "./roguelike -s" to watch the diff --git a/README_PtIG b/README_PtIG new file mode 100644 index 0000000..4d94e20 --- /dev/null +++ b/README_PtIG @@ -0,0 +1,56 @@ += PLEASE THE ISLAND GOD = + +== plot == + +You're stranded on an island. To leave, you must please the God that rules it. This God sees the island's animals and plants as its children. So hacking and slashing through the wildlife won't do … + +To please the Island God, you may feed its children, do missions provided by the Island God's altar, spread certain plants, curb or grow certain animal populations. All while trying not to die of hunger, or get killed by animals stronger than you. + +You may have to displease the Island God occasionally – by hurting animals, or by chopping down trees (to build something else from the wood). + +== features == + +* randomly generated hexagonal island map +* turn-based +* permadeath +* [[FOV]] and map memory (for player ''and'' animals) +* optional AI control of player avatar (as for the animals, optimized for survival – fleeing, food acqusition –, not for mission solving) +* each move is recorded, game recording can be replayed +* agricultural and animal population control missions + +=== stats === +* "H:" – health / hit points +* "S:" – satiation, starts at 0, falls every turn, is boosted by eating; with chance of hitpoint loss growing with its absolute value (there is over-eating, too!), and the chance of hitpoint gain via healing the closer it is to zero +* "G:" – Island God's favor, as it grows, the Island God will grant new items/tools/abilities +* player avatar health bar +* (animals' health bars and activity symbols once the Island God grants the ability to read animals) + +=== terrain types === +* "~": sea +* ".": earth +* ":": soil (plants spread here, but only if no other plants have already) +* "X": tree (can be chopped down) +* "|": wall (can be built from wood, and be chopped down again) +* "_": altar (talk to the Island God here) + +=== animal types === +* ",": bug (slow, few hitpoints, low food need, barely nutritious) +* "d": dog (faster, more hitpoints, greater food need, quite nutritious) +* "B": bear (very strong/fast, great food need, extremely nutritious) +* "@": you, the human + +=== plant types === +* "#": unkraut (spreads fast, barely nutritious, useful only for bugs) +* "*": god flower (spreads slow, not nutritious) +* ")": god berry (spreads faster, quite nutritious) + +=== tools === +* "/": axe (chop trees to wood) +* "-": knife (weaker axe) +* "]": carpentry tool (turn wood to wall) +* "[": fertilizer (turn earth to soil) +* "0": surprise! + +== context == + +This game was made for the [[7DRL_Challenge_2015]], based on the [https://github.com/plomlompom/plomrogue|''PlomRogue''] engine. diff --git a/confserver/test b/confserver/test new file mode 100644 index 0000000..325899d --- /dev/null +++ b/confserver/test @@ -0,0 +1,82 @@ +MAP_LENGTH 64 +PLAYER_TYPE 0 + +TA_ID 1 +TA_EFFORT 1 +TA_NAME wait + +TA_ID 2 +TA_EFFORT 5 +TA_NAME move + +TA_ID 3 +TA_EFFORT 15 +TA_NAME pickup + +TA_ID 4 +TA_EFFORT 5 +TA_NAME drop + +TA_ID 5 +TA_EFFORT 45 +TA_NAME use + +TT_ID 0 +TT_START_NUMBER 1 +TT_LIFEPOINTS 30 +TT_SYMBOL @ +TT_NAME HUMAN + +TT_ID 1 +TT_START_NUMBER 27 +TT_LIFEPOINTS 6 +TT_SYMBOL a +TT_NAME ANT + +TT_ID 2 +TT_START_NUMBER 9 +TT_LIFEPOINTS 18 +TT_SYMBOL z +TT_NAME ZOMBIE + +TT_ID 3 +TT_START_NUMBER 3 +TT_LIFEPOINTS 54 +TT_SYMBOL S +TT_NAME SHOGGOTH + +TT_ID 4 +TT_START_NUMBER 9 +TT_LIFEPOINTS 0 +TT_SYMBOL '#' +TT_NAME DIRT + +TT_ID 5 +TT_START_NUMBER 9 +TT_LIFEPOINTS 0 +TT_SYMBOL % +TT_NAME SKELETON + +TT_ID 6 +TT_START_NUMBER 1 +TT_LIFEPOINTS 0 +TT_SYMBOL m +TT_NAME 'MAGIC MEAT' +TT_TOOLPOWER 512 +TT_TOOL food +TT_PROLIFERATE 255 + +TT_ID 0 +TT_CORPSE_ID 5 +TT_ID 1 +TT_CORPSE_ID 4 +TT_ID 2 +TT_CORPSE_ID 5 +TT_ID 3 +TT_CORPSE_ID 6 +TT_ID 4 +TT_CORPSE_ID 4 +TT_ID 5 +TT_CORPSE_ID 4 +TT_ID 6 +TT_CORPSE_ID 4 diff --git a/confserver/world b/confserver/world deleted file mode 100644 index 325899d..0000000 --- a/confserver/world +++ /dev/null @@ -1,82 +0,0 @@ -MAP_LENGTH 64 -PLAYER_TYPE 0 - -TA_ID 1 -TA_EFFORT 1 -TA_NAME wait - -TA_ID 2 -TA_EFFORT 5 -TA_NAME move - -TA_ID 3 -TA_EFFORT 15 -TA_NAME pickup - -TA_ID 4 -TA_EFFORT 5 -TA_NAME drop - -TA_ID 5 -TA_EFFORT 45 -TA_NAME use - -TT_ID 0 -TT_START_NUMBER 1 -TT_LIFEPOINTS 30 -TT_SYMBOL @ -TT_NAME HUMAN - -TT_ID 1 -TT_START_NUMBER 27 -TT_LIFEPOINTS 6 -TT_SYMBOL a -TT_NAME ANT - -TT_ID 2 -TT_START_NUMBER 9 -TT_LIFEPOINTS 18 -TT_SYMBOL z -TT_NAME ZOMBIE - -TT_ID 3 -TT_START_NUMBER 3 -TT_LIFEPOINTS 54 -TT_SYMBOL S -TT_NAME SHOGGOTH - -TT_ID 4 -TT_START_NUMBER 9 -TT_LIFEPOINTS 0 -TT_SYMBOL '#' -TT_NAME DIRT - -TT_ID 5 -TT_START_NUMBER 9 -TT_LIFEPOINTS 0 -TT_SYMBOL % -TT_NAME SKELETON - -TT_ID 6 -TT_START_NUMBER 1 -TT_LIFEPOINTS 0 -TT_SYMBOL m -TT_NAME 'MAGIC MEAT' -TT_TOOLPOWER 512 -TT_TOOL food -TT_PROLIFERATE 255 - -TT_ID 0 -TT_CORPSE_ID 5 -TT_ID 1 -TT_CORPSE_ID 4 -TT_ID 2 -TT_CORPSE_ID 5 -TT_ID 3 -TT_CORPSE_ID 6 -TT_ID 4 -TT_CORPSE_ID 4 -TT_ID 5 -TT_CORPSE_ID 4 -TT_ID 6 -TT_CORPSE_ID 4 diff --git a/server/utils.py b/server/utils.py index 43ca9f2..c8f1c38 100644 --- a/server/utils.py +++ b/server/utils.py @@ -102,7 +102,8 @@ def parse_command_line_arguments(): action='store') parser.add_argument('-l', nargs="?", const="save", dest='savefile', action="store") - parser.add_argument('-w', type=str, default="confserver/world", + parser.add_argument('-w', type=str, + default="confserver/PleaseTheIslandGod", dest='worldconf', action='store') parser.add_argument('-v', dest='verbose', action='store_true') opts, unknown = parser.parse_known_args()