Coder Social home page Coder Social logo

togtja / cultsim Goto Github PK

View Code? Open in Web Editor NEW
4.0 4.0 0.0 3.42 MB

An Agent-Based Modeling framework focusing on high performance and aesthetically pleasing social simulations

License: GNU General Public License v3.0

CMake 0.56% C++ 73.74% Lua 10.21% GLSL 0.19% C 13.21% Jupyter Notebook 2.09%

cultsim's People

Contributors

carlfindahl avatar leonciquemani avatar togtja avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

cultsim's Issues

Initial Main Application Class

In GitLab by @tomashb on Jan 24, 2020, 10:36

What

A class to run our application, that has all the basic function our main application would need, like graphicsState(), scriptState(), init(), cleanUp().
This class should have our only main()

Why

  • Recommended OpenGL standard

SpdLog

In GitLab by @leonnc on Jan 24, 2020, 10:51

What

Rapid Logging tool that allows us more finetailored Logging channels both for debugging and Testing

Why

  • Cout is fairly slow
  • A sophisticated Logging tool helps us keep track of key parts of the system
  • Error logging is good to get done ASAP as smoothes out the workflow for the rest of the project

Decision system

In GitLab by @leonnc on Feb 7, 2020, 14:31

What

A system that can take in a need and create a mitigation for said need
via a goal list

Why

  • Needed to make AI intelligent in it's decision making
  • Necessary for Learning

TODO:

  • Remember to try to make a time estimate regularly
  • Label this issue
  • Assign it if you know who will do it

Sprites

In GitLab by @leonnc on Jan 24, 2020, 10:36

What

Create functionality for sprite rendering and manipulation, such as movement, scaling, and rotation

###Depends on

Why

  • Most of the 2D visualisation will be sprite based
  • These functionalities are mostly basic requirements for the AI later, as well as for the creation of most art assets

Write Tests for Existing Modules

In GitLab by @carlfindahl on Feb 7, 2020, 14:34

What

Now that testing is integrated we want to write tests for the independent systems and functions we have that are testable. Going forward we want all future code to be tested as we go, so this issue exists mostly to ensure we update existing code as we move on.

Related To:

Why

  • Tests not only act as documentation on how to use the code, but also act as requirements to ensure the code does what we want
  • We should aim to write testable code when we can in order to reason about it better.
  • Also good for our CI pipeline

LFS setup

In GitLab by @leonnc on Jan 24, 2020, 11:55

What

Set up Git's Large file system so that we can push and pull non text files

Why

  • Needed for textures and similar files

Add Copy to our file system

In GitLab by @tomashb on Jan 28, 2020, 09:20

What

Used to copy one file to another destination

Depends On;

Why

  • A useful utility to have in a file system
  • Point 2

Add texture loading

In GitLab by @carlfindahl on Jan 31, 2020, 13:21

Our renderer should be able to load textures so we can use them with the sprites

Why

  • Agents should have textures to look human etc

Create localization for strings

In GitLab by @carlfindahl on Jan 31, 2020, 13:25

Our users might potentially not all be English speakers, so we should have a file of localized strings that can be used to fetch localized strings. No shit. This should be used in all user-readable code. Logs can still use inline strings.

Why

  • Multilingual users
  • Not having to recompile to change strings

Lua Keybinding

In GitLab by @tomashb on Jan 31, 2020, 13:31

What

Set keybinding in a Lua config file

Why

  • So people can have their own keybinding

Set up ImGui with Renderer

In GitLab by @carlfindahl on Jan 24, 2020, 10:32

What

We will use ImGui as our debugging GUI. Need to download, link and hook it up with our renderer.

Why

  • ImGui is easy to use and produces results quickly

Add ability to read file directory

In GitLab by @tomashb on Feb 3, 2020, 11:03

What

Use out PhysFS wrapper to read what files directories have

Why

  • A generally nice functionality to have
  • Needed to figure out how many languages we have

Set up Events and Input Management

In GitLab by @carlfindahl on Jan 24, 2020, 10:52

What

Create some sort of input management on top of SDL.

Why

  • It will be nicer to work with
  • Will clean up main loop
  • Still reserve some input in main loop (ESC to Quit for example)

Initial Artstyle

In GitLab by @leonnc on Jan 31, 2020, 13:22

