This is part of the Learning Elixir and OTP through a project.
It's the Roadmap and introduction. Just some random ideas written down.
The Game premise: You are a survivor in a zombie infested world. Survive or perish
But wait, do I want to reimplement the same game as I had originally done?
Hmm, maybe.. maybe not. Back to the blackboard. Some things will need to be done differently this time..
Reread, refactor, repurpose, reuse!
There are many ways to start developing. One is to just go ahead and start programming and see where it lands.
Another way is to plan every detail. Document everything.
Create our data structures and then start programming
Or we could do a combination of both.
In the past whenever I developed a game I'd usually first write everything out. The danger of documenting everything on beforehand is that you end up wasting time thinking about everything.
The positive side is that by the time you've documented everything you usually have a great idea of how to put everything together.
This helps with the development process and saves you refactoring time later on.
For the purpose of this Work In Progress game we will actually do a combination of documentation and programming.
Our goal is to make everything into modules so that we can easily have interfaces to our API.
In the event we ever decide to use a different database or way to connect we should be sure to create an extra layer between the raw API and the usable one.
This won't always be easy.
So let's start with a raw overview. Please note that this page will get updated with time as we add more and more details of how our game works.
We will implement most of the things but changes can occur later on.
I advise you to implement the game as you would like so differing from the original is quite OK.
?You can even include game play an twists.
Commands
These are the commands that we will support:
help <thing> -> Help files about almost anything
commands -> list of commands
look ?<item , character, direction, keyword>? -> displays info about location/item/person
map -> displays map location
who -> list of players currently online with brief description or status
whois <player> - lists information about a player
say <text> - say text locally
tell <person> <something> (msg <person> <something>)
inventory - list inventory including equipped items
kill <target> - starts autofight
attack <target> - attacks target
newbie <text> - send a message to the newbie channel (where you will get help)
use <item> - Use a certain item
drop <item> - Drop an item
search - Search for items
move <location> - Move to <location> north, south, west, east
stats - user info
rest/sleep - rest to recover energy and hp
pick
keep <item> - mark an item to be kept (you won't be able to drop it untill you unkeep it)
unkeep <item> - unkeep an item (can be dropped)
drop all - Drops everything that doesn't have the keep flag
wear <item> - You can wear that certain item (armour, clothes) - Removing from inventory and putting to another list
Local commandline only
save -> save the current game state
load <filename) -> Load a game
aliases
Aliases are just that. Alternatives to the original
msg tell
east, south, north, west
look - info - examine
Events and Time
Most things in the game are time and event based.. So this means that certain effects take place in time and are not directly visible.
Movement
Movement is done in 8 directions. Either by typing the direction or typing move <direction>
Directions..
Examine - Look - View
You can examine everything in this game by using the examine ~ look ~ view commands
You can examine items, directions, people, food.. ETC!
You can detect nearby visible items. (Items hidden are not shown)
Hunger, thirst, Sleep - Food and Water
Comestible food raw
combine food recipees
attack animal -> animal corpse -> butcher -> small chunks
find suitable plants -> harvest -> raw food
seeds -> plant foot
Natural water source (river, well..) -> drink ~ collect water -> container
Be sure it's healthy -> Water purifier or boiling
thirst quench
hunger nutrition
Vitamin Deficiencies ↔ Vitamins ↔ Balanced diet
12 to 24 hours -> sleep
PENALTIES STATS
Pain and Stimulants - Medicine
pain slows down and reduces your stats
Effects not visible immediately
OVERDOSIS -> DEATH!
drugs -> addiction
Drug withdrawal.. effects
Morale and Learning
Morale level affects you in many ways.
Depressing post apocalypse world is tough to deal with.
INCREASE Reading, eating delicious food, recreational drugs
DECREASE disgusting food, boring technical book, killing firendly NPC or human
going through drug withrawal
Low morale-> sluggish and unmotivated -> no crafting
Depressed -> Penalties
Very high morale -> moving faster, stat bonuses
FOCUS -> efficiency of learning (starts at 100) -> High morale = high focus
pain = focus--
Training = focus--
Radioactivity and mutation
areas contaminated w radiation -> accumulate
prussian blue tablet
mutations -> negative & positive
Crafting
You can find items, buy them if you can afford it or create them yourself if you have the proper tools, materials and training.
Crafting "recipes" requires certain items which are used during the process.
There are 7 categories Weapons Ammo Food Chemicals Electronics Armor Others each containing subcategories.
Few require no skill. The majority require some knowledge and a skill.
Reference material (books) is also required.
Reading such references gives a chance to memorize recipes.
Or you can craft referring to the book. Have it handy when crafting.
Skills
Fabrication -> artisan skill -> gear
Cooking -> food
Tailoring -> clothing, armor
Electronics -> tools
Additionally -> traps, marksmanship, first aid
Traps
creating and placing traps
Storing traps, catching various things.
Disarmingtraps -> replacing it by it'sparts -> OR suffer consequences
Many traps hidden -> detect -> perception
Items
There are a wide variety of items available for use.
Since Items consist of everything in the game we will devote probably most of our time implementing various item systems.
Weapons
Items can be used as weapons.
3 melee variants.
Bashing -> universally effective, capped by low strength
Cutting -> guaranteed increase in damage, reduced by monster's armor
wield/unwield weapon -> carry in hands
wield/unwield armor (W).
Combat
Zombies spawn
Dynamic spawn -> you have 90 minutes to prepare before the spawn starts -> spawn based on noise you make
u(se) (magazine) to reload your ammunition from your firearm
r (order reload of weapon) -> takes some time-> firearm specific
A magazine requires identical rounds
You can store magazines in worn accessoires for quick access.
f(ire)
Fleeing is helpfull if overwhelmed:)
Unarmed Styles
Martial Arts Training trait
Other traits available
_ to select a fighting style
wield a weapon (or none) and start fighting.
Certain styles have special effects
NPC and Zombies
NPC's are Non Playing Characters
They can either be human NPC or Zombie NPC.
THey will be available in the online and offline version aswell.
Some NPC's are STATIC. This means that they remain in the place they are and can't move
These NPC's also perform certain tasks. Shop, barter, Tasks, Teaching
Professions, skills and traits
At the creation of your character you can either chose one of the professions available
Or you will be handled one.
Learning
You can learn many things alone.
However you can also be taught certain skills from someone who has mstered them.
It's up to the 2 of you to barter what a skill is worth
Scenarios and Quests
Scenarios and quests in game.
Bionics
UPGRADES TO YOUR BODY
Vehicles and Driving
Construct and use vehicles to move in outside terain.
While driving you can use the goto <location> function which othewise is unavailable
Buildings and safehouses
Buildings are just different aspects of the map.
They are mini maps on themselves.
Buildings can be converted to safehouses for people and guilds.
Barricades & Building status.
Electricity
Electricity is not plug and play in post apocalyptic world.
However you can use batteries and portable generators to generate electricity.
This electricity is used to drive motors, use electronic equipment
Guilds, Tribes and Clans
The online game will have Guilds for users to form groups of similar minded people.
You will not be able to attack people from your own Guild unless it's for training purposes.
Together with clan members you can set out to fight zombies and rebuild a small society.
Our hero user
Our hero will have certain User Stats
Health Points HP 20
Energy 100
Location X, Y
Items in inventory
Money
Energy and actions
Energy is used for every action, certain actions use more than others.
Moving, searching and doing actions req energy
With each action you do.. the world around you reacts too.. So chose actions wisely
Whenever you are low on energy.. use energizer or sleep.
Per sleep unit you gain 5energy but a turn happens around you so be careful.
Items
We need items to make the game fun.. This is a basic list of the beginning items
Items are found by searching,drops from killed zombies or you can buy them from NPC's.
"First Aid Kit" { type health value 10 price 10 }
"Energizer" { type energy value 10 price 10 }
Axe { type weapon value 3 accuracy 50 price 70 infectionChance 5 }
"Kantana" { type weapon value 4 accuracy 60 price 100 infectionChance 7}
"Bullet" { type ammunition accuracy 50 price 0.2 }
Gun { type weapon requires Bullet value 5 price 170 infectionChange 13}
"Advanced Clothes" { type defence value 3 price 70 }
"Kevlar Clothing" { type defence value 4 price 100 }
"Riot Gear" { type defence value 5 price 150 }
"Water Bottle" { type water value 5 }
Money - bartering
money has no actual value in a zombie apocalypse... food, water and items do
So bartering is a goal for the online game
For the local one we use gold coins since gold will always have a value
NPC Users and Zombies
we could have one big map with all zombies and NPC's
OR we could have separate processes to handle them
Either way we need to store a reference to our zombies and npc's
NPC shop that stay fixed
Interesting ideas Wishlist
We have some interesting ideas which we could implement, these are of course something of a wishlist.
It could take months until we will implement them.
Zombie AI that moves from place to place attacking at random
NPC AI that also moves from place to place. NPC's can be friendly, neutral or hostile.
Each type of NPC does certain things. Friendly ones try to heal you.
Neutral are more likely like today's people. They don't try to interact and mind their own business.
Hostile NPC's attack and/or steal. They go by the motto "First to strike is first to win" "No friends, no backstabbing"
We should strive to keep a 30-40-30 balance
A true simulation would have a full friendship network list between all NPC's and all USers.
A network of friendships between all NPC's would be a very complex implementation since maybe in a client-server world we
would have more than 1000 NPC's
We could implement such a friendship network between npc's and users.
Buildings
Buildings are usable and safe only if their current state is repaired and they have barricades
Otherwise they are unsafe.
Zombies and users can attack the barricades.
When the barricades are destroyed they can enter buildings and start attacking people and ransacking the the building
Building health 60
Barricades 40
Whenever the building health is between 30 and 60 you cn start barricading the building and it is usable.
If it's between 0 and 30 then the building is decaying and cannot be used.
Whenever a building hits 0 then it's destroyed. Repairing buildings below a health of 30 requires double the energy
Artificial Intelligence
The idea is to create a artificial intelligence environment for the zombies and NPC users.. Simulate a real world environment
For the commandline game we will try to add a basic AI environment. For the client sever we will try to port this one and see how it reacts.
Gameplay
Whenever we start the game in command line we are greeted and asked for a Name.
If we don't enter anything we get a random name.
A new city is generated in a 13x7 grid (91 possible locations). We are placed at a random position.
100 human NPC's are generated.
We are asked the difficulty of the simulation.
Easy - meaning there are 2 zombie which attacks people and infects them.
Medium - We start with 5 zombies
Hard - There are 20 zombies at the start
We then can move around
We can save our current game
Making Friends
Skills
Skills are an essential part of any game.
Many games have a boring way to advance and gain experience and level up in a certain skill.
Our game will have a unique and special system of acquiring skills.
Each successful action in the game provides experience. This experience is added up and the player can use it to advance in the game.
Whenever a user reaches a new level or a certain experience number (s)he then has multiple options depending on the skill:
Find or buy books which can then be read to get a specific skill
Pay a NPC to teach you a certain skill
Try to learn that skill by trial and error
By reading a book you will accumulate the theoretical aspects of the skill. You will in other words still need to invest some experience in learning.
You only pay the book price and a percentage of experience together with a specific energy level is used.
Paying a NPC to teach you gives you the practical aspects of the skill. Learning from a NPC is extremely benefical and uses a specific amount of energy and experience.
Trial and Error doesn't require you to buy a book nor pay a NPC or another player. However it requires 200% of the experience and more energy.
Each skill is broken down into 10 increments of experience and energy depending on the total energy and experience required.
To acquire the skill you need to finish all 10 increments.
This way you can start multiple skills and chose which one to finish.
Each skill will probably have multiple levels,each level builds on the the last level.
Novice (beginner)
Adept (Intermediate)
Master (Expert)
Masters will have most of the benefits, They can afterwards write books and teach other NPC/users these skills.
Proposed Skills
to be continued
Gameplay Survival Tips
Cities -> MANY resources and MANY zombies
Outside of cities-> less zombies, more interesting things to do
Death
When you die you can be revived. Reviving requires you to sacrifice certain items, experience, skills..
You will also go on a path.
Being revived brings you back as a human or as a zombie depending on what happened before you died.
if you died infected you'll end up a zombie.
While dead.. others can loot you:)
From zombie to Human
If you ended up as a zombie don't despair, you can keep on playing as a zombie.
Although you will be limited.
You can become a human again by using a Survival Syringe
Inspiration List
An inspiration List, order matters as most inspired by
Cataclysm
cataclysm is a HUGE inspiration
Thanks to the Cataclysm creators for the great work in putting together all the info in the JSOn files!
This game is dedicated to you guys! You've made my work decrease by 1000% just by arranging everything in a simple and elegant format.
http://tools.cataclysmdda.com/wiki
Burntime
Was a inspiration. Gameplay is very simple yet effective in keeping you busy.
Urban dead
Was a great inspiration in how the system works.
https://www.aardwolf.com/mud-features.html
Less or somewhat inspired by
Zombie Pandemic