Giter VIP home page Giter VIP logo

stareater's Introduction

Stareater

Stareater is a turn based 4X strategy game set in space. Play as a leader of a nation, research futuristic technologies, colonize other star systems, fight or negotiate with other leaders and solve the mysteries of a star eating creature. Previously known under Croatian name Zvjezdojedac, the project is primarily inspired by Master of Orion II: Battle at Antares but there are influences of the other games of the genre such as Master of Orion I & III, Ogame, Sword of the Stars and Space Empires 5. This project is a prototype meaning it's main objective is to implement and test the idea.

Although this is a C# project, builds can be run with Mono in both Linux and Mac OS.

Donate

Screenshots

Stareater map setup Stareater galaxy map screen Stareater space combat

State of the project

This project is in pre-alpha state (not feature complete) but it is nearing feature completeness. Technically the game can be played already, baring missing content. What is implemented:

  • Starting single player game
  • Hotseat multiplayer
  • Colony management
  • Star system management
  • Research and development
  • Ship design
  • Victory and defeat conditions
  • Moderately balanced map generator
  • Basic space combat
  • Basic diplomacy (war and peace)
  • Barebones AI
  • Basic neutral player (native lifeforms)
  • 3 out of 8 tiers of technologies

Missing features:

  • Espionage
  • Ground combat
  • Advanced space combat
  • Advanced diplomacy
  • Proper AI
  • Higher tier technologies

How to build

Instructions for Windows and debug configuration:

  1. Install NuGet (command line tool for managing external dependencies)
  • You may need to configure your IDE to use it
  • There is an extension for Visual Studio
  1. Build {Stareater}/tools/Tools.sln
  • {Stareater} is repository root directory
  • Build with "Debug" configuration
  • It will create texture generator tool needed for the next step
  1. Run {Stareater}/scripts/gen_textures.bat
  • OS-es other then Windows may not know how to execute the script, in that case one has to manually run texture generator with appropriate parameters
  1. Make sure game data is available to game's executable
  • Game data files are in {Stareater}/build/ directory
  • Game's executable file is in {Stareater}/source/Stareater.UI.WinForms/bin/Debug/ directory
    • Set IDE to run the project with following command line parameter: -root ../../../../build/
    • Alternatively, run {Stareater}/scripts/copy_build_to_bin.bat to copy files next to executable
  • Again, scrips may not work on OS-es other then Windows
  1. Build {Stareater}/source/Zvjezdojedac.sln
  2. If all steps above were successful, the game can be run

Licence

Stareater executable and it's source in {Stareater}/source/Stareater.UI.WinForms/ are licenced under GPLv3.

Following code is licenced under LGPL:

  • {Stareater}/source/Stareater.Core/ (Stareater core logic)
  • {Stareater}/source/Stareater.Maps.DefaultMap/ (default map generator)
  • {Stareater}/source/Stareater.Players.DefaultAI/ (default AI player)
  • {Stareater}/source/Zvjezdojedac editori/ (modding tools for v0.4)
  • {Stareater}/source/Zvjezdojedac/ (v0.4 game code)
  • {Stareater}/documentation/ (GUI mockups)
  • {Stareater}/tools/ (development helper tools)

stareater's People

Contributors

ivucica avatar subchannel13 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

stareater's Issues

Predefined ship designs duplicate on load game

What steps will reproduce the problem?
1. Play game until at least one predefined ship design become available (colony 
ship should be available from beginning).
2. Save game.
3. Load game.

What is the expected output?
Same ship designs prior and after loading game.

What do you see instead?
Available predefined ship designs are duplicated after loading game.

Original issue reported on code.google.com by [email protected] on 24 Aug 2010 at 7:39

Building queue accept on close

Proposition for following:

Building queue UI accepts changes in building queue on every kind of window 
closing, not just "accept" button.

Original issue reported on code.google.com by [email protected] on 24 Aug 2010 at 8:16

Moons and orbital habitation

Version 0.3 requirement

Division of planet size to surface size and orbit size.

Concept proposed mainly because of gas giants. Unlike rocky planets and 
asteroids, gas giants don't have colonizable surface. Instead they usually have 
large moons that can populated. To make gas giants less special case, moons and 
orbital habitation is proposed. It would be good to avoid explicit 
manifestation of moons and incorporate then in some simpler concept. In that 
manner division of planet size to surface and orbital size is proposed.

While planetary "surface" is colonizable from the beginning, colonizing orbit 
requires technology. Cost of living on surface is determined by atmospheric 
conditions and stellar radiation and can be regulated through terraforming and 
shielding. On the other hand orbit can't be terraformed (due the lack of terra 
part) and cost of living is dependant on orbital habitation technologies.