What

We need to decide on an artstyle to use for the visualisation, and begin work on drawing some of the sprites.

Why

  • We need to actually start putting some work into the quality of our Visualisation
  • This can be done independently of most other things, so we might as well get started with it

Create GLM cmake

In GitLab by @tomashb on Jan 24, 2020, 13:28

What

GLM is a math library for OpenGL

Why

  • To make math easier

Use EnTT for rendering

In GitLab by @carlfindahl on Jan 31, 2020, 13:30

Instead of calling draw in our draw function we should use EnTT to organize our systems and use components + systems to draw our entities.

Depends On;

Why

  • We need to hook ECS with our rendering

Create initial Components

In GitLab by @carlfindahl on Jan 31, 2020, 13:32

Create some initial components for our ECS. Like position, velocity, color, shape, rendering etc so we can start making systems to apply to them.

Improve how we make primitives

In GitLab by @carlfindahl on Feb 3, 2020, 17:28

Currently, basic shapes like a quad is being hard coded. We should seek a system that makes this more streamlined.

Why

  • It's worthless work to hard code every kind of primitive
  • We can parameterize the primitive generation
  • It will be more readable in the long run

Integrate Needs

In GitLab by @carlfindahl on Feb 7, 2020, 14:31

What

AI Agents will have needs and desires in order to stay healthy and survive. The need system will be a configurable way to add needs and desires to agents that can later be used in decision making and be affected by statues and such.

Depends On;

Why

  • Realistic agents have needs
  • We aim to model realistic agents
  • Needs can be simple or complex depending on the requirements of the simulation

Set up a Window

In GitLab by @carlfindahl on Jan 24, 2020, 10:49

What

We need a window to render things in. This must be set up with OpenGL 4.5 Core Profile. It should not be resizeable (by user, just programatically). We can potentially wrap it in a class since we are using SDL, to avoid the C-Interface.

Why

  • Point 1
  • Point 2

Set up CI Pipeline (now improve)

In GitLab by @tomashb on Jan 24, 2020, 11:19

What

Create a CI Pipeline that must be passed to merge into master.

06.12.2020: Basic pipelines merged. Now the rest of this issue is adding remaining features.

Why

  • Make sure all our code pass compiling
  • Master will always compile
  • Add clang-tidy and clang-format
  • Add cppcheck
  • Add codecoverage

Scene/State-Manager

In GitLab by @leonnc on Jan 31, 2020, 13:34

What

Create a manager that keeps track of the applications current state and allows us to switch between them effortlessly.

Why

  • Enables us to create an options menu, as well as a startup menu
  • Serves as a cornerstone for a lot of the application

Link and set up EnTT with CMake

In GitLab by @carlfindahl on Jan 24, 2020, 10:41

What

We are going to use EnTT, so we must ensure it is available via CMake and link it with

Why

  • It's a fast ECS
  • Uses CMake so quick to set up

Modernize ImGui OpenGL code to v4.5

In GitLab by @carlfindahl on Jan 31, 2020, 13:28

ImGui OpenGL implementation uses ancient OpenGL, and to increase compatibility with our program and hopefully reduce ImGui overhead we should improve the file.

Why

  • Make the ImGui code more understandable and readable
  • Make it more compatible with GL 4.5 that we are using

Add Texture on Sprites

In GitLab by @tomashb on Jan 31, 2020, 13:27

What

To be able to load textures onto our sprites

Depends On;

Why

  • We can use our own texture, to do better visualization

Preferrences Implementation

In GitLab by @leonnc on Jan 31, 2020, 13:31

What

Write a preferences file that allows us to store chosen options such as window size and volume

Why

  • Frees us from having to constantly mess with the constants in our code to change window sizes and other similar options
  • Gets our feet wet with Lua integration

Sleep and Scavenge scenario

In GitLab by @tomashb on Feb 7, 2020, 14:33

What

Create a simple scenario to test out our system and finish up on our prototype

Depends On;

Why

  • To test out the AI feature set

Set up Sphinx, Doxygen and Breath

In GitLab by @tomashb on Jan 24, 2020, 10:48

What

To do our documentation we want to use:

  • Doxygen to generate XML that becomes HTML
  • Sphinx makes it pretty
  • Breath is the bridge between Doxygen and Sphinx

