Nikita Lisitsa
banner
lisyarus.bsky.social
Nikita Lisitsa
@lisyarus.bsky.social
He/him

I teach C++ & computer graphics and make videogames

Working on a medieval village building game: https://youtube.com/playlist?list=PLSGI94QoFYJwGaieAkqw5_qfoupdppxHN&cbrd=1

Check out my cozy road building traffic sim: https://t.ly/FfOwR
Pinned
A new devlog about my medieval village building game! About 4 months of progress in this one!

#indiedev #gamedev #indiegames #devlog

www.youtube.com/watch?v=fymx...
Stockpiles, Roofs, and Much More! - Village Builder Devlog #10
YouTube video by Nikita Lisitsa
www.youtube.com
Tried to make a "sad keanu" type photo but failed cause apparently sitting in a ton of snow actually makes me happy
January 5, 2026 at 8:20 PM
Benchmarking time! Implemented is_prime function in C++ and in my toy language (the exact same algorithm), compiled with clang -O3 vs my jit-compiler. My codegen runs only 5x slower which is actually great, I expected much worse!
January 4, 2026 at 8:04 PM
Toy-language-to-aarch64-jit progress: added function arguments (integers only though), branching and loops! It follows the standard Aarch64 C calling convention, so you can literally call it from C and it'll work.
January 4, 2026 at 10:41 AM
Reposted by Nikita Lisitsa
A first beta of my 2D game library Karl2D is now available: github.com/karl-zylinsk...

It's raylib-like, written in Odin, has emscripten-free web builds and easy to modify.
GitHub - karl-zylinski/karl2d: Odin 2D game library. Beginner friendly and easy to modify.
Odin 2D game library. Beginner friendly and easy to modify. - karl-zylinski/karl2d
github.com
January 1, 2026 at 10:49 PM
Implemented variables in my toy-language-to-aarch64-compiler! Only integers for now, always 64-bit sized (even if the type is actually smaller), always on stack. Codegen is far from optimal but hey, at least it works!
January 3, 2026 at 9:27 PM
Implemented logical ops and comparisons. Had to sprinkle extra sign/zero-extending instructions so that low-bitness (8/16/32) ops work correctly, since ARM doesn't have dedicated 8/16-bit registers (it has 32-bit but I'm not using them because I'm lazy)
January 3, 2026 at 7:21 PM
I'm on vacation and I only have a Mac with me so naturally I'm slowly writing an actual JIT compiler for my toy language, casually fighting through ARMv8 ISA manual. Already got basic integer arithmetic working!

The 16-byte SP alignment rule caught me by surprise, ngl
January 3, 2026 at 3:02 PM
Reposted by Nikita Lisitsa
Sometimes it's a good idea to look back and see how your project evolved. Tomorrow will be exactly 2 years since I've started, and I'm only about halfway there 😅

#gamedev #indiedev #indiegames
December 31, 2025 at 7:31 PM
One thing I'm noticing here is that the game stopped looking cartoonish and started looking painterly. Which I guess aligns better with the final vision but I swear I didn't actually plan for that to happen
Sometimes it's a good idea to look back and see how your project evolved. Tomorrow will be exactly 2 years since I've started, and I'm only about halfway there 😅

#gamedev #indiedev #indiegames
January 1, 2026 at 10:05 AM
Sometimes it's a good idea to look back and see how your project evolved. Tomorrow will be exactly 2 years since I've started, and I'm only about halfway there 😅

#gamedev #indiedev #indiegames
December 31, 2025 at 7:31 PM
New blog post! (yep, at New Year's Eve.) A short detour into a fun one-liner shading model I use for clouds in my game 🥰

lisyarus.github.io/blog/posts/a...
December 31, 2025 at 3:03 PM
I have a genetic condition called "fissured tongue". (I'd post a photo but it's mildly disturbing; better google it.)

It's generally benign but makes my tongue hypersensitive to certain otherwise rather mild acids (tomatoes, kiwis, pineapples), strong tannings (walnuts), ...
Post a random fact about yourself:

I'm allergic to cold.

No, really. It's a thing, look it up.

Eating ice cream usually makes my lips break out in hives, but it's totally worth it.
Post a random fact about yourself.

I interned in the Licensing Dept at Marvel Comics my senior year in college, before Spider-Man or X-Men hit theaters. Got to see a very early cut of the Spider-Man trailer.
December 29, 2025 at 3:52 PM
Suddenly remembered a project I was working on some...3 years ago? There's so much pixel art, and it's genuinely much better than I thought it was 😅
December 26, 2025 at 12:07 PM
Reposted by Nikita Lisitsa
AAA video game character going to the toilet: "I'll take these stairs." "Ah, there it is, the bathroom." "Better open the door." "The door's open, nice." "Gonna pull my trousers down now." "Sitting down." "Okay, here we go." "I needed that." "Okay, time to fl
December 23, 2025 at 10:26 AM
Reposted by Nikita Lisitsa
I just learned something that I want to share;

1. Create an invisible box with an outer shadow
2. Create an invisible box with an inner shadow
3. Place randomly...

TA-DA. Free depth in your texture!
December 22, 2025 at 10:25 AM
I've unintentionally tried using comments in my toy language many times already, so I decided to finally add them (just single-line for now), turned out to be an almost trivial change to the lexer+parser
December 21, 2025 at 12:58 PM
The worst thing about designing your own toy programming language is that people have a ton of Ideas™ and absolutely zero context
December 20, 2025 at 8:14 PM
Added support for default zero-initialization in my toy language. Only works with structs & built-in types - can't zero-initialize function pointers or arrays for now (but probably will be able to in the future!). Not initializing a variable is always an error btw
December 20, 2025 at 1:08 PM
Been mostly refactoring my toy language parser & interpreter lately. When I'm done, here's a rough outline of what I'm planning to add next to the language 😌
December 20, 2025 at 9:46 AM
Reposted by Nikita Lisitsa
Funny animal videos no longer being trustworthy just fucking sucks all around. I love the wonder of animal behavior and what it says about the experience of being alive. It's because it happened in reality that it's so fun. It's not fun if it was just made up. There's no wonder there.
December 19, 2025 at 2:26 AM
Played with hand-generating CPU instruction opcodes in properly compiling my toy language. Here's the code for a function that just negates an int 😅

Though I've realized that opcodes are the easy part! I also need conversion to SSA & register allocation & other stuff...
December 18, 2025 at 8:45 PM
Functions are now first-class values in my toy language! Though there are no closures/lambdas, only what's effectively function pointers but with a much cleaner syntax. I'm still not sure whether I want lambdas or not.
December 18, 2025 at 1:13 PM
Reposted by Nikita Lisitsa
just a casual reminder that this guy has put out 3 games in the last 17 years and one of those 3 games was just an enhanced edition of the 1st
Okay please let's not call him that
December 18, 2025 at 9:21 AM
Reposted by Nikita Lisitsa
My "No Graphics API" blog post is live! Please repost :)
www.sebastianaaltonen.com/blog/no-grap...

I spend 1.5 years doing this. Full rewrite last summer and another partial rewrite last month. As Hemingway said: "First draft of everything is always shit".
No Graphics API — Sebastian Aaltonen
Graphics APIs and shader languages have significantly increased in complexity over the past decade. It’s time to start discussing how to strip down the abstractions to simplify development, improve pe...
www.sebastianaaltonen.com
December 16, 2025 at 6:52 PM
Improved error reporting - now the parser shows the erroneous line & highlights the problematic section, like in actual grown-up programming languages!

Though there are still a lot of places in the parser that need upgrading to support this fully.
December 17, 2025 at 10:41 PM