Giter Club home page Giter Club logo

java-text-based-space-station-manger-sim's Introduction

java-text-based-space-station-manger-sim

the game so far: you play as a manager/owner of a space station, trading goods and maintaining a space station(also paying taxes and buying insurance yay!).

the games exe is in the release folder.

About the project

the "big idea" or "what is it for":

to put it simple, I created this project so beginner programmers can practice working in a team, and practice their programming skills.

*why a game? game programming is complex and challenging(also not easy), it requires both finess and creativity, one day you're doing AI on another your doing database design, GUI, graphics, etc, etc. you can get the most "fabulous"/terrible errors and bugs. in short its good "real world" practice.

*why text-based? in short, faster development, no graphics, not much of a GUI. just adding features. nothing too complex to learn for beginners. the base source for this game was coded by me in less than a few days (including the base framework/tools etc, I worked on it on and off in my free time). i made it to be easy to pick up and start working on it.

*who shod join? mainly beginner programmers that want to practice programming and learn how to work in a team. we will also need writers for story/ingame descriptions text. game designers may also join and test their metal. while I do all the marketing, I wouldn't mind help, if you want to learn proper indie game marketing I can show you stuff most people don't do (which leads their game to flop).

*what shod you know? basic programming, the big idea is making this simple and easy to work with/get into. if you want todo writing/, marketing you can just join ill show you the rest.

*does it have documentation: yes its wip.

*How to join? hers a contact form:

https://ytutor.wordpress.com/console-based-space-station-game/

when you contact me, write about your relevant experience and goal and the most complex thing you did in programming (in a short format please. but more than one line please....),also send me a link to your github profile(if you have one its ok if you dont),and have a look at the projects wiki ,the devlopers part.

don't hesitate to contact us, I made this project to help people.

java-text-based-space-station-manger-sim's People

Contributors

cshirley14 avatar rc14193 avatar s-i-d-i avatar yoel123 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

java-text-based-space-station-manger-sim's Issues

the story so far (requires a lot of help with this)

we can do without a story, but a story makes it even better.

so you run a space station, i haven't come up with a background story for that.

but I do have a rough idea of the world/universe ill try to summarize the whole thing:

man kind took to the stars, haven't met any other intelligent life forms yet.

FTL hyperspace technology invented for moving through star systems and gates for traveling between the milky way galaxy Clusters.

the game takes place at a fringe cluster of the galaxy that got cut off the gates system for hundreds of years and reverted to a technological dark ages state where not many people really know how to use technology (the same thing that happened at the start of the middle ages where roman architecture was forgotten among other things).

while some FTL capability remains (hyperspace for traveling between systems) all the ships and most tech is based on pre dark ages scematics that are kept in the hands of major factions and the powerful thus maintaining a tech monopoly at the hands of few people.

our hero the space station manager with the support of a major faction have built a space station in an empty neutral system that lies between major factions star systems, as a trading post and safe Starlene.

while its a very profitable operation, it might also attract pirates and others to disrupt trade and threaten the safety and lives of everyone involved.

In the beginning, a small fleet of ships will patrol and protect the system, but as its not a very important tactical/strategic location the fleet will be pulled back the moment their faction needs them, leaving the station and traders to fend for themselves.

while even a small space station is a fortress of guns, armor, and shields able to take on the biggest warship, it cant protect the trade routes and can be overrun by a persistent assault.

the tech weapons and defense (of the game universe) is diverse, kinetic and explosives are used alongside energy weapons and energy shields. thats because the energy weapons are not advanced/effective enough to replace kinetic old school weapons (not yet at least).

robotics is a bit sub-par and expensive .medical science is quit advances and too expensive for most people. automation and product fabricators are quite common (they are easy to use but almost no one remembers how to create them) turning raw materials into usable items (requires a factory to utilize).

