An open API service indexing awesome lists of open source software.

https://github.com/sleeplessbyte/rubiesinspace

Ruby Programming Game In Space
https://github.com/sleeplessbyte/rubiesinspace

Last synced: 3 months ago
JSON representation

Ruby Programming Game In Space

Awesome Lists containing this project

README

        

Rubies In Space
=============
Find some Rubies by building your own agent in Ruby

What is _Rubies in Space_
----------------------
_Rubies in Space_ is a Programming Game in **Ruby** that takes place in space. Instead of simulation a grid based world where the main point is creating the best swarm tactic, _Rubies in Space_ evolves around **RTS** and **RPG** tactics.

As far as I know (and searched - not that I looked thoroughly) there is no such thing and especially no such thing in Ruby. There is so much software for Ruby, but not a lot of games, simply because it isn't suited very well for games. That said, I don't really care. So let's go! -- this is a DRAFT

How to Win the Game
----------------------
In _Rubies in Space_ you control ships by providing the [crew](https://github.com/Derkje-J/RubiesInSpace/wiki/Crew). You have two goals:
- Stay alive by keeping the [ship](https://github.com/Derkje-J/RubiesInSpace/wiki/Ship) alive
- Find the **Ruby**

There latter is hidden in one of the many asteroids and can only be found by drilling with a special **Drill** that has to be researched and build. More on this later. You stay alive by keeping the energy level of the ship above 0.

Game Rules
----------------------
There are three rules:
- You have access to the `./interface` folder. The `iship.rb` file contains a class `Ship::Interface`. When your **crew** is assigned a **ship**, it will be passed on an instance of this interface. Use it to control the ship. Don't try to extend, read, send, access the internals. That's just lame.
- If you want to use a `Randomizer`, use `Ship::Interface#rand`, `Ship::Interface#rand(n)` or `Ship::Interface#bytes(n)`. The reason is that we can then simulate the complete game again by passing in the seed.
- Try to keep your code fast. In later versions you will be penalized.

Participation
----------------------
At this moment the best way is to **Fork** this repo and provide a new **Crew** in the `./crew` folder. I am working on an online tournament system, other game modes and so forth and on.

Game World
----------------------
See the [wiki](https://github.com/Derkje-J/RubiesInSpace/wiki/Home)

Setup / Simulate
----------------------
- Install ruby 2.0.0
- `bundle install`
- `ruby server.rb`
- Browse to `localhost:4567`
- See the [wiki entry](https://github.com/Derkje-J/RubiesInSpace/wiki/Installation)

~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

Progress
-------------
### Environment
Space
- ☑ is a graph

Nodes are
- ☑ A Star or
- ☑ sustainable deuterium at a rate
- ☑ has a size [ does nothing yet ]
- ☑ has temperature [ does nothing yet ]
- Events
- ☐ solar flares [ damage ]
- ☐ death [ kills nodes -> asteroids ]
- ☑ A planet or
- ☑ non-renewable deuterium
- ☑ has a size [ does nothing yet ]
- A building
- ☐ A lab or
- ☐ A factory or
- ☑ nothing
- ☑ An asteroid
- ☑ non-renewable deuterium
- ☐ the ruby

Pathways are between two nodes
- ☑ have a distance

### Player
- ☑ has a ship
- ☐ may build new ships
- ☑ maintain a crew [ the agent program ]

### Ship Actions
- ☑ You can only do one thing at a time
- ☑ scan
- ☑ yields a ScanReport
- ☑ the properties of the location
- ☑ enemies at location
- ☑ friendlies at location
- ☐ tech provides more/less information
- ☐ blocking stuff
- ☑ enabling stuff
- ☑ travel
- ☑ traverse a path
- ☑ yields a Travel Report
- ☑ destination name
- ☑ consumed energy
- ☐ communicate
- ☐ broadcast data
- ☑ yields a Communicate Report
- ☑ attack
- ☑ attacks a player
- ☑ yields an attack event
- ☑ attacked player can determine action
- ☑ yields a Battle Report
- ☐ build
- ☐ builds new ships, upgrades, tech
- ☑ yields a Build Report
- ☐ research
- ☐ research tech, upgrades
- ☑ yields a Research Report
- ☑ collect
- ☑ collect deuterium
- ☑ yields a Collect Report
- ☑ collected deut
- ☐ transfer
- ☐ send deut to other ship
- ☑ yields a Transfer Report
- ☐ transfered deut

- Resources
- ☑ deuterium
- ☑ time

### Ship Stats and Components
Each component has its own stats
- ☑ engine
- ☑ power
- ☑ warmup
- ☑ cooldown
- ☑ reactor
- ☑ efficiency
- ☑ collector
- ☑ warmup
- ☑ power
- ☑ scanner
- ☑ efficiency
- ☑ weapons rack
- ☑ warmup
- ☑ rate
- ☑ power
- ☑ command center

### Build

### Research
TechTree
- ☐ Better efficiency
- ☐ Better weapons
- ☐ Better ...
- ☐ Passive Scanner
- ☐ Passive Collector
- ☐ Ruby miner

### End Conditions
- ☐ Survival of the rubiest ( find rubies! )
- ☑ Survival of the fittest ( last standing )

#### Events
There will be Random events
- ☐ Solar flares
- ☐ Super nova
- ...