The main repository for the development of the evolution game Thrive.

Thrive

This is the code repository for Thrive. For more information, visit Revolutionary Games' Website.

Build Status CircleCI

Patreon Patreon

Community Forums translation status Developer Wiki Discord


game screenshot

Overview

Repository structure:

  • assets: This folder contains all the assets such as models and other binaries. The big files in this folder use Git LFS in order to keep this repository from bloating. You need to have Git LFS installed to get the files. Some better editable versions of the assets are stored in a separate repository.
  • doc: Documentation files. Contains style guide, engine overview and other useful documentation.
  • simulation_parameters: Contains JSON files as well as C# constants for tweaking the game.
  • scripts: Utility scripts for Thrive development
  • src: The core of the game written in C# as well as Godot scenes.
  • test: Contains tests that will ensure that core parts work correctly. These don't currently exist for the Godot version.

Getting Involved

Depending on what you want to contribute, you need to take different steps to get your development environment set up.

Read the contribution guidelines and code of conduct first. If you need help please ask on our forums.

There are also other useful documents in the doc folder not mentioned here.

If you have game development skills, you can apply to the team here.

If you'd like to translate the game to your language, you can find the relevant information here.

The planning board contains all issues and pull requests grouped by their priority and status. It can be found here.


game screenshot

Programmers

Thrive is written in C# with a few helper scripts written in ruby. In order to work on the C# you need to compile Thrive yourself. You can find instructions for how to do that in the setup instructions. And if you've never used Godot before please read learning Godot.

Be sure to have a look at the styleguide, both for guidelines on code formatting and git usage.

Binary files should be committed using Git LFS.

Modellers, texture and GUI artists, and Sound Engineers

To work on the art assets you will want to install Godot and work on the project files with it. Instructions for that are the same as for programmers: setup instructions. And if you've never used Godot before please read learning Godot.

Alternatively some art assets can be worked on without having a working copy of the Godot project, but then you need to rely on other artists or programmers to put your assets in the game.

You should familiarize yourself with the Godot Asset pipeline.

To contribute assets you can contact a developer and provide that person with your assets and the developer can add the assets to the official repository. It will at a later time be possible to commit to Git LFS server yourself, currently it is limited to only Thrive developers. Note that you must have Git LFS installed for this to work. Any artists on the team should preferrably modify the project in Godot themselves and commit the assets using Git LFS.

Extra note for modellers: There are extra instructions for how to import models here: import tool