For rocky planets, "surface" is combined surface of planet and it's moons and 
"orbit" is orbit of both planet and moons. Asteroids in this proposal are 
considered purely orbital case with zero surface size. Gas giants have 
"surface" on moons and "orbit" around main planet body and moons. Although gas 
giants have considerable volume of atmosphere, to keep things simpler, it 
shouldn't not be taken in consideration.

By dividing planets to surface and orbit, concept of mining also needs to be 
updated. Orbits of rocky worlds should not be place to do mining while "orbits" 
of asteroids and gas giants can be. In this proposal asteroids are considered 
to be surfaceless orbit, but that doesn't mean they can't be mined. To cover 
that option mineral abundance of orbit is proposed. Gas giants can have solid 
core that can be mined too but only after overcoming crushing atmosphere. So, 
to cover that option too, condition on orbital mining ability is proposed. As 
surface mining has mining depth that interpolates between shallow and deep 
mining so should orbital mining be affected by some factor of capability.

Original issue reported on code.google.com by [email protected] on 7 Aug 2010 at 10:29

Interstellar travel

Version 0.3 requirement.

- Issuing and performing interstellar travel.
- Generation and application of "starlanes".

Original issue reported on code.google.com by [email protected] on 2 Aug 2010 at 11:19

Localization

Version 0.3 requirement

Support for multiple languages.

Original issue reported on code.google.com by [email protected] on 2 Aug 2010 at 11:15

More planet pictures

Version 0.2 requirement

Adding more pictures for planets and implementation of picture choosing 
algorithm. 1-NN (nearest neighbor) algorithm is proposed.

Original issue reported on code.google.com by [email protected] on 16 May 2010 at 8:45

Multiple pictures for ship hulls

Version 0.4 requirement

When designing ship, multiple ship pictures should be available. It should be 
done as multiple images per ship hull size.

Original issue reported on code.google.com by [email protected] on 25 Aug 2011 at 11:22

Ship component descriptions

Currently component descriptions are displayed at two different places, 
technology library and ship designer and both use similar but separate code. 
That code should be extracted and made reusable.

Original issue reported on code.google.com by [email protected] on 19 Mar 2011 at 12:40

Overhaul colony info window

Version 0.4 requirement

Colony info window should be redone in a way to show only important data. 
Details such as how is something calculated should be available by clicking or 
hovering mouse over already shown data.

Original issue reported on code.google.com by [email protected] on 27 Aug 2011 at 12:35

Intelligence data

Proposition for following:

Separate intelligence and cartographic data from Igrac class.

Original issue reported on code.google.com by [email protected] on 18 Nov 2011 at 10:48

System effects

Version 0.3 requirement

Implementation of system wide effects (same way they are defined for colony and 
empire scope). Migration limit would be one of such effects. Some values might 
also be visible on GUI.

Original issue reported on code.google.com by [email protected] on 24 Aug 2010 at 7:31

Redo mining

Proposition for redoing mining calculus.

Before implementing orbital habitation, concept of mining has to be redesigned. 
Currently miner efficiency is 1 + planet's ore abundance multiplied by industry 
worker efficiency. New model should resemble more to traditional model where 
miner efficiency is proportional to ore abundance on planet and unaffected by 
industry efficiency.

Also, habitation and building maintenance should have special treatment, like 
using less ore.

Original issue reported on code.google.com by [email protected] on 9 Mar 2011 at 11:20

Null pointer when selection destination

What steps will reproduce the problem?
1. Open fleet movement window
2. Click on empty spot on map

What is the expected output?
Nothing or map scrolling.

What do you see instead?
Null pointer exception is thrown. After mouse click code searches for nearest 
star in 0.5 ly radius (game/map coordinates :)) and sets it as fleet 
destination. If there is no star in 0.5 ly radius, null is returned.

Original issue reported on code.google.com by [email protected] on 12 Apr 2011 at 8:13

Design upgrade mechanism

Version 0.2 requirement.

Mechanism for upgrading ship designs as new technologies become available.

Original issue reported on code.google.com by [email protected] on 20 May 2010 at 2:50

Spicing up food production

Proposition for following:

In current model, percentage of farmers is directly proportional with farmer 
productivity which in turn depends only on technologies and employment rate. 
Idea is to make farmer productivity (and consequently percentage of farmers) 
dependent upon population size. Larger population would require 
disproportionaly more farming effort.

Let's say that dropoff starts when number of farmers is greater then 1/10 of 
colony's base max. pop. Farmers working in second 1/10 would suffer penalty to 
their productivity, those working in third 1/10 would suffer even greater 
penalty and so on.

Example:
Let's chose something like 2^-x as dropoff function, let colony population and 
population limit be 100 and farmers initial productivity be 3 units of food per 
farmer. Current model would require 34 farmers.