habitable earth-like planets are rare with only two found on this sector (there might be more as the cluster is mostly unexplored and wasn't explored well before the "dark ages").

as you can tell I need help writing this as im not a writer im a programmer, so if you're a writer and are interested in this project contact me.

being the writer for this game can be very beneficial, as its free marketing for you, as this project grows so does its exposure (as its also free and doesn't have a paywall it can reach even further) if you have a better way to get exposure as a writer you might want to invest in that, this project is a great opportunity for obscure sci-fi writers. plus I will invest in marketing it so it's free paid marketing and will take your name further then you could alone.

contact me if that interests you.

.

save/load file by name

it's nice to have a save function, it's even better to be able to save multiple games and load them from a list

Star system creation

 Since there's going to be warping, there need to be different star systems right? This means having random generation for both the number of stars and the number of planets around a star.

 For this it would make sense to also generate attributes for both the stars and the planets around this. I would propose the creation of a star class that first generates its own attributes, e.g. type of star, size of star, any hazards it has. This class would then call the planet class to generate the planets around it. The planets would have their own attributes, size, gas or rock, hazards, other faction present.

 How to organize navigation would likely be its own issue to address in another topic.

marketing "competitor" analysis

while this is not a commercial product it will not promote itself.

so one of the best way to figure out where and how to market is to see what works and how.

so I checked another very successful text game that is similar to this one. how successful? it sold 20k copies in the last two years and raised the games price.

so where did he get most of his traffic? 95% of it is from YouTubers reviewing his game.

the rest was directories like moddb,roguebasin and a medium blog, he also has a Twitter with a few thousand followers and a subreddit for the game with 2k people and daily interactions.

in an interview (also on youtube) he said he contacted a 1000 YouTubers to review his game.

his seo is not very good as you find other stuff when you search for his game and a lot of results are unrelated.

thata a name problem.

but in short, youtube is a great traffic source even for a text-based game.

but that's for a later time as i want to develop this project's platform so it's easy to get into and well developed.

economy system

for now, its random, item prices and amounts go up and down without reason, while it is roughly based on supply and demand, its still just random.

I don't want to simulate something realistic and not fun, I want a challenging system.

maybe a trade relations system, like if you have a trading agreement with the cheapest fuel manufacturer in the sector you will get cheap fuel prices more often.

or the prices will drastically go up if there's a pirate raid or another event.

if the station is close to an ore-rich system with mining operations naturally ore will be cheaper most of the time.

there shod also be a market prediction system (like which item will go up or down in price next turn) so the player can pay to predict this and plan which goods to buy cheap and sell high.

maybe upgrades that affect the amount of goods coming in like market size, like too meany ships wont come to trade if thers no room for their goods (their not gonna wait outside for their turn usually).

its as easy as checking if(upgrades.contain("big market")) then goods amount+=2

stability of the station shod also affect goods arriving, no one wants to bring his trade to a den of thieves just to have his cargo stolen at gunpoint after he docked (thats for bigger stations and depended on the number of guards and the constable character and other stuff).

maybe let the player have a small trade fleet to send on missions. this shod also affect prices.

explaining the code for new people

I can do it, but I want other people's pov, maybe someone else is better at explaining stuff than me.

in short, I want you to write a wiki page that explains my code.

it can be based on what I wrote in your words, the point is to have another resource for people to go to, if they don't understand my style of coding maybe they will understand yours.

do not underestimate this, someone that can write world-class documentation is a great resource.

you can write in whatever format you want as long as the info is accurate.

if you want to make a video that's even better.

advanced life support auxiliary upgrade

without life support, the station will run out of air and become too cold to live in.

while the usual auxiliary/emergency system is nice, it might not work once the station gets dameged.

the "advanced life support auxiliary" upgrade is a more compact system, better shielded, and less prone to failure.

this will give you more time, more then you need, to repair the main one.

this upgrade shod be implemented after the station damage feature is implemented.

event modal

item has a modal to handle his data easier, events shod have one too once they are added to the player's events.

this would make it easier getting a single event data like


e.name
e.type
//e.etc_etc

cargo limit

every item takes space, and space in the station's cargo hold is limited, it might be more the most ships can carry, but still thers need to be a limit.

doing player.cargo_limit=50 is easy.

calculating the total items amount also shod be easy.

also, there can be an upgrade for that "huge cargo hold" for an even bigger cargo hold.

an actual database

as of now, we don't have an actual standard database, while I use it as a relational database.

if I want to use this project to teach people it shod use an actual database or a couple (a couple of databases will teach more stuff but can turn into a nightmare scenario).

if I had to chose I would use SQLite, its only one jar and enables the use of SQL.

but that's not for now. maybe I won't add this complexity at all. for the sake of keeping everything simple.

ASCII art

what do you think? shod there be art is some part of the game?

it will be harder to market the game without art.

currently, i can put ASCII art anywhere ingame.

the downside it's not easy to create or not cheap.

maybe it will add some flavor.

characters employees

some employees are more important the other nameless expandable ones and contribute or hinder to the station's operation.

like the ship's doctor, accountant, constable, chief engineer etc etc.

some will have traits that add bonuses/ minuses to different stats (doesn't change stats permanently, just modifiers).

traits might also affect events.

their salary is higher than regular workers.

some will enable more game options like the accountant will enable the option to pay taxes automatically.

they also shod have an experience system as they get better at their work.

they will have their ow screen accessible from the station management screen.

the player can hire, fire, view stats, of characters.

the stations bar

every station needs one.

it can generate revenue and generate events, you would be surprised what secrets people tell when their drunk, or maybe they go to the bar to drown their troubles, say a merchant ship captain that got stuck with some goods he cant sell on the market.

stuff like that.

the easiest thing todo would be to put it under upgrades.

after buying this upgrade a new menu item will be added to the game_main menu "visit bar".

an event to test damage system properly

of course, I have tested the damage system, but I want to add a feature that uses it.

the easiest way is to create an immediate event that adds random damage to the station, of course, if the player hs insurance they will cover it, and the insurance rate will go up as result (because the player is at high risk for the insurance company).

shod be easy to implement if you know how to use damages and event system.

counter hashmap in player/long term event system

so many counters to create an attribute for each.
a hashmap can make this more dynamic, like:

player.counters.get("bla counter")

and to compare it aginst the max value call:

player.counters.get("bla counter max")

lets say we check if bla counter >bla counter max then bla will happen and bla counter=0 again.

maybe even put it in db package.

those counters are the easiest way to handle long term events.

maybe even make a method that checks if one hashmap is bigger then the other something like:

is_done("bla counter","bla counter max")

or even:

is_done(name)
{
    return player.counters.get(name+" counter") > player.counters.get(name+" counter max")
}

this shod make chacking all those event counters easier to handle in big numbers.

maybe even make an ArrayList that holds long term events name and each pass turn loops them and for each event runs:

is_done()

and if is_done returns true then another method will run to do the long term event action like:

do_long_term_e(name)

like events but for long term (events that activate after a few turns)

and maybe there will be ways to stop these counters like if you pay a loan it will delete the loan bad event counter fro the ArrayList.

in-game "employee and salary" feature

that's another "management"/money sink feature.

part of running a business is paying employees, and you need quite a few of these to run a space station:
*guards
*general workers
*engineers to maintain everything

at first, you won't need much of these maybe 10 would be enough(but as you buy upgrades and expand the number will have to grow to maintain a bigger station).

for these general workers, i would probably use an indexable map or just a hashmap.

so each turn (a turn is one week) the salary owed will be calculated:

salery_owed += employees.get("gurds")*2000
salery_owed += employees.get("genral workers")*1000
etc

there will also be a counter for the time passed from the last time you paid salary, 4-5 turns is ok as they get paid once a month, after that you get a fine from the worker union.

there might be ways to reset the counter, like sending the crew to a party plant for a few days or other events that might get them to forget you owe them salary, like a siege for example where everyone's objective is to stay alive.

maybe add a setting to auto-pay salary (giving the player more control on how he manages his credits)

market: sell/buy all

I want to add the ability to sell or buy all from a certain item, instead of typing the amount every time.

like: you have 1472 fuel and you want to sell it all when asked for an amount you will write "all" instead of typing a number, while you will be able to sell an amount I want the ability to sell all in one command.

for that the input will have to get a string instead of an int, you will have to check if its a number or text.

gyinput has a static method called is_num that does just that if its a number it will return true.

the rest I leave to you this shouldn't be too hard to code.

maybe as a challenge add a "sell half" command

station personal moral

if the people working for you aren't happy there will be consequences, the engineers might slack off or make more mistakes so accidents may happen raising the maintenance cost, guards might be less alert and effective so the station security will get hurt.
more negative events regarding the general workers.

working in space can be depressing, but if your living conditions are good it can be bearable, good food, entertainment, and pay bonuses for good work.

maybe food type verity you buy might boost moral, a station decorations upgrade (like more plants in hallways, wall colors other than gray or white etc etc), maybe a station entertainment upgrade and an option to give bonuses (basically pay to boost morale), a bar can also help.

events might also help.

that's another feature I was thinking about.

station damage effects

the station might get damaged, either by not being maintained or from combat or event.

either way, damages have effects.

life support down for more then 3 turns is game over.

damaged dock means no market as ships cant dock.

damaged generator means weapon system might not work maybe other upgrades too.

and other game effects.

damage is sometimes costly to repair and may take time to fix.

a good engineer character might reduce supply costs, the number of engineers will reduce the turns things take to fix.

will need to expand on this idea, if you have ideas please share them.

Unit Tests

Testing Suggestion?

I was just thinking it might be a good idea to implement JUnit 5 tests to make sure the code is solid? It could be helpful for merging new features and making sure that nothing breaks, and we don't have any regression failures. Just a thought.

insurance raise rates

basically whenever something bad happens, thers a chance the insurance rate will go up, if a lot of bad stuff happen the insurance rate will go up even more.

very easy to implement, you will need something to count the amount of bad stuff happening and then every turn run a method that checks if the rate shod go up by a random chance and the bad stuff counter shod affect this random variable.

also, reset the bad stuff counter every couple of turns. just to be fair.

thers sod be a way to request a rate reduction, but only when bed stuff happened counter is low or 0.

basically the insurance system is done, this is just another nice easy feature contributers can do.

station stats display

this will be a screen that shows the player all of the station's stats(accessed from station management screen):

-credits, supplies, food, storage space

-station security,crew moral

-morality system stats

-personal and other visitors

-damage to systems and stations

-ships docking for trade and maintenance/repair

-rental space, shops rental space

-long term events

etc etc

game name and seo problems

as of now, there is no short search term (or any google search term) that will lead to this repository. meaning no organic traffic at all.

one of the reasons is that the game has no name, if it had one it could be found by typing the game name.

the search term "space station tycon" or "java" or "text based game" are very competitive, "open source" is also very competitive.

not having a name means you cant send people to search for the game by name, what is I good for?

for example in quora, if you post too much of the same link hey will ban you and your link (meaning no one will be able to post your link), the same is with Facebook and also Twitter (also facebook reduces exposure if you add a link to your post).

but if you tell people "search on google" you will most likely go under the radar as those systems hunt for spam links.

but the game has no name.

I'm not good at naming things, I rather pay someone to come up with a name then have someone come 5 years later saying "you owe me money I came up with the name!" personally I hate people like that, who want money for other peoples hard work just because they "came up with an idea".

in short, if you have a name suggestion, I will add you to the credits if I use it, but don't expect to get anything for it.

Invalid input for event causes crash

Found a bug where if you go to the events page and type an invalid input it cause an exception error that crashes the game. Need to have a check here that if the input is invalid to notify the user then reprint the screen.

image

in game station advertisement system

the player shod be able to advertise his station needs more goods of a certain type, or advertise the station as a tourist attraction etc.

or advertise he needs to hire personal like workers guard or single characters like a doctor, chief engineer etc.

or buy ships or advertise his renting parts of the station.

upgrade requirment

an upgrade requirement field will be added to the upgrades db.

as not all upgrades will be available at first. you will need some upgrades to have others.

global settings and currency name

global settings would be a hashmap inside game_manger.

the first one will be currency name, to give the player the ability to name the currency something else rather than credits (this is a luxury feature obviously).

the player might want to call the currency :drahma, dolla,chips,shekels, bananas, cats, latinum, moneh,gold or whatever.

not much of an effect on gameplay but its sort of customization maybe add a station name too.,

save/load game mechanisem

almost every game needs one, this one surely does.

I'm planning on serializing most of the persistent data and put it on a dat file.

ydb_s class will do the writing and reading from file.

I think I will implement this feature myself.

cargo limit upgrade

if your a beginner do this one it's super easy.

add "large cargo" to databases(db/upgrades_db.java) and on pass turn or somewhere else, check if the upgrade exists, if it does change cargo limit (in player "cargo_limit" att)to 2000 .

I put this as something anyone can code (don't worry if you think it clusters pass turn I can always refactor it later).

add a "donation/patronage" event to game events mechanics

an event that would be added to the player event list.

once activated the player will be asked if he wants to donate to (event description) if he inputs y then there's a chance his money will be doubled or returned, there's also a chance he loses it all.
if the player inputs n just remove the event.

example: an artist asks for a donation so he can finish his x project.
if the player agrees there a chance the commissioned painting will be sold for 3 times the investment,
there's also a chance the player loses his investment.

i want to add events like this to spice up the game a little.

this one is easy to implement inside event_manger inside do_event method.

for any qoustions im here.

rent warehouse space

another way to make credits is to rent part of your Wearhouse. as your the only place with a Wearhouse in this system this shod be a little profitable.

but warehouse space is valuable for trade and trade is much more profitable, it all depends on your situation.

how will it be done in code? basically, warehouse space will be reduced, and the reduced value will be stored on a variable called "rented_Wearhouse_space" and each turn you will get a few credits for that.

crazy inventor game event

this one is so easy to code, basically, the event is like this a crazy scientist offers his services for a cost, he will improve you station (add an upgrade). but there's a chance he will fail and damage the station so its a gamble.

basicly the way you code this is : go to event manger, inside do_event add an if:

if(action.equals("crazy_inventor")) {}

inside that, if ask the player using ui (user input object) if he agrees to the deal.

if he does create a random number to determine if the upgrade was a success or not.

reduce the players credits (he will pay these wether the upgrade succeeds or fails, the cost is low so its tempting).

if success add a random upgrade (a basic upgrade) and tell the player the event succeed.

if fail, do damage to the station (when station damage is implemented, you can leave it empty or leave a comment "damage here"), output a message telling the player the event failed.

it looks harder then it really is, look at if(action.equals("smuglers_sell")) for inspiration. or just ask me about this issue.

Kanban Board

Implementing Kanban Board to Workflow

I have found Kanban boards to be really helpful in seeing what is done vs what still needs to be done, @yoel123 @rc14193 if you all are cool with it, I would love to get one started!

station security

that's another stat that I want to add.

a vulnerable station might attract negative people, thieves, violent people, and if your not careful organized crime, terrorism, sabotage and all the stuff you don't want to happen.

low station security will trigger more negative events.

events like theft attempts(or others) will be calculated against your station's security the higher the security the last chance the bad event will happen instead you will get a message "luckily your guards handled it" after the event. while insurance also help.

high security might also reduce the insurance rate, on the opposite bad events will raise it.

security may improve by adding guards obviously, but upgrades will also help like "advanced station security"(cameras alarms code dors etc etc) or "biometric scanners"(fingerprints, retinal scans, and DNA check).

also, the constable character attributes might help a lot so you will need to hire the right one.

station repairs simplified station damages system

I plan on doing it like upgrades an ArrayList,that will hold the damaged system name.

things that can get damaged are either the subsystems(life-support, coms, generators, dock, structure) or upgrades, each will have its supply cost and time to rapier and negative effects.

fixing an upgrade will cost a percentage of their credits cost (again to simplify things as there will be a lot of upgrades).

there will also needs to be another arraylist(or other collection) to save the progress of the repairs.

there will be a method for each turn_pass that will increment repairs and reduce the supplies needed for the repairs.

the number of engineers you have or special traits of your chief engineer character will reduce repair time and costs.

also, the effects of damages will be on ifs all around the project code, like if you have docks or coms damage you won't be able to use the market. damaged generators will cause upgrades not to work randomly (they can't work without power). life support will end the game(can't live without air or heat) and be costly to fix.

damage to storage will make you lose items randomly.

insurance might negate the costs of repairs and repairs times. but the rates will rise if you take too much damage.

ship weapons as data

I think ship weapons can be data only, as all weapons function the same the only difference is they have different stats.

there might be a few functions for shooting different types of weapons but they practically work the same with the difference being stats.

that way ship can have an ArrayList of weapon names, and when you need a weapons data you call its row from the database by name.

maybe I shod make a weapon modal class (like item) so I can call stats like w.range or w.dmg etc etc.

ship upgrades that modify say range will just add to the range variable as modifier no need to change weapons data.

event alingment

I want events to show up based on certain stats, there will still be random ones.

as of now, there is no way to distinguish if an event is good, bad, or neutral. therefor there needs to be an alignment column in the event database table. so a function can decide what kind of event is it by "category".

for example, if station security is less then 40, than crime events will happen more often.

emergency repaier

let's say life support has 12 damage you have 2 engineers, meaning they will repair 1 point each turn.

life support timer ends in 10 turns, meaning unless you hire more engineers you lose the game.

a lot of ships pass by, they all have engineers, you can hire them for one time repairs, this will cost you a premium price, let's say 2 times the regular salary per turn for an engineer, so repairs for 5 points of damage require 10 engineers so the price is 10 engineers salary per turn multiplied by 2.

it will be an option in station management screen as "emergency repair", there the player can choose the damage he wants to repair using damage_system.repair_damage method.

station maintenance

station maintenance will require supplies, which will add another calculated decision the player will have to make, as supplies prices change.

as the station grows it needs more supplies to maintain it.

if the station doesn't have enough supplies to properly maintain it, it will get damaged which will cost to repair, and if ignored might cause catastrophic malfunctions that would render it uninhabitable (and end the game).

people also need food so maybe have this add to maintenance items.

in game loan system

sometimes to get up and running you need a loan. sometimes you run out of credits.

fairly easy to implement.

loan an amount lets say 5k or 10k
each 4 turns the player needs to pay 10% of the loan
the loan will also have an interest.
if you don't pay in time you will get fined, if you don't pay at all you assets (the station) will be sold to pay the loan.

so in programming terms its percent calculations (for the amount to pay and interest)
a counter for pay time and if the counter exceeds 4, fine the player and start seizure counter if seizure counter bigger then x turn sell the station lose the game (or sell stations upgrades ships etc as penalty depending on dept size).

station boarding and "ground forces"

if the enemy disables the station's defenses(shield and point defense batteries), they would want to send APCs (or heavy shuttles) field with raiders that would try to take over the station, as even an empty station is a treasure trove, once you take it apart.

your last line of defense is your ground forces and troops/mercenaries you hired to defend the station from the inside.

upgrades may help like:

  • "advanced security" so you have cameras and alarms everywhere, and measures to make it hard to hack or use your subsystems.

*"safe room" will make it close to impossible to root you out, not without something that can pierce a heavy bunker. you will be safe, the rest of your crew....

*"auto turrets" guns and blade wilding robotic arms coming out of the walls when the command is given shredding anyone without an id tag.

*"heavy security doors" they won't stop invaders for long, but it will help you separate them and control where and how fast they go.

*"sonic emitters" will neutralize most first waves, or unequipped enemies.

*"advanced auto-turrets" flame throwers, tactical lasers and plasma guns, all automatic, just don't forget your id tag.

*"mercenary guild" they pay the rent on time and also get free live target practice once the station is attacked.

*"high quality arms" your gurds will have better weapons

all of these upgrades will have a maintenance cost.

but what will win against a big force will be the quality and number of troops you will have. no amount of tricks will stop a determined invader.

here the combat will go from deck to deck.

it will go something like this:

*troop placement: something like: select generator room, place 20 guards and 5 mercs, 30 guards at command deck, constable and 10 guards at habitat.

*enemy response: enemy movement depends on their goals, if they want to take over they need command deck and engineering, if they just want to raid, they will go to the cargo bay.

*check victory conditions and turn report: if you held the command deck or engineering for 3 turns you win. you will also get a casualty report so you can decide how to move your people.

would like to make desitions a little deeper then move here and there.

if anyone has any suggestions I would like to hear them.

station rental space

another way to make in-game money will be to build, rental spaces, maybe apartments/hotel-like.

maybe shops or other businesses a community might need.

this might open new events or a new type of events "requests".

the station will need to be upgraded to be able to do this (you cant rent space you dont have).

this option will appear one upgrades are bought.

next to combat this is easy to implament.

combat system

apart from trading, there will be a lot of combat. meaning it will be a big part of the game.

a lone station in an uninhabited star system will attract attention. pirates, fanatics, space cannibals (why grow protein in zero g when you can hunt for it) , deranged ai fleet or any other faction that want a pice of you.

as I mentioned in the story issue, attacking a space station is different than attacking ships, it has enough armor and shields to rival the biggest ships, two medium-range torpedo batteries can shred as small fleet before it gets into range, machine gun battery for those pesky fighters and missiles and a plasma cannons battery for those who can survive the torpedos (a hint point defense doesn't work on plasma).

what I described will have a huge maintenance cost (maintaining high tech weapons like plasma cannons cost a lot, also all those guided-missile don't grow on trees, machine guns are cheap and effective but don't have range, good for point defense).

but it's a good investment if you want to stay alive. think of the station as a fortress but in space.

there will also be ship to ship combat, with the station for support or on patrol missions to protect the system or an assault on an enemy base.

I want the player to be able to customize the ship's layout (for the station's everything will be under upgrades). the weapons, general upgrades, and fighter bay(if any).

the combat itself will be like those board modal combat games, but without positioning (remember its still a text-based game)to make things simpler to program.

unlike other text-based games, the combat won't be over in "one go" calculating statistics (in that case you won't need ship customization as its basically one stat at the end).

I want to make combat turn-based, in every turn the player can assess his situation and how to react, change formation, tactics, give orders to specific ship modals like : protect this ship, avoid that ship, harass this ship, destroy ship, stay in reserve,use long-range weapons, disable(target engines and weapons only) only etc etc.

this alone will take substantial coding efforts.

tactics options will depend on commander skill, the player can choose basic ones like : hold position, attack, charge,flank. more advanced ones can be, pincer move, fake retreat, ambush (if there's a nebula or you have stealth ships), fighter assault, torpedo assault, missile barrage, artillery only, encirclement, etc.

the player will also have info on the enemy fleet (from what can be seen and sensors) so he can decide what todo. like if the enemy has a big ship the player wants to avoid until he handles the rest. or if the enemy has more long-range weapons you would like to charge to close the distance, or if the enemy has slow ships you can easily harass them with faster ships.

this will go on and on until one side retreats, disabled or destroyed.

behind the scenes, ship modals stats will be compared, one modal can attack multiple modals and the opposite is also true.
a ship won't attack if its out of range or has an order to avoid the target.

then their accuracy test to see if the weapon hit the target, this is affected by target speed (weapon shot speed), weapon accuracy, and skill.

damage will be calculated by type and what it hit (for example kinetic weapons are good against shields but not against armor), then damage to hull will be calculated (also hull breach/crew loss will affect ship capabilities). until the ship is disabled or destroyed.

modifiers will be added to most calculations, depending on the situation etc.

so combat phase will be like this:

*assess sitoation (enemy ships/yours etc )

*give orders to single ship models(optional)

*global orders (hold ground, retreat,flank etc etc)

*turn report

*repeat until one side wins

about retreat: best way to do this is leave mines so the enemy will be busy with them, second best is to clutter the field with enough rackge (preferably the enemies ships) so it will be hard to follow you, least favorite, leave a rearguard that will probably not survive, and worst: slowest ships get picked off and only the few fast ones survive. buy mines put them on a few ships just for this kind of occasions.

maybe make battlegroups so you can give individual orders to parts of the fleet.

well as I see it, even if its just text, with no map positioning or any graphical aid , this will still be hard to code.

morality system

i was thinking about adding a morality system, like if the player does "bad/evil" things it will affect his reputation, so good reputation will attract people's goods etc and bad reputation will give some negative and some benefits so you can have different playstyle.

it might sound hard to implement but it's not harder than the insurance system, for example, you get a meteor storm immediate event if has_insurence == true then don't do the event and add to the event description [luckly you had innsurence], and you need to buy insurance every turn.

so if reputation is < 20 then x happens/might happen every turn.

hydroponic farm upgrade

this upgrade will make sure that the station won't starve even if food runs out, but not for long term (if for long term that make it cost in maintenance).

this shod be implemented after the space station maintenance is implemented (as it stops one loss condition).

something like: if food ==0 dont start starvation counter for a few more turns.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.