Inspiration

I took inspiration from Primer's videos on Youtube, in which he uses computer models to simulate evolution, epidemics, and other such interesting concepts in a visual manner. Borrowing from this hackathon's theme of sharks, I decided that it would be an interesting idea to create such a simulation in an 3 dimensional, aquatic scenario.

What it does

AquaSim is a very simple, stripped down, data based simulation of aquatic animal behaviors. It generates a 5*5*5 grid, with some fish swimming around in it. There are food tiles scattered around the space, and the fish behave by swimming around the grid and eating food. Time progresses by iterating through "turns". Each turn, the positions, fullness, and age of each fish are printed to a console, as well as the positions of every food tile.

How we built it

It is a simple C++ console application with 3 main modules. The main game object, the world object, and a collection of entity objects. It was not a very complex project from a technical standpoint, but the main technical focus of the project was not on the technologies, but rather on the logical and mathematical structure.

Challenges we ran into

The biggest challenge that I encountered was the lack of time that I was given. This was the first hackathon that I have ever attended, and I had other commitments over the weekend that I had to attend to, leaving less than optimal time for hacking. However from this, I learned a great deal about time management and organization, and plan to only improve these soft skills from here on out.

Accomplishments that we're proud of

I am proud of the fact that I was able to accomplish so much of what I believed to be a nearly insurmountable task in such a short stretch of time.

What we learned

I learned much about the use of vectors and arrays in C++, which are two extremely important data structures to have a solid grasp on when using the language, and as mentioned above, I learned a lot about managing my time and effort.

What's next for AquaSim

There is much to be done from here, as this is a very incomplete project. At the top of this to-do list is an actual input system that determines the initial state of the program. I could also probably build a more robust, possibly graphical display of the simulation, to make it more clear what is going on within the program. I would also like to add an element of evolution at some point, where traits vary from generation to generation, as well as carnivorous fish.

Built With

Share this project:

Updates