In proposed model first group of farmers would be producing 3 units (1 + 2), 
second 2 units (1 + 2/2), third 1.5 (1 + 2/4), forth 1.25 units and so on. That 
specially treated one unit production is there to prevent starvation. This 
model would require about 60 farmers on colony from example. That is quite 
steep but with some balancing, it won't be so crippling and yet production 
penalty will matter. 

Original issue reported on code.google.com by [email protected] on 12 Sep 2011 at 11:14

Colony navigation

Proposition for following:

UI for easier navigation through colonies like buttons for jumping to next or 
previous colony.

In star system view selected planet (planet shown in planet view tab) should be 
highlighted.

Original issue reported on code.google.com by [email protected] on 24 Aug 2010 at 11:17

Game - GUI to MVC

Proposition for following:

Refactor code to MVC design pattern where the game is model and GUI is view.

Original issue reported on code.google.com by [email protected] on 20 Feb 2012 at 9:58

Weapon accuracy increased by ship mobility

Proposition for following:

When ships are close enough (at most one slot away) attacker gains accuracy 
bonus from mobility. Idea is to add another benefit to close combat fighters 
and to enable bomb-like weapons that are ineffective at long range but good in 
close range.

Original issue reported on code.google.com by [email protected] on 17 May 2012 at 9:57

GUI size

Version 0.3 requirement

Current GUI looks ok on 1024x768 and even on same higher resolutions if 
computer user is less then 1m away from screen. Displays larger then default 14 
inch laptop LCDs are usually set to resolution higher then 1024x768 also due 
larger diagonal some users prefer greater distance between display and their 
eyes. In these conditions some parts of current GUI, specifically texts, are 
less visible. Since GUI in this project is based on Windows forms simple 
decrease in resolution (like in fullscreen games) can't be applied. Proposed 
method is to make an option to scale text font sizes (and size of GUI elements).

Original issue reported on code.google.com by [email protected] on 7 Aug 2010 at 1:50

Negative industry and development

What steps will reproduce the problem?
1. Colonize planet with high colony maintenance.
2. Wait until ratio of employed and unemployed population drops.

What is the expected output?
Well, anything but negative numbers for industry and development.

What do you see instead?
Industry and development turns negative because more work force is needed for 
the maintenance than it is available.


Original issue reported on code.google.com by [email protected] on 22 Oct 2010 at 10:51

Colony and star system AI

Version 0.4 requirement

The AI will be divided to multiple levels, each managing certain part of it's 
empire. Lowest level manages colonies, next level manages star systems, next 
galaxy map and the highest manages technologies (and diplomacy and espionage).

Implementation of first two levels (colony and star system) of AI is the goal 
of this task.

Original issue reported on code.google.com by [email protected] on 27 Aug 2011 at 10:05

Technology list and descriptions

Version 0.3 requirement

GUI:
- List of researched technologies.
- List of available ship components.

Logic:
- Multiline descriptions.

Currently there is no way of specifying new line in either technology 
description or ship components.

Original issue reported on code.google.com by [email protected] on 11 Aug 2010 at 7:12

Proper namespaces

Proposition for following:

- Rename Prototip namespace to Zvjezdojedac.
- Add classes to corresponding namespaces (GUI to Zvjezdojedac.GUI, etc.)

Original issue reported on code.google.com by [email protected] on 12 Sep 2010 at 6:36

Ship design GUI anew

Sub task for issue #36 (Space combat)

Ship design GUI has to be done anew. "Form" has to be as separate window, not 
as tab within a window as it is now and has to support space combat model 
described in documentation and should have better usability.

Original issue reported on code.google.com by [email protected] on 9 Dec 2011 at 10:40

Planet view and exploring stars

Version 0.2 requirement.

Player should be able to see planets only around explored stars. Also player 
should not be able see details on foerign colonies. 

New features:
- Details of planet without colony.
- Star exploration fundaments

Original issue reported on code.google.com by [email protected] on 27 May 2010 at 10:22

Turn processing in background

Version 0.4 requirement

Move turn processing to non-GUI thread. Add textual progress indicator (what is 
being prcessed, colonies, combats or something else), let's say at top left 
corner of map.

Original issue reported on code.google.com by [email protected] on 3 Aug 2011 at 1:40

List of colonies and star systems

Version 0.4 requirement

GUI for listing and accessing multiple colonies and star systems. Should 
support search filters (own, unclaimed, etc.) and sorting results by various 
attributes (name, max industry, habitability, etc.).

Original issue reported on code.google.com by [email protected] on 21 Nov 2011 at 3:48

Construction overflow

Proposition for following:

During new turn calculation, colonies that have more workers assigned to colony 
development then the colony in question can use, surplus work force should be 
used in other areas (research and system construction). Same for star systems, 
surplus should be assigned to research. That assignment must not "move the 
sliders", in other words it should be temporary, effective only during new turn 
calculation.

Original issue reported on code.google.com by [email protected] on 17 Oct 2011 at 12:18

Messages

