I loved to look at the ancient vector graphics games, and I thought It would be really cool if I could try and make one in an as low level language as possible. I would have used C, but C++ has class support, which makes it easier to simulate large groups of people.

The project executable is included in the github link and I HIGHLY suggest you give it a try

(if you do happen to get the executable, make sure to have SDL.dll in the same directory as it)

What it does

My project simulates COVID-19 in 3 distinct stages, each with new factors that change the way everything works.

How we built it

I built the project by myself, using a graphics library called BUGL. To be as true as possible to the original programmers of the 80s, I only used per pixel calculations, which means that everything you see was done by the pixel. I even had to write my own line drawing algorithm, which turned out to be very hard to do. I also reinvented the buffer, by making a massive 2-D array of PixelStates, which every frame, I would copy over to the physical screen. Unfortunately, this slowed everything down, but I think It adds to the originality and makes it look more authentically vintage.

Challenges we ran into

The line drawing algorithm had to be the HARDEST thing to write. I had to account for every possible line that could be drawn, and ended up spending more time fixing my line drawing algorithm than actually making the project.

Another problem was getting the Humans to move naturally in each simulation, in the earliest prototypes, humans would jitter all over the screen, and it would look terrible. It took many tries to get them to look right.

Accomplishments that we're proud of

I used BUGL (Bailey's Utility and Graphics Library), my own graphics library (built on SDL), to do all my graphics work, which is a big deal to me, since it means my graphics library is finally good enough to use.

What we learned

I learned that drawing lines is extremely non-trivial, and I also learned how to scale simulated vector graphics. What I learned will come in very handy for any 3-D projects I may attempt in the future.

Built With

Share this project: