Fixed is a strong word - I hacked around a strange problem I was encountering where Jam would always fail to scan libraries for object dependencies. This would result in library rebuilds every time Jam was run, which is super shitty. Now, jam will leave the .o files alongside the .a files so it doesn't have to scan the archive. This isn't a true fix, but it gets the job done. Building when you've only changed a few files is now massively faster. I also found out how to enable parallel compiliation, so even full rebuilds are much quicker ('jam -j4').
|7 years ago|
|assets||7 years ago|
|gamedata||8 years ago|
|src||7 years ago|
|thirdParty||7 years ago|
|.gitignore||7 years ago|
|.gitmodules||7 years ago|
|Jamfile||7 years ago|
|Jamrules||7 years ago|
|LICENSE||8 years ago|
|README.md||7 years ago|
An open world action adventure game with emergent, fully simulated AI
Interested in working on a project with me? Galavant is a game intended to procedurally generate interesting agents and AI instead of fancy terrain. It's a big undertaking, but I feel it is the future in games. Many games have beautiful and complex worlds, but very, very few have interesting inhabitants.
With my current design, agents are based on Maslow's hierarchy of needs. This makes it quite easy to have diverse behaviours and emergent results - for example, if you build a wall around a town full of people and burn their crops, they will eventually start starving and might even resort to cannibalism!
Galavant is basically Horizon v2. I coded myself into a bit of a quagmire in Horizon, so I decided I would be more productive if I started over.
Galavant uses Flatbuffers. Before trying to build, make sure to initialize it:
git submodule update --init --recursive
Then run cmake in
Jam is used as the build system for Galavant. I used to use makefiles in the Horizon iteration of this project, and I hated them. Jam is much easier to use and takes much less work to get a project set up. If people actually become interested in this project, I can invest some time in cmake-ifying it for more standard building. If you're willing to try building using Jam, you may have to edit Jamrules to set your preferred compiler (the default is g++).
To build with jam, first install jam:
sudo apt-get install jam
Then run jam (in galavant/ is fine):
For vastly faster build times, add
-j plus the number of CPU cores on your machine, e.g.:
Galavant uses features of C++11.
The following libraries are required by Galavant and included in /thirdParty:
- OpenSimplexNoise, created by Arthur Tombs (public domain)
- Flatbuffers, created by Google/Fun Propulsion Labs (Apache License, v2.0)
- Catch, created by various contributors/a dude named Travis (Boost Software License)
The code is MIT licensed. I intend on keeping all data (images, sprites, gameplay/design data) private, following the Doom/Quake model, but for now, consider those to be MIT Licensed.
Want to Get Involved?
Message me on Github or email me at email@example.com for any questions. I'd love some help!
There is a lot to the design of Galavant that does not fit in this readme. If you email me, I can fill you in on my goals with Galavant and what the game will actually be like.