Why

  • These tools make it easier to make our documentation
  • These tools make our documentation look good without much work

Add byte reading to filesystem

In GitLab by @carlfindahl on Feb 3, 2020, 10:03

Currently, filesystem only supports text reading. We need to be able to read data as bytes too. For example for images and audio. So this should be added to the header.

Set up Lua State in Application

In GitLab by @carlfindahl on Jan 24, 2020, 10:44

What

We need to create a Lua State in our Main Application so we can run scripts and have it affect the simulation world.

Depends On

Why

  • We are scripting with Lua

Scale down EnTT systems

In GitLab by @leonnc on Feb 7, 2020, 14:38

What

Make systems smaller and more specialised to promote multithreading

Why

  • Makes Systems easier to multithread
  • Decouples potentially unnecessary functionality

Start on Graph Rendering

In GitLab by @carlfindahl on Jan 24, 2020, 10:38

What

Our application will be rendering graphs and charts. We need to figure out how to do so efficiently and aesthetically pleasing.

Why

  • Bar Chart
  • Line Char
  • Pie Chart

Animation Loading

In GitLab by @leonnc on Jan 31, 2020, 13:25

What

Functionality to draw animations onto sprites efficiently

Depends On;

Why

  • Animations improve the visual experience of the simulation

Configure Preferences from Lua

In GitLab by @carlfindahl on Jan 31, 2020, 13:27

Our program should be configurable from Lua, but also from a GUI. For now, create a file that we can read from to set preferences.

Depends On;

  • PREF

Why

  • Configuration from files is user friendly
  • Lua is a readable format and we already use it and parse it so no need for another data format

Set up Precommits

In GitLab by @leonnc on Jan 24, 2020, 11:18

What

Runs a number of operations on the commited code. If any of them fail, the commit is rejected.

Why

  • Aids in enforcing coding style
  • Helps ensure that functional code without issues is pushed

Keep code tidy

In GitLab by @carlfindahl on Feb 4, 2020, 16:40

This will be a (never-closing) issue for general small fixes that result from code inspection, static analysis tools or similar. It should not be used for everything, but whenever small bits of code change to increase readability or fix aforementioned issues, it is nice to hook it up to an issue so we understand that the purpose is there.

PhysFS Setup

In GitLab by @leonnc on Jan 24, 2020, 10:43

What

Set up the PhysFS file system

Why

  • Enable safe storage of user created files
  • All File access has to go through PhysFS

Skeleton AI Framework

In GitLab by @carlfindahl on Jan 31, 2020, 13:23

Start designing and thinking / reasoning about how AI should work and interact with our components etc.

Depends On;

  • #15 Because AI will have to fabricate events / inputs

Why

  • AI is essential so we must start to think about this

Wrap PhysFS

In GitLab by @tomashb on Jan 24, 2020, 10:40

What

Wrapping the PhysFS library in our own wrapper

Why

  • Writing PhysFS takes a lot of line/time

Refactor Sprite rendering

In GitLab by @tomashb on Jan 31, 2020, 13:35

What

There is a frame issue going on in our Sprite rendering, and we want to get to the bottom of it

Why

  • To increase performance
  • It makes no sense for it go as slow as it do

Debug

In GitLab by @leonnc on Jan 24, 2020, 10:38

What

Create debug functions via ImGui and potentially via SpdLog, as well as Debug Geometry

###Depends On

Why

  • Enable easy error logging
  • Aid in bug discovery

Basic Agents

In GitLab by @leonnc on Jan 31, 2020, 13:28

What

Create a basic intelligent agent system which will later be used to simulate interactions and decision making among our actors in the simulation

Depends On;

Why

  • The sooner we get some basic agents up and running, the sooner will we have somethign to benchmark against
  • This will help us further estimate how much performance we need for the simulation part of our visual simulation

Pathfinding: Avoidance

In GitLab by @leonnc on Feb 7, 2020, 14:35

What

A pathfinding algorithm that allows our agents to move in a straight line towards their destination while avoiding colisions with each other

Depends On;

Why

  • We need some better pathfinding than random movement

Add debug variable to constants

In GitLab by @carlfindahl on Feb 3, 2020, 11:22

Add a constexpr debug variable to the constants file so we can use compile time if statments to conditionally compile code based on this variable.

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.