Email VK Tumblr Vadim „YellowAfterlife” Dyachenko


What's here and why.

Hello there.

My name is Vadim, on the internet I'm more known as YellowAfterlife, and this is my portfolio page of sorts. Click the project sections to expand information about them.

Sections marked as [ · · · ] are work-in-progress.
My role for each project is written on bottom-right of each section' header.

For smaller projects, you can also look around my blog and page.

You can also follow me on Twitter, Tumblr, or VK - I constantly post about the new interesting things that I'm working on.


GameMaker Studio 2

Fixes for HTML5 target
additional programming 2018

Fixes for HTML5 target in GMS2

Early 2018 I was commissioned to work on series of small fixes for GameMaker's HTML5 target.

Since I had limited knowledge of GameMaker's internal workings, but had a plenty of experience with GameMaker (as software) and JavaScript, my work largely consisted of fixing "support" functions (ones affecting strings, files, or data structures).

I've also done initial implementations for several new functions that would be making an appearance at a later time.

All in all this was an interesting project and it was nice to have slightly more direct impact on software that I often work with.

Affected issues can be browsed on bugtracker (assigned to me, issues I've left notes on*).


A roguelite action platformer
network programming 2017,2018

Official multiplayer mod for Caveblazers

Local coop mode had been introduced to Caveblazers in November 2017, and, having previously played the game for a number of hours, I was curious about whether it could be made to be playable online.

Initial tests were done late 2017 while the actual implementation was in on-and-off development since March 2018.

The work takes place in form of a mod that will be made available to all game owners for free.


A live-coding extension for GameMaker
development 2017


Slightly less than a year after the release of original web-based version of GMLive and work on modding system for Nuclear Throne Together, I've had an even wilder idea - as I'd already handle almost entirety of GML syntax, why stop there? If I could make a complete GML compiler+interpreter work inside of GM, I could have the game load up and execute code as it's changed, and that would be so much faster for prototyping new code in large projects.

Of course, as it usually turns out, it was still a crazy amount of work, but the result was truly impressive - you import an extension, add a single line of code to your code of interest, start up a helper app together with the game, and that's it - you can now edit the code and see it update in-game the instant you hit "save".

With 1-minute setup time and unparalleled functionality, the extension is generally regarded as something that should have been part of GameMaker itself.

Nuclear Throne

A roguelike top-down shooter.
additional programming 2017

Nuclear Throne's update 99

After working on Nuclear Throne Together for a year, I have been approached to help with development of base game, as the game's main code base had been long feature-locked due to PSN development, while NTT continued receiving fixes and improvements without needing to worry on PSN compatibility.

Therefore a suggestion was made to base the PC update on a variation of NTT source code instead, ditching online multiplayer functionality (which takes a toll on performance due to technical specifics), but maintaining bug fixes and numerous "quality of life" improvements.

A small explanation can be found in this interview with Rami Ismail of Vlambeer.

The update was released in November 2017. A smaller sub-update with fixes for discovered and forgotten issues is in the works.
Technical details can be found in a blog post by me.


A roguelite ability shooter
network programming 2017-


I'm currently helping with netcode and minor additional programming for a game called Voidigo, being made by people behind the ThunderHumor YouTube channel.

Voidigo is a roguelike shooter with emphasis on exploration and atmosphere.

The game is currently in active development, release dates yet to be announced. You can follow the game's development on Twitch (streamed live) or YouTube (archived streams); there's a Discord server for livestream chat and any other questions.

Knight Club

A multiplayer platformer fighting game.
network programming 2017-

Knight Club

Is a 2-4 player action platform-fighting game that brings traditional fighting game elements into an unlocked, free form movement playstyle.

As I have been previously working with developers on Kerfuffle, my involvement started very early on, and I've been handling most of networking for the game.

The game spots conventional connect-by-IP networking for freeware and DRM-free releases, and uses platform-specific P2P networking and matchmaking for "Deluxe" version.

Rivals of Aether

An indie fighting game.
additional network programming 2017-

Rivals of Aether

I am currently helping to migrate Rivals of Aether' netcode from "lockstep" to "rollback".

Lockstep is one of the most commonly used types of netcode organization for fighting games, real-time strategy games, mods, and emulators. It achieves fair (equal) conditions for all players through symmetry in execution - the next game frame is only processed when all player's inputs are known to each other.
That does, however, come at a price - all players are by default subjected to input delay (equal to half of average round-trip delay time), and connection issues result in game stalling.

Rollback bypasses both issues by predicting remote inputs if they are coming late, and then rewinding-replaying the game with correct inputs when they arrive.
The catch with rollback is that it is far more technically complex, requiring the game to be reorganized in a way that allows it to [re-]play multiple logical frames per one observed frame, and to implement an extremely fast (milliseconds worth) saving-loading mechanism.
So that's what I'm helping with here.

You can watch for updates on Twitter (initial announcement) or Steam.

Nidhogg 2

A sequel to award-winning fencing game.
network programming 2016-

Nidhogg 2

After helping on Nidhogg, I was invited to do netcode for the game's sequel.

Starting on network programming early into game's development was a good decision - it allowed to avoid vast majority of the issues encountered with the first game, and also to set up the game in a way that would make implementation of new features easier.

I have implemented networking and matchmaking for the PC version, and laid out the foundation for the implementation in console versions, providing support and consulting during development of ports.

Further improvements are being worked on every now and then.


Runs GML code in-browser
development 2016-


After working with GameMaker, parsers, compilers, and web-based tools for years, I have grown increasingly curious as to just how hard it is to compile GML to JavaScript.

As it turned out, pretty hard - while GML does look akin to JS, it spots substantial differences both in what is considered valid syntax and in actual workings. As a bonus, the official implementation is a big black box, meaning that any assumptions about inner workings would have to be either based on examining output code or be pure guesswork as such.

Having written numerous syntax parsers in past, I was able to mimic how GameMaker itself works very accurately - down to little-known quirks and seemingly-illegal constructs.

Having written numerous custom code transpilers and generators, I was able to make the program perform sufficient compile-time analysis and generate equivalent and fairly clean JS code for input GML.

Having worked with GameMaker's HTML5 target since it's introduction, I was able to make the generated code "link up" with a running GMS-HTML5 game, allowing it to use the built-in functions directly. And not only that, but I actually made the tool "patch up" multiple built-in functions which were not working like their non-web implementations.

Having worked with JavaScript (/ECMAScript) itself for a while as well, I was able to finetune an existing code editor plugin to behave much akin to (and, in some aspects, better than) GameMaker's code editor.

The result is a web-based piece of software which a allows the user to write and run practically any GameMaker code right in the browser. While there are, of course, some limitations, it is considered very impressive, and is something that wasn't previously thought as be possible at all.

Overall, I was likely one of the few people that could have done something like this, and did the task well.

Nuclear Throne Together

An online multiplayer mod for Nuclear Throne.
modding 2016-

Nuclear Throne Together

While my offer of collaboration to bring online multiplayer to Nuclear Throne was met with generally reasonable scepticism, the story didn't end there - half of year later my periodic investigations of GameMaker's file formats and inner workings had reached the point where it would seem like it might be possible to produce binary patches to mod select GM games.

As the initial tests have shown, assumption was correct - it was indeed possible to modify bits of the game without it breaking horribly. Not entirely unsurprisingly, what followed next turned out to be the largest reverse engineering task I had ever done.

The result, however, is impressing - I was able to implement fairly solid online multiplayer in a game without even having source code access. And not only that, but while looking over the game logic in rawest form possible I was also able to narrow down and fix a multitude of small issues that the game had.

I had also made numerous small additions (both multiplayer and convenience related) and continue to experiment with the project time to time.

Overall it is both an interesting and an unusual project. See the blog post for more information.

Indie pogo

A multiplayer pogo brawler game.
network programming 2016-2018

Indie Pogo

Indie Pogo is a platformer pogo brawler game for 2-4 players with an impressing number of cameo characters.

I've been involved with the game since April 2016, having done most of the game's networking and matchmaking systems.

The game released in July 2018 and currently enjoys a "very positive" (>80%) rating on Steam.


A multiplayer platformer fighting game.
network programming 2016-2017


Kerfuffle is a platformer fighting game for 2-4 players.

The game features a blend of traditional fighting game mechanics, best descibed by "easy to learn, hard to master" formula.

I've been helping with online multiplayer on the game since late January 2016.

As of 2017, the game is on hold.

Hive Jump

A multiplayer run ‘n gun game.
network programming 2016-2017

Hive Jump

Hive Jump is a sci-fi action platformer for 1-4 players blending run ‘n gun gameplay with strategic campaigns.

I've been helping with online multiplayer on the PC version of the game since January 2016.

Hive Jump is availble via Steam' Early Access since July 2016, full release being in January 2017.

Unfortunately, for various technical and organizational reasons, the game does not hold up as well as it could, and mostly sits here as a reminder that I sometimes do netcode for non-GameMaker games too.

Color Ninjas

A multiplayer painting action game.
development 2013,2015

Color Ninjas

Color Ninjas is a 2-player action game where the players compete to paint the field in their color while fighting the other player.
The game features a plenty of powerups and weapons ranging from shurikens and bombs to missiles and homing sharks.

The game is a collaboration between me and Max Brovko (@insweater).
Max wrote most of the game code while I've done the effects, most of the minimalistic graphics, and online multiplayer implementation.
Ninja sprites were drawn by Seth Groom.
GameJolt achievement icons were drawn by Airwolt.

Color Ninjas has an interesting development history - the game was originally made for a 2013' GameBoy Jam, but we weren't able to iron out the multiplayer at the time.
So, with the game being overdue for the jam anyway, we decided to work on it a bit more.
And then a bit more.
And so, due to both me and Max being busy enough, the spontaneous development spanned for well over a year, until it was concluded that the game has been very well playable for a while now, and should be released.

In the end, the game has perfectly functional local and online multiplayer modes, a fair of variety, and some space for tactics. While it currently lacks a single-player mode (making a competent AI isn't easy), it can be fun for a while if you have someone to play with.

Snake Snafu

A multiplayer snake game.
network programming 2015

Snake Snafu

Snake Snafu is a colorful snake game for 2-3 players. The goal is to grow your snake and get the opponent(s) to bop into your tail or other obstacles. There's a variety of levels, edible (and not so edible) objects, and random events.

The game is a collaboration between me and orange08 (@thatorange08). Orange did pretty much the entire game and I've implemented online multiplayer support.

Snake Snafu can be played with keyboard(s), gamepad(s), and over the internet. The game also has a single-player mode (for practice), but it's worth saying that multiplayer is much more fun.

Wasteland Kings Together

An online multiplayer mod for Wasteland Kings.
modding 2015-2016

Wasteland Kings Together

Source code coming from the same bundle as Super Crate Box, Wasteland Kings Together is my shot at fixing up the Nuclear Throne's predecessor code and adding online multiplayer support.

Akin to SCBT, the game has been updated with local and online multiplayer support for up to 4 players.

While I have fixed the majority of existing issues and improved multiple parts of the game, it, unfortunately, still noticeably lacks content in comparison to Nuclear Throne, and that could not be fixed for legal reasons.

Regardless, it's still entertaining to play for a bit.

In 2016, I have stopped updating WKT in favor of modding the current version of Nuclear Throne.

Super Crate Box Together

An online multiplayer mod for Super Crate Box.
modding 2015

Super Crate Box Together

Late September 2015, Super Crate Box' source code was made available as part of a GameMaker-themed Humble Bundle, and I have used this opportunity to make a small mod.

The result is a mod that expands the game to have local and online multiplayer support for up to 4 players, both as "cooperative" and "versus" modes.

I have also modernized the progress saving system, added a bunch of new options, and done various other small improvements.


Mayhem Menus Extras

Ghost Croquet

An asymmetric multiplayer versus platformer.
development 2015-

Ghost Croquet

Ghost Croquet is a multiplayer platformer game in NES stylistic.

One player controls the hero while the others take control of the monsters in attempts to kill the hero and take their place.

@ampersandbear done most of the actual game.
I wrote the platformer engine, online multiplayer code, and some of the UI bits.
Sleepnaut (@collapseboy) did the music.

The game was originally made for Ludum Dare 33 (theme was "You are the Monster"), and over a year reworked into a full-scale Steam release, complete with matchmaking, map editor, and Steam Workshop support for sharing maps.


Multiplayer fixes.
network programming 2015,2016

Multiplayer fixes for Nidhogg

Mid-2015 I've had the pleasure to help with fixing Nidhogg's online multiplayer code a little.

Online multiplayer code was originally implemented largely correctly, but, due to series of small unforeseen circumstances, would not work too well for a some of the players.

Over the time most of the problems have been sucessfully located and fixed, permitting the game to work as intended in vast majority of situations.

Related changes are included in updates released in late July and onward.

In 2016 I was hired again to further improve the implementation, which led to rewriting some bits of it. The game code was also migrated to use my open-source extension for Steam API networking for better stability.

Spelunky SD

An online multiplayer mod for Spelunky Classic.
modding 2014

Spelunky SD

Spelunky SD is an expansion and modification of Derek Yu's Spelunky Classic. It includes a number of fixes and tweaks to the game, and, most notably, adds a cooperative online 2-player game mode.

Development took time from March 2014 to late June 2014, making the mod one of my largest works at time of release.

Days after initial release, the mod has already received an amount of attention, being featured on Polygon, PC Gamer, Rock, Paper, Shotgun, Destructoid, GameInformer, and an endless number of smaller sites.

The mod is available for free and is compatible with Windows. Linux beta is available via


Title screen. Cooperative play. Minigames. Using chat commands.


A web-based Terraria profile editor.
development 2013-


Terrasavr is a web-based Terraria profile (character file)/inventory editor focusing at functionality and ease of access.

The program written in Haxe and uses OpenFL-bitfive to provide Flash and HTML5 versions to cover a wide array of desktop browsers.

Originally created during December 2013, the program is being continuously updated to support new game versions and features.

Terrasavr has been widely praised for convenience, and remains a popular piece of software.

blog post HTML5 version Flash version


Inventory editing. Editor shows tooltips as they appear in-game. Multiple collections of items are available at hand. Item search in action.


A better minifier for Haxe-JavaScript.
development 2013


HaxMin is a JavaScript minifier and obfuscator, written in Haxe, and intended for use with Haxe-generated JavaScript sources.

A common problem with using JavaScript obfuscators on code generated by Haxe is lack of compatibility with Reflection and Type APIs - process of renaming variables often doesn't account the fact that field names and strings may be used more than in one place, such as for tweening. Result is expected - applications tend to not work correctly, if at all, after obfuscation.

HaxMin, on other hand, approaches the problem differently. Identifiers are counted by number of references in all applicable forms and then renamed in groups - this way x, get_x, set_x and Reflect.field("x") are renamed at once, keeping compatibility intact.

Being primarily a JavaScript minifier, HaxMin is also able to minify code not produced with Haxe. This can be particularly useful in situations where size optimization is needed at no expense to external interfaces.

On average, HaxMin reduces size of a Haxe-generated files by a third, and size of human-made files by half. In combination with other tools and methods this can be used to lower application size to third or fourth of original.

blog post repository


An alternative OpenFL backend for better HTML5 apps.
development 2013-2015


OpenFL-bitfive is an alternative HTML5 backend for OpenFL framework, which [the backend] I've developed over the course of August, 2013.

Similar to standard OpenFL-HTML5 backend, it permits the user to develop Flash and HTML5 applications from single source, but does so differently, permitting certain kinds of applications to perform much more efficiently, also on mobile devices.

Various Haxe-based frameworks (such as HaxePunk or HaxeFlixel) also work with bitfive.

blog post GitHub repository


An IDE for logical scheme simulations.
development 2013-2014


LDLS-m is a program that I have developed as part of my final year' university project.

It is a remake and replacement for an older piece of software that was used in a few courses in the particular university.

Similar to it's predecessor, the program permits the user to write "microprograms" that define register\RAM-like structures and work with them via a programming language that resembles generalized assembly.

In the educational process it is primarily used for simulating low-level computational processes done in CPU\FPU, but the improvements in my version make the software viable for simulating entire microcontrollers.

The program is an "all-in-one" piece consisting of a code editor (left pane), output area (right pane), menu (top), and a basic debugger.

On the technical side, it is written in Haxe and compiled to JavaScript. This permitted to have a web version (note: non-English UI) and a downloadable version compiled via node-webkit.

Demonstrations (animated GIFs; explanations below):

The general workflow A basic signed fixed point adder A block puzzle game An Intel MCS-51 emulator

  1. The editor spots a number of keyboard shortcuts that permit quickly inserting the commonly used keywords and operators (the symbols for which are partially missing in Cyrillic keyboard layouts).
  2. A slightly less basic sample program, handling addition of two signed fixed-point numbers. The programming language spots a plenty of syntax (and associated error checking) for working with bits of structures, making this an easy feat.
  3. A sliding block puzzle game also known as a 15-puzzle. Formatted input can be seen here, as well as a few "swap" operators.
  4. An Intel MCS-51 emulator, taking input (a hexadecimal string) straight out of a related assembler, made for a presentation about the program. The GIF shows it executing a countdown while clamped to 10Hz.
    Mostly a show of the program's ability to handle larger task and sets of data (ROM is stored as 65536 8-bit cells, parsed from a 512Kb register containing a stream of charcodes).


A puzzle game demake for MCS-51 microcontroller.
development 2012


Impasse51 is a demake of Flash game Impasse, which [the demake] I've developed at the "operational systems" course as an extra task of choice.

Game is written entirely in MCS-51 assembly, and is to be played on EV8071 stand with a BC1004A display mounted on it.

Similar to the original, the game is a turn-based puzzle where the player has to get an object from left side of field to the exit on the right side, avoiding varying obstacles (all of which react to player actions in different ways).

The particular game was chosen largely due to fact that the BC1004A display fits the game's field perfectly (3 10-column rows plus an extra for the level name). Fitting the game data into 128 bytes of RAM was slightly challenging, but manageable through a couple of bitwise operations and cyclic shifts. The final version of the game would only use 42 bytes of RAM.

Downloading and running the game would be problematic, since it's bound to specific hardware, but you can play a Haxe-powered simulation of game which I've made for a later micro-talk about it. The simulation also includes a visual representation of memory used by the game.

Stand overview. And the "error" level. First in-game level. Levels are equivalent to the original. Where things get hard.

Overall, while making games in assembly may not be that fun of an activity sometimes, it was a interesting experience.


A 360° platformer of rare kind.
development 2011


PolyGravity is a short 360° platformer game that I've made for GMC Jam 4 in 3 days.
Game uses 360-degree gravity, but, unlike most games of this kind, gravity direction is not determined by "planets" but is changed upon hitting surfaces.

The game spots a distinguishable art style (achieved through a custom editor) and a fitting ambient score.

Unfortunately, the aforementioned editor (and the polygon-based collisions) are also the things that I've spent ~3/4 of time on, so the game's very short (~5 minutes to complete).

Regardless, the game received largely positive ratings and took 3rd place in the jam.

Links: Download


Tutorial level General style Overview of the "Warmth" level The level editor Before leap of faith in "Sun" level Perhaps the strangest level

One and Light

A 3d first-person platformer puzzle game.
development 2011

One and Light

One and Light is a short 3d platformer game, which I've developed in 3 days for a small competition with the theme being "Shrinking".

The game's core mechanic is in the player's ability to grow/shrink freely. The levels are built with this in mind, having a plenty of parts where the perception depends on the player's size.

The game was made in "3d GameStudio", using it's built-in tools for modelling and level design and code being written in software's C variant. While my lack of toolset preparations has backfired slightly, the game still was complimented for the use of lighting and level design.

In the end the game came out as average-length (10-30 minutes to complete) received fairly positive ratings, won the said competition, and was featured on a few websites.



An introduction to the game' mechanics A bit of atmosphere in the "night" level Small secrets A piece from the ending cutscene