In fall 2021, I took the course TSBK03 Advanced Game Programming at Linköping University. It consisted of a series of four labs as well as a project. The course covered topics within computer graphics implemented in C++ and OpenGL.
The project was made by my project partner and I, and it explores how the destruction of 2D objects, such as walls and glass planes, can be simulated realistically. This is done with 2D Voronoi diagrams using Fortune's algorithm in C++ and OpenGL. The generated fragments are extruded into 3D and simulated with Bullet Physics as rigid bodies. Different patterns are implemented for the distribution of points. The resulting simulation provides a semi-realistic destruction of objects in real-time. My partner and I did every step of the way together in order for us both to understand every part.


The course TNM084 Procedural Images, taken in fall 2021, consisted of four labs and an individual project. The course covered topics within computer graphics such as procedural generation.
This project explores how a tree can be created with the use of a Lindenmayer system (L-system) and instancing. It also investigates how noise can be applied to a plane to simulate snow as well as the simulation of falling snowflakes. For the terrain, Fractal Brownian Noise has been used. Instancing and billboards were used to simulate the snowflakes. For the tree, an L-system was created and used, as well as instancing for the branches and leaves to increase the performance. The result of this project is a web application built with TypeScript and WebGL that runs in real-time. The project resulted in a semi-realistic simulation of a tree in a snowy environment.


The course TNM079 Modelling and Animation at Linköping University, taken by me during the spring of 2021, consisted of a series of six labs. The course covered topics within computer graphics implemented in C++ and OpenGL.
The first report studies the half-edge mesh data structure, as well as physical attributes and basic mesh calculations such as curvature, vertex normals, mesh area and mesh volume, among other methods to compute the mesh structure. The second report studies the implementation of decimation of a mesh using the quadric error metric that allowed for multiple analyses of the correctness of newly places vertices when collapsing a specific vertex and the cost of decimating. The third report covers the topic of smooth surfaces and curves in computer graphics, and subdivision curves and surfaces are studied as an approximation thereof. The fourth report covers the implementation of implicit surfaces through a modeling framework called constructive solid geometry (CSG). The fifth report studies level-set methods and the implementation of a level-set framework. The sixth and final report studies the creation of a simulation based on the Navier-Stokes equations in order to simulate fluid.

Images from the fluid simulation in lab six, with output from OpenGL and post-processing in Blender.
The project, created during spring 2020 in the course TNM085 Modeling Project, is a simulation of animal flocking behaviour, also known as Boids. The simulation was first implemented in MATLAB in 2D, and thereafter in JavaScript with three.js.
The project was conducted in collaboration with three project partners, and we worked together every step of the way to ensure that everyone understood the assignment.


A project made for the courses TDDD23 Design and Programming of Computer Games and TNM095 Artificial Intelligence for Interactive Media. Games and AI are becoming more and more integrated to give the user a better experience and make games more fun to play. The aim of this project was to make a 2D platformer game, where the player has access to an artificially intelligent book that can classify doodle drawings using a trained neural network. This is a game that challenges your creativity and gives you a freedom to play the game however you want to play it and solve problems however you want to solve it. The project started with an attempt to build our own convolutional neural network that uses the ”Quick, Draw!" dataset.
Due to lack of access to powerful GPU/TPUs to train the large dataset, the number of classes was reduced to 50 instead of 345 and only contained animals. However, the final game uses a pre-trained model called DoodleNet to ensure fun and high quality gameplay. There are three ways to play this game: Draw your way through it (draw items and spawn as objects), say the object's name or write the object's name. Since we say "A picture is worth a thousand words", we made drawn objects more powerful. For weapons, they deal more damage, for vehicles they are faster and so on.
The project, created spring 2020, resulted in a multiplayer game for 50 to 100 players where each player connects to the game through a mobile phone device. Each character is a diver whos mission is to gather plastics in an ocean where the environment is designed to best grasp the format of the dome screen. The game was developed using C++ and OpenGL, and communication was handled with node.js and websockets. The internal projection in the dome theater was handled by the tool SGCT that was provided by Linköping University. The game was designed as entertainment before the actual dome screen showing at Visualiseringscenter C in Norrköping.
My contribution to the project was specifically the handling of the communication between the game and webserver, as well as the handling of the steering data and the different colors of the players in the game, together with another team member. The steering was especially interesting to implement since it required consideration of the shape of the dome.


Game of Kåken was a group project in the course TNM061 - 3D Computer Graphics, created in spring 2019. The group consisted of six students, and we made a Game of Thrones inspired intro, depicting the building Kåkenhus at Campus Norrköping emerging from the ground. The blueprints of the building was used to create a scalable model, and the 3D-modelling was created in 3DsMax.
My contribution to the project was specifically creating the different blocks of the building with realistic heights, as well as adding texture to them. I also created the landscape, water, and light in the scene. Finally, I created the animations and matched them with the music.


If you are interested in working with me or have any questions, feel free to contact me. You can find links to my Github and Linkedin as well as my email adress at the bottom of this page.
Iris Kotsinas © 2022