GithubHelp home page GithubHelp logo

antkeeper / antkeeper-source Goto Github PK

View Code? Open in Web Editor NEW
40.0 40.0 1.0 4.74 MB

๐Ÿœ Ant colony simulation game source code

Home Page: https://antkeeper.com

License: GNU General Public License v3.0

CMake 0.53% C++ 99.19% Python 0.28%
antkeeper cpp23 game game-development game-engine gamedev indiegame simulation simulator

antkeeper-source's Introduction

Antkeeper Source

build status code quality chat

Antkeeper is an open-source 3D ant colony simulation game currently in development for Windows and Linux. Antkeeper is the passion project of solo indie game developer and myrmecophile C. J. Howard.

Get notified when the game is released by joining the mailing list at https://antkeeper.com/ or watching this repository.

Note

Antkeeper source code is licensed under GPL-3.0-or-later, but the game data required to play Antkeeper is proprietary, and can be obtained by purchasing a copy of the game when officially released.

Table of Contents

Building

Windows

Requirements:

Configure and build a Windows 64-bit release:

git clone https://github.com/antkeeper/antkeeper-source.git && cd antkeeper-source
cmake --preset windows-x64-release
cmake --build --preset windows-x64-release

Documentation

Source code documentation can be generated with Doxygen. Graphviz can optionally be used to generate dependency graphs.

The following commands configure and build the source code documentation:

cmake --preset windows-x64-release -DANTKEEPER_BUILD_DOCS=ON
cmake --build --preset windows-x64-release --target docs

Generated HTML documentation will be located at build/<platform>/docs/doxygen/html/index.html.

Contributing

Contributions are welcome! Feel free to open an issue or submit a pull request.

See the contribution guide for more details on how to contribute.

Authors

License

REUSE compliance

  • Antkeeper source code is licensed under GPL-3.0-or-later.
  • Antkeeper translations are licensed under CC-BY-SA-4.0.
  • Antkeeper game data is proprietary.

antkeeper-source's People

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  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

think-jumper

antkeeper-source's Issues

Render pass lambda captures storing outdated material variables

Currently some render passes, such as the material pass, capture material variables as shared pointers in lambdas. However, sometimes a material's variables are changed or a material with the same hash but different variables is created, causing outdated material parameters to be passed to a shader.

The whole model of storing shared pointers to material variables in lambda captures is messy, confusing, and leads to difficult-to-track bugs. The material variable and shader variable interfaces need to be redesigned to be less bug-prone and easier to use.

Also take into consideration that the individual shader uniform model should be phased out in favor of uniform buffer objects.

Q: benefits of using std::this_thread::yield()?

Hello ๐Ÿค—
Can you tell, what are the benefits of using the std::this_thread::yield function instead of the std::this_thread::sleep_for function in this context?
regards, max

		// Idle
		do
		{
			std::this_thread::yield();
			m_frame_end_time = clock_type::now();
		}
		while (m_frame_end_time < idle_time);

Integrate models with B-rep meshes.

Models and B-rep meshes currently each have their own formats and loaders. Models should be constructed by loading B-rep mesh data, then generating interleaved VBOs. Models should also hold onto B-rep data via shared pointers. This way, models could potentially determine what data to upload to their VBOs based on their material sets, or update their VBOs if the B-rep mesh is modified.

Skeleton poses perform unnecessary calculations when one or more bones are posed.

The skeleton pose classes need to be improved so that if a bone is posed, the absolute transforms and skinning matrices of its descendants will be flagged as outdated. Absolute transforms and skinning matrices should only be updated if they are requested (via a get() call) or if they are manually updated through an update() call.

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.