99 lines
4.0 KiB
Markdown
99 lines
4.0 KiB
Markdown
# Goals:
|
|
|
|
|
|
Make a multiplayer game that will run in the browser. This game should be a
|
|
planet conquest type game where you can create a lobby and then players can
|
|
join. Once you start a game only those players can play. This game should be
|
|
time based. You will start with a system of planets and then over time you will
|
|
gain ships and resources. The goal is to either eliminate all of the other
|
|
players or to control a portion of the universe. As you explore you can
|
|
encounter other planets and players. Each planet will have specific
|
|
bonuses. Some can produce ships faster, others will produce more resources and
|
|
in others you can find bonuses for different kinds of ships. I want to make it
|
|
so that you can also upgrade the planets to improve the value of them.
|
|
|
|
The maximum player count in a game will be 20 however I want this to be scalable.
|
|
|
|
# Thoughts:
|
|
|
|
|
|
I do not want the players to directly communicate with each other. I want each
|
|
one to talk to the server and then the server to use an API for getting updates
|
|
for each player and their stuff. This means that potentially there could be
|
|
multiple clients for the game however I want to start with a web based client
|
|
as I feel that is easiest for me.
|
|
|
|
Each player should be able to log in and then see what games they are playing
|
|
in and select a game to resume. The game will continue even when the player is
|
|
not logged in. This means that the player could be attacked even when they are
|
|
gone. This means that the worlds need to be persistent.
|
|
|
|
As a follow up that means that each world will be always running. This means
|
|
that if there is a main loop for the game it should be very lightweight so that
|
|
it does not consume massive amounts of resources.
|
|
|
|
I think that each universe should be randomly generated that way the players
|
|
have to explore it.
|
|
|
|
I do eventually want to have AI players however for now I just want human
|
|
players. Make sure that you help me to keep this easy as I am programming.
|
|
|
|
Here are the resources that I am thinking of for now:
|
|
- Food
|
|
- Metal
|
|
- Fuel/energy
|
|
|
|
How do we have resources travel be twee planets? I am not sure yet. Maybe have
|
|
another type of ship called a transport that can transport resources. This
|
|
should be automated though so that needed resources are transported
|
|
auto-magically.
|
|
|
|
I also want there to be some form of tech tree that the player can choose and
|
|
can research. Maybe add some rare resources.
|
|
|
|
# Vocab:
|
|
|
|
|
|
- Ship: a space ship. There are several different types:
|
|
- Explorer: Has a high vision range and can see far. It can not however
|
|
attack or defend
|
|
- Fighter: This is a ship that can fight other ships. It will also have sub
|
|
classes as well
|
|
- Colonizer: This ship is used to colonize a planet and is defenseless while
|
|
flying. However when a planet is colonized the ship can be used to defend
|
|
the planet
|
|
- Universe: The entire game space. It contains planets and other objects
|
|
- Planet: A planet that can be colonized/owned by a player. It can produce
|
|
resources and ships
|
|
- Planet Defense: Structures that can be built on a planet that will defend it
|
|
from attack.
|
|
|
|
|
|
# Final thoughts:
|
|
|
|
|
|
I am comfortable with Python and Ruby mostly. I would rather separate the game
|
|
into the server stuff which will be API driven. I have done some Ruby on Rails
|
|
however I am not very good at it. This means that I would prefer if we used
|
|
rails for it to be purely an API.
|
|
|
|
I also am very inexperienced at authentication. I think for now I will just
|
|
have player names. Anyone can use any name. This does mean however that if two
|
|
people use the same name they will be indistinguishable in the server. Probably
|
|
just taking a password and hashing it on the client and then using that hash as
|
|
a 'token' of sorts would fix this. I am not super concerned with player account
|
|
security however the server does need to be secure.
|
|
|
|
# API overview:
|
|
|
|
|
|
The `Universe` class will contain everything in the universe. This means planets, ships, and other stelar objects. This will be the API that I can think of:
|
|
|
|
- universe/
|
|
- ships/
|
|
- create/
|
|
- update/
|
|
- move/
|
|
- planets/
|
|
- update/
|