GUI for new turn messages needs improvement. Inclusion of completed 
construction messages required.

Original issue reported on code.google.com by [email protected] on 16 May 2010 at 12:12

Proper comparison for large numbers

Proposition for following:

Something along this line: http://xkcd.com/558/

Zvjezdojedac is full of large numbers and displaying them in scientific 
notation can be confusing. Instead, all numbers within given context should be 
displayed with same magnitude prefix. For example:

current format
18.9 M
4.23 G

proposed format
0.018 G
4.23 G

Original issue reported on code.google.com by [email protected] on 7 Nov 2011 at 10:01

Building notification

Proposition for following:

Setting up notifications for construction items. At building queue add options 
for setting notification option for each item. Options could be:

"do not notify"  - do not produce message at new turn report when item is built
"normal" - report only when built
"report progress" - produce message every turn

Original issue reported on code.google.com by [email protected] on 18 Jan 2011 at 3:47

Report window tweaks

Proposition for following:

User should be able to close report window (new turn reports) more easily, such 
as by pressing escape or enter. 

Window should not pop up if there is no messages after applying players message 
type filter.

Message count of each message type. Value can be shown at filter's check box on 
report window.

Original issue reported on code.google.com by [email protected] on 24 Aug 2010 at 8:07

Colonization and industrialization produce message every turn

What steps will reproduce the problem?
1. Put in building queue any repeatable building (colonization or 
industrialization).
2. Press end turn.
3. See new turn report.

What is the expected output? 
No new building messages for buildings that can be built next turn. Only if 
repeatable building has reached capacity limit message should be generated.

What do you see instead?
Reports that repeatable buildings are built, every turn.


Original issue reported on code.google.com by [email protected] on 24 Aug 2010 at 7:07

Starting population

Version 0.3 requirement

In previous a versions, the starting population and the planet for the first 
colony were defined in a definition of starting star system. New implementation 
have to separate definition of planets in the starting star system and 
definition of starting colonies. Colonies are settled on best suitable planets 
(ie. with lowest maintenance cost) while colony count and population size are 
selected in same way as map size.

Original issue reported on code.google.com by [email protected] on 8 Nov 2010 at 10:45

Population migration

Version 0.3 requirement

If planets natural growth would exceed population limit, surplus population 
should be transported to other colonies within same star system. Amount of 
population than can migrate within system would be defined by population 
capacity of population transport and colony ships in that system. There is also 
idea of buildings such as spaceports that would increase migration limit.

Original issue reported on code.google.com by [email protected] on 24 Aug 2010 at 7:18

Space combat

Version 0.4 requirement

Design and implementation of space combat.

Original issue reported on code.google.com by [email protected] on 25 Aug 2011 at 11:23

Formulas: negative numbers and LFROM operator

When parsing, negative numbers are recognized as variables rather then 
constants.

Problem can be corrected by parsing constants with NumberStyles.Float parameter 
in double.TryParse.

LFROM operator is not limiting value correctly. Limiting is performed when 
interpolation parameter is outside [min, max] while it should be limited when 
outside [0, 1].

Original issue reported on code.google.com by [email protected] on 1 Sep 2010 at 11:14

Wormhole to nowhere

Map generator can generate "starlanes" that lead to "no star" type of stars.

Original issue reported on code.google.com by [email protected] on 9 Nov 2011 at 11:02

Star system managment

Version 0.4 requirement

Managment of star system is going to be implemented. Colonies will no longer 
have 2 building queues (military constraction is about to be removed). Colonies 
will have one slider that determines how much labor is available for research 
and star system projects. 

Original issue reported on code.google.com by [email protected] on 2 Aug 2011 at 7:58

Buildings per turn

Proposition for following:

New attribute for buildable items, maximum buildable quantity per turn. 

Colonization for example has two quantity constrains, it can't exceed 
population limit and it can't push population growth to more than doubled the 
natural growth. So far, that effect was accomplished with single "max count" 
attribute. Also there was a problem of detecting is building complete or should 
the item stay in building queue.

Original issue reported on code.google.com by [email protected] on 21 Sep 2011 at 1:25

Collections supporting element removal during iteration

Proposition for following:

Kind of. To reduce boilerplate code, collections such as List and Dictionary 
should be extended with PendRemove and ApplyPendind methods.

PendRemove - marks object for removal from collection but doesn't remove on 
it's own

ApplyPending - removes from collection all marked objects

Original issue reported on code.google.com by [email protected] on 18 Oct 2011 at 10:54

Default language

Proposition for following:

For easier modding, I propose language with default text values. Ie. if the 
currently selected language doesn't have a requested key in it's string table 
than value from default string table is used. Idea is that a modder don't have 
to make entries for every language, if he or she is not familiar with, but only 
in default.

Original issue reported on code.google.com by [email protected] on 22 Oct 2010 at 11:03

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.