GithubHelp home page GithubHelp logo

age-of-sources's Introduction

Age of Sources

Age of Sources is a real time strategy game spiritually in line with games like Dune 2, Command and Conquer: Red Alert, and Warhammer 40k: Dawn of War II. It depicts a war between the tanuki civilization and U.N.E.C.T.A.S., a dangerous foreign entity which is after their resources.

To fight Unectas (the leader of U.N.E.C.T.A.S.), the player will have to build a town and a varied army of cute tanukis helped by their allies (including notably mounted penguins).

How to play

Use the arrow keys to move on the map, select your units with box selection, move them to your mouse's position with right click. Use a unit's ability when it's selected by left-clicking on the grid in the bottom-right of the screen. To win, destroy the ennemy's forum.

Design

Economy

Each player must pile up resources in the form of clay and water to build their town and army. Production of resources originates from wells and furnaces and is passive. Buildings can be constructed by beavers, that can be hired from the forum, which is the only building the players originally have.

Combat

Combat is based on the famous "Rock-Paper-Scissors" system, where each kind of unit is strong against one other type, and weak against one.

Find out more

More informations on the game's design can be found (in French) on: https://docs.google.com/document/d/1IPbxiTLj0bLq1hyJecttDWtiTuiY5Pz58Ut8i5y4QXE/edit?usp=sharing

Technical details

This game's code is heavily documented in the rest of this document. That being said, it still seems relevant to discuss here one of our technical choices:

On the use of an ECS

An Entity Component System (thereafter refered to as ECS) is a data structures commonly used in game engines, that stores entities and link them to components.
A Component can be any data structure, and an entity is just an abstraction to which is associated a number of components.
Not all entities have an instance of each component, and the main benefit of the ECS is that one can get all the entities that have a specific set of components in linear time.

We decided to use an ECS as it is a great tool to structure a game, and as some of us had previous experience implementing them and working with them.

Compilation

Some dependencies are required to compile, they can be installed with sudo apt-get install libsdl2-dev libomp-dev libsdl2-ttf-dev libsdl2-mixer-dev on Debian based distributions.

Doxygen

The use of make doc requires doxygen, LateX and graphviz.

The use of the command make htmldoc requires firefox

The html documentation is also available at https://uwu-segfault.eu/2p2doc/. If the site isn't available for some reason (Microsoft Azure), please contact Louis Buisson ([email protected])

Acknowledgement

A game by Eliott Huet, Ghislain Mounier, Louis Buisson and Maxime Soldatov
Main menu artwork by Sacha Banak
Base tanuki's sprite (asset/sprites/tanuki.bmp) Chloé Huet
Uses Fira Code Nerd Font provided under the SIL OPEN FONT LICENSE Version 1.1

age-of-sources's People

Contributors

louisbui63 avatar

Stargazers

 avatar  avatar

Watchers

 avatar

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.