(Math:) Projective space visualizer

In my university module “Higher Mathematics” we learned about projective space and the different representation with the hemisphere. (Or as we lovingly called it: “salad bowl”) This was part of the basics to understand Elliptic-curve cryptography.

Since I had a hard time wrapping my head around the secondary representation of projective space, I decided to create a visualizer in the game engine I was familiar with at the time: Unity3d. I built a very crude module that can creates a 2D plane with a translucent mesh which can morph between the two representations. And I also added the intersecting lines together with the points to visualize where the points are at all times. This helped me understand the topic more deeply and didn’t take too much time to make.

Since it wasn’t planned to be a finished project, it is not really polished, but you can still find the working unity project on the GitHub repository: https://github.com/MisterIXI/projective-space-visualization

High performance and high volume processing and rendering of low-poly 3D ants in Unity3D

As an experiment to play around with multi-mesh-instancing and compute shaders in Unity, I created a small project to render as many moving 3D low-poly ants as possible at the same time. Each ant was vertically offset by a few units and each was just pseudo randomly walking until hitting the virtual boundaries of the square. This was all done in a compute shader, and the result then rendered by the mesh-instancing unity provides.

This way, it was possible to render ~900k ants moving around all visible at the same time with stable 13 FPS. (This was achieved with a AMD Ryzen 9 5900X and a NVIDIA Geforce RTX 2080 Ti) To force them to be rendered at all times, an orthographic camera from above was used, which always sees all the ants.

Here is the link to the GitHub repository.

Here is a short video clip of them in motion, but of course with that many small moving objects, the bitrate suffers very much.

Mixed reality online multiplayer board game simulator in Unity 3D

Together with a teammate, I created a multiplayer MR experience in which you can play Chess and Go. This was for the module “Windows App development” Used for this project was Unity3D, MRTK and PUN2. Check out the description and code on the GitHub repository.

The project was made to work on an Augmented Reality device such as the Microsoft HoloLens and Virtual Reality Headsets such as the HP Reverb. The idea was that two players could connect with either platform and play with each other. Initially there were plans to integrate the table recognition of the MRTK for the AR devices, but that was scrapped due to time constraints.

In the end, project had the following features:

  • peer to peer Online Multiplayer
  • AR and VR support
  • Builtin Chess and Go modes (no rules, just board and figures)
  • import of custom games with board texture, 3d models, snap positions, etc.
  • control with hand gestures for AR (Hololens)

Bananasplit

What is Bananasplit?

Bananasplit was my first “big” programming project that I actually finished. After countless small programs I created in Delphi including some sort-of games I had a goal to actually make something that has not existed before.

This program is a splitter specialized on speedrunning MKDD (Mario Kart: Double Dash!!) specifically in the ACT (All cup tour) category. After being part of that community for a while I realized the need of such a tool and started programming a prototype in Delphi with the Pascal language.

I oriented myself on the design of Livesplit and also used the open source code of it as a sort-of guidline while coding.
GoombaNL really helped me improve the design of the whole thing.

 

Why create this if stopwatches/livesplit already exist?

The reason for this program is solely to have splits for your run. This means that you can compare your segments with your record and see how well you are doing instead of relying on your feeling.

A lot of people think you can just use livesplit, but the problem is that the track order for the tracks 2 to 15 are random. Livesplit can (at least to this point) only have a fixed order of splits.
And since the tracks vary in length it does not work to use splits like “Track1, Track2, …”.
I personally like having splits, but some people don’t care about that that much.

 

You can download the program either on speedrun.com or directly here.

If you want to see the source code just shoot me an e-mail here yannik.braendle@gmail.com and I’ll gladly provide you with the project files.