The second year of the university

The Programming, Algorithms and Data Structures Module

During the programming module, there was coursework that required creating a Scrabble game with C++. The task was to read, filter and then sort a given text file that is around 400 thousand words long. Then, there was a need to generate and then display the Scrabble board with multipliers. After that, the task asked for the ability to validate (not only if the word itself is legal, but also if newly created words are legal as well) and then place a word given by the player. After these tasks were done the following step was to create a simple game loop that would allow the player to place a word from a letter held in hand and calculate the score depending on where the word was placed. And the final task asked for an AI that could compete with the player.

Most of the tasks were easy to do, however, there were some difficulties keeping code well structured, scalable and having classes have as few dependencies from each other as possible. To keep sure that the code was saved and in order to prevent some problems source control was used. In the end, I was successful with accomplishing all the mentioned tasks, even though in the version, that was submitted for grading, the AI caused a massive memory leak, which was later fixed removing unnecessary returned pointers and by introducing smart pointers (it was first fixed by using smart pointers, but after some thinking, it was apparent that removing the return for pointers could have also solved the problem).

When accomplishing the mentioned tasks I learned a lot about programming with C++, things such as using header files, creating templates, overriding operators for classes, using regular and smart pointers, what can cause a memory leak when using a regular pointer, using iterators, general best practices whilst programming with C++, various array-like behaviours in std::vector.

GitHub link to the Scrabble project.

Module grade – 87.75%

Concept Development for Games Design

As the name suggests the module taught me about developing a concept for a video game, which included learning how to write a High Concept document, how to design level, how to choose the best monetization for a game and similar things. This module’s coursework required students to create an idea for a game and the based on that idea create a High Concept Document, create a level design document and, finally, make a video trailer.

Additionally, to all mention things during this module I learnt a lot about quaternions and rotations in general for Unity as my general game idea was about rotations, also, about cinemachine plugin for unity as most of the shots in the video trailer were done using it. I also gathered a lot of knowledge about unity animations, how to control animation state flow and various similar things.

Created trailer.

Module grade – 83%

Cross-platform Application Development with C#

The main focus of this module was to create a mobile application while using C# and Xamarin forms. The app was about gathering hydrometeorological data for a provided location. The functionality for the app was separated into:

  • Data saving
    All the data was being save locally, but first it was converted into a JSONstructure and then encrypted using binary encoder and only then it was saved in a local environment
  • Location
    Location could have been picked up by navigating and the pressing on wanted location using a map or just input the coordinates of the location. All of this was done by using Google Map API. Every location was stored as an object containing its name, latitude, longitude and a bool flag for is it a primary location. A primary location is displayed on the front page. There was additional page in the app where the user can select their primary location
  • Weather data
    The weather was collected using WeatherBit API. The data received was converted from JSON to a list of objects of newly created class which contained all the required data for a single day and also stored tidal information for a given day.
  • Tidal data
    The tidal information which was times for 2 low and 2 high tides for a single day was collected from Admiralty Tidal API.

Module grade – 85%

Data and Information Retrieval

During this module, I refreshed my memories about SQL databases, but also learned a lot about NoSQL databases, how to pick the correct one when facing various problems.

Module grade – 71.5%.

Graphics and Physics programming

This project was combined coursework between two different modules: graphics programming and physics programming.

Physics programming side covered creating sphere, plane, AABB, OBB colliders & triggers, including the detection and resolution between these different types, movement (both based on user input and automated) and spacial partitioning for increased performance. There was also an opportunity to switch between 3 different integration calculations: explicit Eurlers, semi-explicit Eulers and velocity varlet.

The graphics programming side covered drawing objects within the scene using OpenGL. This included using Phong model calculations, applying transformations to the scene objects, such as models, camera and light sources. The camera could also support different points of view, such as first-person POV, third-person POV and a top-down POV. A skybox that always follows the player was also implemented.

I also had a personal goal for this project – use Hungarian notation for my code, as one programmer from a game company told me that is used in the industry.

Github repository.

Physics module grade – 76%

Graphics module grade – 80.5%

Real world project

A real-world project was a project that combined students from multiple courses with different disciplines. Our team was working on an AR game that would use cards and display monsters on them. I was responsible for creating a SQL database structure and a restful WEB API for it that would handle what the game systems required.

Final database architecture contained card monster data: their texture and mesh paths, all kinds of stats like health, attack and similar. There were also systems that contained user login data and also gave out session tokens. As the game required users to be able to set up duels and see their scores – that was also set up.

The server, SQL database, .NET web app (which used database-first Entity Framework model) that was acting as an interface for the database, all were deployed and used Microsoft Azure services.

Module grade – 76%