Owner
Revolutionary Games
The team working behind the development of the evolution game Thrive.
Revolutionary Games
Comments
  • Models for organelles.

    Models for organelles.

    We need some models for basic organelles: Nucleus, Normal Vacuole, Agent Vacuole (possibly multiple), Cilia and mitochondria Also an animated Flagelium (Note that animations require special treatment to be exported successfully, see #102). Animations can possibly also be added to the other models later.

    It would be nice if an Agent Vacuole could be rushed out quick for the next release (We will have it spawn in the enviroment to be unlockable)!

    STATUS 03/03/2015:

    • Nucleus: Needs 90 degree rotation (tried doing this myself, but when I exported it wasn't rotated anyway)
    • Cilia: Waiting to see if Poisonchocolate returns
    • mitochondria: Cheese might have one lying around, unknown
    • Agent: We have one done, could use more
    • Vacuole: Not yet made I believe
    • Chloroplast: One at the bottom of this issue: https://github.com/Revolutionary-Games/Thrive/issues/143 (untested)

    To make sure things will work with the game, look through this tutorial: http://thrivegame.canadaboard.net/t1402-basic-blender-modeling-animation-and-exporting-to-ogre-tutorial?highlight=animation

  • Fixes colony physics

    Fixes colony physics

    Brief Description of What This PR Does

    After load ,the colony members shouldnt have the ghost drift. It happened before because after reattaching the child microbes the collision exception wasnt called. Fixes the detaching and stopping of colony members in its tracks.

    closes #2308 ,closes #2310 Related Issues

    Progress Checklist

    Note: before starting this checklist the issue should be marked as non-draft.

    • [x] PR author has checked that this PR works as intended and doesn't break existing features: https://wiki.revolutionarygamesstudio.com/wiki/Testing_Checklist (this is important as to not waste the time of Thrive team members reviewing this PR)
    • [x] Initial code review passed
    • [x] Functionality is confirmed working by another person (see above checklist link)
    • [ ] Final code review is passed and code conforms to the styleguide.

    Before merging all CI jobs should finish on this PR without errors, if there are automatically detected style issues they should be fixed by the PR author.

  • Compound models

    Compound models

    For the Christmas Prototype, we could really use some models for compound particles. The planned compounds are:

    • ATP: Energy, used for moving and some metabolic processes
    • Glucose: Raw material for ATP
    • CO2: Waste product of some metabolic processes and, raw material for others
    • Sunlight: raw material for photo-synthesis
    • RpAse: Reproductase, causes cell-divison / evolution at a certain threshold
    • Oxytoxy: Poison, destroys RpAse

    The models should be easy to distinguish from each other, ideally even for color-blind players.

  • Added custom WindowDialog classes

    Added custom WindowDialog classes

    Brief Description of What This PR Does

    Added a helper class and three custom tscns to handle all dialog escapes.

    image

    The handler doesn't apply to this dialog because when the key binding is in progress InputManager doesn't work. ESC doesn't cause problem though.

    Related Issues

    Fixes #1857 Fixes #2384 Fixes #2020

    Progress Checklist

    Note: before starting this checklist the issue should be marked as non-draft.

    • [x] PR author has checked that this PR works as intended and doesn't break existing features: https://wiki.revolutionarygamesstudio.com/wiki/Testing_Checklist (this is important as to not waste the time of Thrive team members reviewing this PR)
    • [x] Initial code review passed
    • [x] Functionality is confirmed working by another person (see above checklist link)
    • [x] Final code review is passed and code conforms to the styleguide.

    Before merging all CI jobs should finish on this PR without errors, if there are automatically detected style issues they should be fixed by the PR author.

  • Design and implement a dynamic membrane rendering around microbes

    Design and implement a dynamic membrane rendering around microbes

    This will be very difficult and will require quite some experience with ogre/graphics I imagine. The way to do it will probably be vertex buffer modification through ogre based on the hexes in the microbes compound scene node.

  • Engulfment revamp

    Engulfment revamp

    Brief Description of What This PR Does

    Engulfment mechanics revamp https://forum.revolutionarygamesstudio.com/t/revisiting-engulfment-mechanics/846.

    • [x] Fix engulfment for cell colony
    • [x] Lysosome implementation
    • [x] Variable compounds yield
    • [x] Digestive enzymes differentiation
    • [x] Write new mechanics explanation in the help menu
    • ~Fix walled cells trying to engulf~ (can't fix)
    • ~Fix compound ejection spawning at wrong coordinates~ (irrelevant with new approach)

    Related Issues

    Closes #2982 Closes #3448

    Progress Checklist

    Note: before starting this checklist the PR should be marked as non-draft.

    • [x] PR author has checked that this PR works as intended and doesn't break existing features: https://wiki.revolutionarygamesstudio.com/wiki/Testing_Checklist (this is important as to not waste the time of Thrive team members reviewing this PR)
    • [x] Initial code review passed (this and further items should not be checked by the PR author)
    • [x] Functionality is confirmed working by another person (see above checklist link)
    • [x] Final code review is passed and code conforms to the styleguide.

    Before merging all CI jobs should finish on this PR without errors, if there are automatically detected style issues they should be fixed by the PR author. Merging must follow our styleguide.

  • Refactor ColorPicker logic & theme

    Refactor ColorPicker logic & theme

    Fixes #2452, fixes #2456, fixes #2018 Closes #2429

    Progress Checklist

    Note: before starting this checklist the issue should be marked as non-draft.

    • [x] PR author has checked that this PR works as intended and doesn't break existing features: https://wiki.revolutionarygamesstudio.com/wiki/Testing_Checklist (this is important as to not waste the time of Thrive team members reviewing this PR)
    • [x] Initial code review passed
    • [x] Functionality is confirmed working by another person (see above checklist link)
    • [x] Final code review is passed and code conforms to the styleguide.

    Before merging all CI jobs should finish on this PR without errors, if there are automatically detected style issues they should be fixed by the PR author.

  • Ogre 2.0 support

    Ogre 2.0 support

    The current version of Thrive fails to compile with Ogre 2.0. I tried to fix this, but it seems that Ogre Ogg Sound needs quite significant changes to work (because it directly messes with Ogre::MovableObjects) I already made CMake find a matching CEGUI version for Ogre. Code here: https://github.com/hhyyrylainen/Thrive/tree/Ogre2

    At this point it seems that it would be equally hard to get a grasp of how Ogre Ogg internals work as it would be to change audio libraries. I've had my eye on this one for a while now: https://github.com/R4stl1n/cAudio It seems that it would be pretty easy to create a component/entity that has an Ogre::SceneNode whose movement then controlled audio.

    Would it be possible to add that as a dependency? Or at least as a requirement for using newer Ogre versions.

  • Implementation of custom collision events.

    Implementation of custom collision events.

    This is a solution for #62 It should work (haven't tested yet, will do tomorrow).

    Collisions are handled on entity level.

    There are some questionable design choices in here that were hard to find a clean solution to.

    Most of the ugly is summed up with this line: Game::instance().engine().collisionSystem().addCollision(obj1, obj2); from forced bullet related global function (atleast invisible outside compilation unit).

    Another "ugly" is a Function object to the properties of RigidBodyComponent, which doesn't seem to belong.

    Edit: It wont work until i call setUserPointer when adding/creating RigidBodyComponents

  • Bacteria

    Bacteria

    Small entities that serve as compound bags and simple processors. This issue serves mostly to get basic ones into the game, so here are a bunch of features of these bacteria which could be done later:

    • Swim around (run-and-tumble behaviour, of course)
    • Aggregate in clumps, strings, and networks
    • Perhaps use particle system
  • Unable to compile under Arch Linux

    Unable to compile under Arch Linux

    I've installed all the libs listed under the readme.md from this repository, but the error while cmake persists:

    -- Finding CEGUI version 9999 for Ogre version 1.9.0
    Could not located CEGUI.h
    Could not located Renderer.h
    Could not located CEGUIBase-9999_d
    Could not located CEGUIOgreRenderer-9999_d
    CMake Error at cmake_modules/FindCEGUI.cmake:176 (MESSAGE):
      Error(s) during CEGUI detection!
    Call Stack (most recent call first):
      CMakeLists.txt:159 (find_package)
    
    
    CMake Error at /usr/share/cmake-3.4/Modules/FindPackageHandleStandardArgs.cmake:148 (message):
      Could NOT find CEGUI (missing: CEGUI_LIBRARY CEGUI_INCLUDE_DIR)
    Call Stack (most recent call first):
      /usr/share/cmake-3.4/Modules/FindPackageHandleStandardArgs.cmake:388 (_FPHSA_FAILURE_MESSAGE)
      cmake_modules/FindCEGUI.cmake:180 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
      CMakeLists.txt:159 (find_package)
    

    Strangely enough, CEGUI is installed:

    [ptkato@laptop build]$ sudo pacman -Ss cegui
    community/cegui 0.8.4-12 [installed]
        A free library providing windowing and widgets for graphics
        APIs/engines
    community/silly 0.1.0-7 [installed]
        Simple Image Loading LibrarY, a part of the CEGUI project
    

    Any clues?

  • Assign new tidepool patch to tidepool (One-line change)

    Assign new tidepool patch to tidepool (One-line change)

    Fixes #3969

    Progress Checklist

    Note: before starting this checklist the PR should be marked as non-draft.

    • [x] PR author has checked that this PR works as intended and doesn't break existing features: https://wiki.revolutionarygamesstudio.com/wiki/Testing_Checklist (this is important as to not waste the time of Thrive team members reviewing this PR)
    • [ ] Initial code review passed (this and further items should not be checked by the PR author)
    • [ ] Functionality is confirmed working by another person (see above checklist link)
    • [ ] Final code review is passed and code conforms to the styleguide.

    Before merging all CI jobs should finish on this PR without errors, if there are automatically detected style issues they should be fixed by the PR author. Merging must follow our styleguide.

  • Fixed equality comparisons for process speed data when processes change

    Fixed equality comparisons for process speed data when processes change

    Brief Description of What This PR Does

    this should fix the process panel stopping updating

    Related Issues

    fixes #3898 closes #3955

    Progress Checklist

    Note: before starting this checklist the PR should be marked as non-draft.

    • [x] PR author has checked that this PR works as intended and doesn't break existing features: https://wiki.revolutionarygamesstudio.com/wiki/Testing_Checklist (this is important as to not waste the time of Thrive team members reviewing this PR)
    • [ ] Initial code review passed (this and further items should not be checked by the PR author)
    • [ ] Functionality is confirmed working by another person (see above checklist link)
    • [ ] Final code review is passed and code conforms to the styleguide.

    Before merging all CI jobs should finish on this PR without errors, if there are automatically detected style issues they should be fixed by the PR author. Merging must follow our styleguide.

  • Make two fields in MicrobeStage not be saved that don't need to

    Make two fields in MicrobeStage not be saved that don't need to

    elapsedSinceLightLevelUpdate and at least one other field stores just very basic timing information that doesn't need to be saved at all, and instead can just be loaded as 0 to immediately update the data they are guarding against updating too often.

  • Seed `1304240137` generates no tidepool

    Seed `1304240137` generates no tidepool

    The second crash I've encontered. This time I remembered to save the seed.

    (Refer to #3966)

    Commit I played on is 618dc01bf795ce96af56198ab40bc91f4bd06244

    ------------ Begin of Unhandled Exception Log ------------
    The following exception prevented the game from running:
    
    System.InvalidOperationException: No tidepool patch created
      at PatchMapGenerator.Generate (WorldGenerationSettings settings, Species defaultSpecies, System.Random random) [0x003b3] in /home/ajax/source/Thrive/src/microbe_stage/PatchMapGenerator.cs:152 
      at GameWorld..ctor (WorldGenerationSettings settings, Species startingSpecies) [0x00088] in /home/ajax/source/Thrive/src/general/GameWorld.cs:78 
      at GameProperties..ctor (WorldGenerationSettings settings, Species startingSpecies) [0x0001d] in /home/ajax/source/Thrive/src/general/GameProperties.cs:22 
      at GameProperties.StartNewMicrobeGame (WorldGenerationSettings settings, System.Boolean freebuild, Species startingSpecies) [0x00001] in /home/ajax/source/Thrive/src/general/GameProperties.cs:64 
      at NewGameSettings+<>c__DisplayClass105_0.<OnConfirmPressed>b__0 () [0x0001e] in /home/ajax/source/Thrive/src/general/NewGameSettings.cs:499 
      at TransitionManager+Sequence.StartNext () [0x000a1] in /home/ajax/source/Thrive/src/gui_common/TransitionManager.cs:262 
      at TransitionManager+Sequence.Process () [0x000ab] in /home/ajax/source/Thrive/src/gui_common/TransitionManager.cs:232 
      at TransitionManager._Process (System.Single delta) [0x00020] in /home/ajax/source/Thrive/src/gui_common/TransitionManager.cs:76 
    
    Please provide us with this log, thank you.
    ------------  End of Unhandled Exception Log  ------------
    
  • Radiotrophy prototype

    Radiotrophy prototype

    Brief Description of What This PR Does

    Very very rough prototype for radiotrophy.

    Related Issues

    N/A

    Progress Checklist

    Note: before starting this checklist the PR should be marked as non-draft.

    • [ ] PR author has checked that this PR works as intended and doesn't break existing features: https://wiki.revolutionarygamesstudio.com/wiki/Testing_Checklist (this is important as to not waste the time of Thrive team members reviewing this PR)
    • [ ] Initial code review passed (this and further items should not be checked by the PR author)
    • [ ] Functionality is confirmed working by another person (see above checklist link)
    • [ ] Final code review is passed and code conforms to the styleguide.

    Before merging all CI jobs should finish on this PR without errors, if there are automatically detected style issues they should be fixed by the PR author. Merging must follow our styleguide.

  • Freebuild mode support for EvolutionaryTree & multi-world view for AutoEvoExploringTool

    Freebuild mode support for EvolutionaryTree & multi-world view for AutoEvoExploringTool

    Related Issues

    Fixes #3962

    Progress Checklist

    Note: before starting this checklist the PR should be marked as non-draft.

    • [x] Added freebuild mode support to thriveopedia.
    • [x] Fixed a bug introduced by Oliveriver who removes a node from evolutionary tree and queue-freed it when it can be some other one's parent (still referenced).
    • [ ] Add world view to auto-evo exploring tool
    • [ ] Add world exporting system
    • [ ] PR author has checked that this PR works as intended and doesn't break existing features: https://wiki.revolutionarygamesstudio.com/wiki/Testing_Checklist (this is important as to not waste the time of Thrive team members reviewing this PR)
    • [ ] Initial code review passed (this and further items should not be checked by the PR author)
    • [ ] Functionality is confirmed working by another person (see above checklist link)
    • [ ] Final code review is passed and code conforms to the styleguide.

    Before merging all CI jobs should finish on this PR without errors, if there are automatically detected style issues they should be fixed by the PR author. Merging must follow our styleguide.

Dabulang is an interpreted object-oriented programming language aimed towards game development.

Dabulang (ダブ言語) Dabulang is an interpreted object-oriented programming language aimed towards game development. The language's standard library has a

Sep 14, 2022
Tcell-game-template - A small template repository for simple tcell based games

tcell game template This is a template repository used for making small terminal

Jan 22, 2022
Arkanoid game in Go using Ebiten game engine with ECS.
Arkanoid game in Go using Ebiten game engine with ECS.

Arkanoid-go Arkanoid game in Go using Ebiten game engine with ECS. You must have Git LFS installed when cloning the repository to download assets. See

Oct 9, 2022
AircraftWar - a game powered by Go+ spx game engine
AircraftWar - a game powered by Go+ spx game engine

AircraftWar - a game powered by Go+ spx game engine How to run Download Go+ and build it. See https://github.com/goplus/gop#how-to-build. Download thi

Jan 5, 2022
FlappyCalf - a game powered by Go+ spx game engine
FlappyCalf - a game powered by Go+ spx game engine

FlappyCalf - a game powered by Go+ spx game engine How to run Download Go+ and build it. See https://github.com/goplus/gop#how-to-build. Download this

Nov 6, 2022
FlappyCalf - a game powered by Go+ spx game engine
FlappyCalf - a game powered by Go+ spx game engine

FlappyCalf - a game powered by Go+ spx game engine How to run Download Go+ and build it. See https://github.com/goplus/gop#how-to-build. Download this

Nov 6, 2022
MazePlay - a game powered by Go+ spx game engine
MazePlay - a game powered by Go+ spx game engine

MazePlay - a game powered by Go+ spx game engine How to run Download Go+ and build it. See https://github.com/goplus/gop#how-to-build. Download this g

Dec 16, 2021
A simple game that I created with Ebiten game library as a way to teach myself Go. Enjoy!
A simple game that I created with Ebiten game library as a way to teach myself Go. Enjoy!

galactic-asteroid-belt Overview A simple game that I created with Ebiten game library as a way to teach myself Go. Enjoy! Run To run, you will need Go

Dec 2, 2021
RundQuiz-Game - This is a Go exercise that implements and builds a quiz game from a list of math questions in a CSV file.

Go RundQuiz Game Exercise details This exercise is broken into two parts to help simplify the process of explaining it as well as to make it easier to

Jan 5, 2022
A dead simple 2D game library for Go
A dead simple 2D game library for Go

Ebiten (v2) A dead simple 2D game library for Go Ebiten is an open source game library for the Go programming language. Ebiten's simple API allows you

Dec 28, 2022
Engo is an open-source 2D game engine written in Go.

Engo A cross-platform game engine written in Go following an interpretation of the Entity Component System paradigm. Engo is currently compilable for

Dec 26, 2022
Go 3D Game Engine
Go 3D Game Engine

G3N - Go 3D Game Engine G3N (pronounced "gen") is an OpenGL 3D Game Engine written in Go. It can be used to write cross-platform Go applications that

Jan 9, 2023
A Game Server Skeleton in golang.
A Game Server Skeleton in golang.

A game server skeleton implemented with golang. 注意(NOTICE) 欢迎加入QQ群: 459420581 (Gopher成都,讨论一切与go有关的话题) gonet/2 gonet1已停止维护(I no longer maintain this, p

Dec 26, 2022
Scalable Distributed Game Server Engine with Hot Swapping in Golang
Scalable Distributed Game Server Engine with Hot Swapping in Golang

GoWorld Scalable Distributed Game Server Engine with Hot Reload in Golang Features Architecture Introduction Get GoWorld Manage GoWorld Servers Demos

Dec 25, 2022
A game server framework in Go (golang)

Leaf A pragmatic game server framework in Go (golang). Features Extremely easy to use Reliable Multicore support Modularity Community QQ 群:376389675 D

Jan 2, 2023
Lightweight, facility, high performance golang based game server framework
Lightweight, facility, high performance golang based game server framework

Nano Nano is an easy to use, fast, lightweight game server networking library for Go. It provides a core network architecture and a series of tools an

Jan 1, 2023
A pure Go game engine
A pure Go game engine

Oak A pure Go game engine Table of Contents Installation Motivation Features Support Quick Start Implementation and Examples Finished Games Installati

Jan 8, 2023
Scalable game server framework with clustering support and client libraries for iOS, Android, Unity and others through the C SDK.

pitaya Pitaya is an simple, fast and lightweight game server framework with clustering support and client libraries for iOS, Android, Unity and others

Jan 2, 2023
A hand-crafted 2D game library in Go
A hand-crafted 2D game library in Go

Pixel A hand-crafted 2D game library in Go. Take a look into the features to see what it can do. go get github.com/faiface/pixel If you are using Mod

Dec 31, 2022