Title Picture

My Portfolio

Introduction

My name is Andrei Anisimov and I am a Software Engineer. Since my early childhood I've been interested in computer gaming. When I grew up a bit since my 16 I've started creating game mods and maps (11 years have passed, wow!). I've collected the most recent works related to my modding and mapping activities on this page. All projects are created by me solely if other is not explicitly mentioned. Here you can find various stuff like Beat Saber maps, C++ utilities for Doom (1993) modding and mapping, a website, a board game engine (JS realization), but the list of my activites is not limited even by Miscellaneous section of this document.

Beat Saber

Subject: Beat Saber maps with embedded lyric video (optional).
Working period: 2021 - now.
Programs used:

Although this work is not about programming (except the tiny C++ tool) I put it first because it is about creating computer games and because this is the thing I'm really proud of! Here I've learned how to use mapping and video editing tools.
The largest part of the work is creation of note maps (notes are the cubes you slice in the game). Notes must be placed responsibly in order to create enjoyable gameplay. A separate task is placing map lighting effects - mappers may create different lightings for different note maps or just one lighting for all note maps made for the same song because lighting does not depend on note placement. Good maps in Beat Saber usually have five difficulty levels - this means five separated note maps and at least one light map.
Next comes the lyric video. I wanted the lyrics to be synchronized with the song just like notes/lights and I've invented by myself how to do it!
Inkscape was used to create titles - this is pretty simple. The song title "Night Vision" was created using some custom free fonts and a little drawing.
Recording the demonstration video required some Beat Saber mods and settings to place the in-game camera properly. It also required the usage of OBS Studio to record the actual video.
The creation of video preview image required some minor GIMP skills - changing color temperature, rotating and merging images, etc.
The following section contains demonstration of the map with embedded lyric video (Night Vision) and one more map.

Doom

Subject: C++ tools for Doom (1993) modding and mapping (ZDoom-based).
Working period: 2019 - 2020.
Programs used:

Another hobby of mine is creation of Doom mods and maps. It is very easy nowadays thanks to modern sourceport ZDoom (with derivatives) and modern tools.

Doom Map WIP Image
Some map (WIP) by me

ZDoom modding includes creation of new maps (e.g. in Ultimate Doom Builder) and writing code in various computer languages created specifically for modding purposes (e.g. DECORATE, SBARINFO, ACS). To ease my life as a Doom modder I've created two C++ tools: one generates DECORATE code and the other generates Doom map pieces (road figures). These tools are designed mostly for my needs but also can be used by other Doom modders. These tools are tested, released and freely available - the source code is released on GitHub under the MIT license.

Backpack Generator Cover Image

ZDoom Backpack Generator

Status: finished and released,
Repository: https://github.com/varyier/zdoom-backpack-generator.

ZDoom provides great possibilities for modding Doom-based games. However, there is no easy way to create multiple backpacks (a backpack increases the amount of ammo a player can carry). I found a way to make multiple backpacks possible and wrote required DECORATE code. After that I created a C++ tool that can generate this DECORATE code - this is useful because the types and maximum amounts of ammo may change while a mod is being developed and rewriting this DECORATE code seems an awkward job. The tool takes the required ammo types, ammo limits and some other information to generate the required DECORATE code.

UDMF Road Generator Cover Image

ZDoom UDMF Road Generator

Status: finished and released
Repository: https://github.com/varyier/zdoom-udmf-road-generator.

For my maps I wanted smooth and perfect road figures and therefore I decided to create a generator of these figures. Maybe there is a simple way to draw these figures e.g. in Ultimate Doom Builder but I didn't find one. Combining simple 2D vector geometry and ZDoom sloping possibilities this tool can generate straight roads, road arcs and make them sloped - output is a Doom map in UDMF format. The tool takes a road data input in simple format and an optional config file to change the look of generated road figures. After generation these figures may be used in further Doom map creation process.

Pandemic

Subject: realization of a famous board game Pandemic (Javascript, console).
Status: finished and released (have some bugs).
Working period: early 2018.
Programs and technologies used:

  • Javascript - the realization is written in Javascript,
  • Node.js - core engine to run a game server instance,
  • Heroku - cloud service where a game server instance is deployed,
  • Git and GitHub - here while I was writing the source code I actively used Git to commit the changes and GitHub was used not only to store the source code but also to deploy it to Heroku platform.

Demonstration: https://v-prj0.herokuapp.com,
Repository: https://github.com/varyier/pandemic-console

This project was created in early 2018 as one of my university tasks. The teacher gave us a task to create (using certain technologies like clouds - I do not remember now) something more than just a calculator or a "Hello World!". So, I created this - fully functional console variant of Pandemic board game! My teacher at first didn't believe that I've created this, lol. This realization, although is fully functional, is barely tested and has some bugs. The key feature of this realization is that several players can play the game! Although the multiplayer code is a bit lame and there is a single game instance, still several players can play Pandemic though Heroku platform! Usually each player receives the textual information about the current game status and actions other players take. If this does not happen automatically, a player can type "/info" command to observe the current game status.

Magic: The Gathering

Subject: a website dedicated to Magic: The Gathering board game.
Status: abandoned.
Working period: 2018 - 2019.
Technologies and Programs used:

  • Denwer (Rus) - the package that allows developers to run and debug websites on their PCs,
  • HTML/CSS/JS - website frontend,
  • PHP - website backend,
  • Joomla - website template,
  • vis.js - Javascript library that helps visualizing graphs,
  • Visual Studio 2017 Community Edition (C++ compiler) - creation of a tool that translates the data of mind maps into a JSON and some other tools.

Demonstration: a screenshot (see below).

With this website I wanted to simplify the search of Magic: The Gathering cards for players. In this game players need to build their decks from scratch using a predefined set of cards. There are many cards that give similar possibilities (therefore, they can be shown as an answer for a single search request). However, card search engines provide only primitive searching - by card colors, power/toughness for creature cards, mana cost, card type and card text. There is no searching even like "find me all cards that give exactly Red or Green mana (or mana of any color) and no other mana". This search is useful e.g. for the EDH format where your deck cannot even contain cards with some mana symbols. Here I tried to solve the problem by creating mind maps in which cards are organised by some attributes - this should help finding the required cards or at least this can broaden players' knowledge about the game.
I created a simple descriptive language in which I wrote a couple of these mind maps. Then I wrote a C++ tool that translates these maps into JSON format - to be used on the website. I also created this red-black-yellow weird design.
This project is too far from completion but I still hope to finish it sometime.

MTG Website Cover Image
MTG Website (mind map view)

Miscellaneous

Except the works mentioned above I've also created or at least participated in creation of:

  • this portfolio (2022) - I've edited HTML/CSS of the template by HTML5 Up,
  • a strategy game I was making with my friends (2012 - 2013) that utilized Borland C++ Builder as a graphics engine (just why not),
  • another game I was making with my friends (2015) with a help of Game Maker Studio - I was writing the code in Game Maker Language and C++ code of the game server (Windows) which interacted with a PostgreSQL database,
  • my master thesis (2018) is dedicated to Magic: The Gathering - I tried to create, I would say, a game engine (C++ language) and a special way to control it,
  • I've recently worked on a simple tool (C#) to add silence to or cut WAV files,
  • I also have a minor experience in mapping for Quake 2 (QuArK), Counter-Strike 1.6 (QuArK), Counter-Strike: Source (Valve Hammer Editor), Hexen 2 (Quark), Heroes of Might and Magic III, StarCraft (built-in editor and custom editors) and a few other games.