Porting 60k line Java code base to C#, or a story about mistakes of the past


Somewhere in the drafts of this blog, I have an article, that explains all the flaws of Java 8 (and a bunch of other languages). It probably will never be released, cause it’s just a pile of boring (and sad) facts, but I will list some of them, to explain my actions, that I did.
So, Java:

  • Has really old syntax, compared, to C# or any other more modern language.
  • Packing an app requires or packing extra 100mb JVM, or having users to install JVM For example, Steam doesn’t ship JVM with it, and just overall packing .exe on Linux is a big pain.
  • "Write once, run anywhere" is a lie Java won’t run on consoles, such as Nintendo Switch.

Might be enough already, but there is also the framework, that BurningKnight Java Edition works on – LibGDX. Overall, it’s a great library, but:

  • What’s up with gamepad support? Hotplug works only with LWJGL3, but that crashes on MacOS, gamepad remappings for millions of existing gamepads? No, you gotta figure them all out yourself.
  • Audio API is super limited Might seem minor, but all the juice, that comes from lowpass filter, writing notes to audio source on fly, and other, is just impossible.

So yeah. It’s all was piling on me for over a year now, and I’ve been dreaming of porting the whole game to C# for a while now. Burning Knight git repo has csharp branch, that is 7 months, but it didn’t really go far beyond rendering an animation of a mummy.
I’ve knew it was a huge project to port, and I was scared of it.

Continue reading…

Areas, boss battles and January overall

Burning Knight

So around a month ago, I told you all, that January would be the month of bugfixes and forest area. Well, something went really differently… Here is what I’ve got done this month.

New areas

  • Ancient Library area
  • Forest Forest area
  • Secret Laboratory area
  • Womb Ruins area
  • Frozen Ruins area
  • Floating Island area is work in progress (renamed/retextured Creep area)

Burning Knight battles

That’s something, that I totally forgot to mention, but the game main focus is on the Burning Knight. And BK battle was pretty boring before, and he had the same attacks for all depths, but that’s not true now. I’m currently in progress of creating 16 attack sets, that BK will choose from to make the game more dynamic and interesting.

Continue reading…

My thoughts on language design


This topic might seem really unrelated to gamedev or me. But I’d argue, that programming is one of the core components of huge mess thing, called game development. And I’ve been playing around with making programming languages for quite a while now, so I have a few things to say in this field.


We have a lot of amazing languages today, why imagine another one? Well, to start off, it’s a great exercise. Not to note that it also a really good topic for discussion, and I’ve been collecting my ideas for ages now.

Modern languages and syntax

I really like C-family programming languages. Especially I like C#, Java, and JavaScript. C# is one of the most modern languages out there, yet I still see a bunch of space for improvement.

Continue reading…

Running PICO-8 carts without manual export

So one day, I decided to open the source of all my PICO-8 carts. I threw away a lot of not finished carts, yet I still ended up with a big number of them. And I not only wanted to make the carts downloadable but also to make them previewable in the browser. The typical way to do that with PICO-8 is the following:

> LOAD cart.p8.png
> EXPORT index.html

Then zip index.html and index.js, etc etc. But you know, even doing that with 20 carts will take quite some time.

And I knew BBS has a way to run carts without exporting them. So after a small research, I found a small library on Github, that allowed me to do just that, yet it was outdated for 3 years.

The perspective of just throwing a cart into the directory near your script to automatically make it playable was too good.

Continue reading…

2018: the year of jams

Game jams are truly amazing. They force you to focus on making a game quick, focus on game core, and not polish. If you did not participate in one yet: what are you waiting for?

Ludum Dare

I’ve learned about game jams in the winter of 2016. It happened so to be that Ludum Dare 37 was around the corner. At that point, I finished just 1 small SDL2 game. And my mind was full with text roguelikes and Terraria, so I went with the toolset I was familiar with: Java and super slow library, that provided a simple way to render a text grid.

Continue reading…

Burning Knight: the roadmap

It’s been a while since the last devlog of Burning Knight, and a lot of things changed in that time. I made a new site (well, plus a landing page for the game, yay!), and well let’s talk about it.

Continue reading…