Elixir Game - 0x00 Introduction, Roadmap and Plan

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.

"Pain Killers" { type health value 10 price 5 }
"First Aid Kit" { type health value 10 price 10 }
"Energizer" { type energy value 10 price 10 }
"Baseball Bat" { type weapon value 2 accuracy 50 price 30 infectionChance 4 }
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}
"Basic Clothes" { type defence value 2 price 30 }
"Advanced Clothes" { type defence value 3 price 70 }
"Kevlar Clothing" { type defence value 4 price 100 }
"Riot Gear" { type defence value 5 price 150 }
"Canned Food" { type food value 5 }
"Water Bottle" { type water value 5 }
"Survival Syringe" { price 50 }

 

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

You might enjoy these similar articles:

Be the first to comment!

The comments section is closed.

Subscribe to my awesome newsletter!








What to expect: Ultimate Knowledge regarding Business Efficiency, Personalized Marketing Experience, Software Development and Cyber Security tips and tricks. 1-3 mails per month. Unsubscribe any time. See the privacy policy to learn how we take care of your information.