@lisyarus@mastodon.gamedev.place cover
@lisyarus@mastodon.gamedev.place avatar

lisyarus

@[email protected]

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 traffic simulator: https://store.steampowered.com/app/2403100/Costa_Verde_Transport_Department/

This profile is from a federated server and may be incomplete. View on remote instance

@lisyarus@mastodon.gamedev.place avatar lisyarus , to random

I've finally put together a dedicated web page about the Village Building Game I'm working on! It

🟩 Reflects on the origins of this idea ✨
🟧 Touches on my gamedev history 🗒️
🟦 Describes my vision of this project 💡
🟥 Hints at the expected timeline 🕗

https://lisyarus.github.io/blog/projects/village-builder.html

lisyarus OP ,
@lisyarus@mastodon.gamedev.place avatar

@andrybak Ah, yes, forgot to mention them, like I usually forget to add them in jam games 😅 Will do, thanks!

@lisyarus@mastodon.gamedev.place avatar lisyarus , to random

Sooo initially the idea was that stone paths and similar floorings make movement faster. Now I've noticed that moving on them is actually slower.

The thing is, I haven't even started implementing this mechanic yet... 🤣

video/mp4

lisyarus OP ,
@lisyarus@mastodon.gamedev.place avatar

@Craigp Nope, there's no navmesh, the pathfinder is grid-based.

lisyarus OP ,
@lisyarus@mastodon.gamedev.place avatar

@artificialmind Ohhh wow good catch, I missed that somehow. It worked fine before, guess I broke it at some point. Will investigate, thanks!

@thomastc@mastodon.gamedev.place avatar thomastc , to random

I started this iteration of Around The World one year ago today. Time for a retrospective blog post!
https://frozenfractal.com/blog/2026/2/14/around-the-world-29-one-year-in/

lisyarus ,
@lisyarus@mastodon.gamedev.place avatar

@thomastc Very excited to read this!

> But the code repository of that project was called aroundtheworld4
Haha I know that feel. I had projects with codenames villages and villages2, and somewhere there's also villages_old xD

lisyarus ,
@lisyarus@mastodon.gamedev.place avatar

@thomastc

> eventually realized that this approach was not suitable for a game: it was too slow, and gave me too little control over the output

I'm starting to feel like this is a common problem with all realistic-simulation-based approaces. E.g. my weather simulation suffers from the same exact problems.

lisyarus ,
@lisyarus@mastodon.gamedev.place avatar

@thomastc
I also probably need to put up a page with some info about my game, while the Steam page isn't up yep. Gonna steal that idea :)

lisyarus ,
@lisyarus@mastodon.gamedev.place avatar

@f03n1x @thomastc Thank you so much!

@lisyarus@mastodon.gamedev.place avatar lisyarus , to random

Btw I don't think I've shown my game's terrain LODs earlier, so here they are!

video/mp4

lisyarus OP ,
@lisyarus@mastodon.gamedev.place avatar

@thomastc That's a missing feature in water rendering - a parent chunk overlapping a child chunk. In reality it should only render the quadrants that correspond to children that haven't been loaded yet, working on that right now!

@lisyarus@mastodon.gamedev.place avatar lisyarus , to random

Finished refactoring water rendering to use the same chunk-based LOD system as the terrain, with frustum culling and async loading and stuff. No more missing chunks & holes & flickering, everything works smoothly! 🥰

video/mp4

@demofox@mastodon.gamedev.place avatar demofox , to random

RE: https://mastodon.gamedev.place/@demofox/116055619194355358

linux (x11 + opengl) is now in thanks to @lisyarus !

lisyarus ,
@lisyarus@mastodon.gamedev.place avatar

@nelson @c9a @demofox

> carrying a dependency like OpenGL or even Vulkan on a modern Linux system is impossible to do statically

It is possible if you just manually load the libraries at runtime 😈 But yes, in any case it's a dependency on libGL and libX11, even if not on the ELF level

lisyarus ,
@lisyarus@mastodon.gamedev.place avatar

@nelson @c9a @demofox Why cross-libc though? You will end up depending on libc anyway on your program unless you specifically say otherwise, which people usually don't do when targeting regular desktop systems. And yes, I'm just dlopen-ing the libs and dlsym-ing the required functions with a known and documented interface

lisyarus ,
@lisyarus@mastodon.gamedev.place avatar

@nelson @c9a @demofox Well, to get to glxGetProcAddress you still have a ton of X11 window and gl context initialization, which requires a lot of dlsym-ing as well

lisyarus ,
@lisyarus@mastodon.gamedev.place avatar

@nelson @c9a @demofox Honestly it's just the easiest not-stupidly-slow way of getting some pixels on screen that I know of! You still need the X11 window initialization stuff, and then the actual GL code is like 5-10 lines.

@lisyarus@mastodon.gamedev.place avatar lisyarus , to random

My dynamic water system is currently somewhat independent of the large-scale water created at world generation, which leads to some fun stuff like creating a layer of water...underneath existing water 😅

video/mp4

@nina_kali_nina@tech.lgbt avatar nina_kali_nina , to random

Iscream

lisyarus ,
@lisyarus@mastodon.gamedev.place avatar

@nina_kali_nina std::basic_ioscream

@lisyarus@mastodon.gamedev.place avatar lisyarus , to random

Oh no how will I survive without the extremely valuable opinion of checks notes one of the most deranged crackpots on the planet

Anyway...

@aeva@mastodon.gamedev.place avatar aeva , to random

anything good happen today

lisyarus ,
@lisyarus@mastodon.gamedev.place avatar
lisyarus ,
@lisyarus@mastodon.gamedev.place avatar

@aeva Made good progress on the wotah in game

Also decided I'm tired of doing C++ uni lectures based on some older slides & notes by the previous lecturer so I grabbed my shit and made my own slides and I'm happy with how they turned out (but that's just for the first lecture, now I'm forced to re-do the remaining 15 as well)

@vitaut@mastodon.social avatar vitaut , to random

Love five-spice chicken

lisyarus ,
@lisyarus@mastodon.gamedev.place avatar

@vitaut Awww that looks incredible

@lisyarus@mastodon.gamedev.place avatar lisyarus , to random

This is starting to become amazingly beautiful

lisyarus OP ,
@lisyarus@mastodon.gamedev.place avatar

@BuschnicK Around 20-25$ will give you unlimited estate! It's all virtual rather than real, though 😅

@lisyarus@mastodon.gamedev.place avatar lisyarus , to random

Implemented the infinite* water plane - the world map now looks cohesive instead of floating in space 🥰 I'll probably want to add something more interesting on the water-horizon boundary (like some clouds, idk), but this will do for now.

*10000km

video/mp4

lisyarus OP ,
@lisyarus@mastodon.gamedev.place avatar

@dfxluna I draw a giant square around my map (with a hole where the map itself goes), then apply my usual water shader but with some noise at a distance to make it look more interesting, that's it!

image/png
image/png

@lisyarus@mastodon.gamedev.place avatar lisyarus , to random

Re-implemented shoreline & distant forest outlines by making them output unique tags to the stencil buffer and then doing a fullscreen outline pass based on that, which now looks much closer to how all the other outlines look 🥰

lisyarus OP ,
@lisyarus@mastodon.gamedev.place avatar

The shader is stupidly simple: count how many of the neighbouring 8 pixels have a different tag compared to current pixel, then the outline strength is smoothstep(0, 4, count), that's it

@lisyarus@mastodon.gamedev.place avatar lisyarus , to random

We all been talking about google search getting worse and etc, but not being able to recognise a word just due to a single spelling error (lithos) while possessing 10% of the world's computing power is quite something

@lisyarus@mastodon.gamedev.place avatar lisyarus , to random

So speaking of that community management thing, am I doing it right?

(context: this is a comment on my yt devlog which is about a yet unreleased game that currently has neither iron ore nor mineshafts)

lisyarus OP ,
@lisyarus@mastodon.gamedev.place avatar

@oblomov My best guess is youtube marked the game as relevant to Vintage Story because it has footage from it, and this person actually refers to Vintage Story

@tonwood@mathstodon.xyz avatar tonwood , to random
ALT
lisyarus ,
@lisyarus@mastodon.gamedev.place avatar

@tonwood That right here is an alphabet!

@lisyarus@mastodon.gamedev.place avatar lisyarus , to random

RE: https://mastodon.gamedev.place/@lisyarus/116047741002986610

I want to redo outlines so that they all use the same mechanism (rn forest outline is baked into mesh, water outline is faked in shader). I can't output some tags to a second render target due to dual-source blending, but I still CAN use stencil for that! Gonna experiment later.

@lisyarus@mastodon.gamedev.place avatar lisyarus , to random

Btw I made the water color (the scattering coefficients, to be precise) depth-dependent, so now shallow seas are more cyan and deep seas are dark-blue. Much better than a flat color!

lisyarus OP ,
@lisyarus@mastodon.gamedev.place avatar

@thomastc Given that Earth does that quite often, I think the trick is already in Public Domain 😆

lisyarus OP ,
@lisyarus@mastodon.gamedev.place avatar

@nick Tbh from this distance it's mostly just a flat color! I'm calling it scattering because I'm multiplying incoming sky light with the coefficient, which is kinda what scattering does.

My model for water shading mostly affects close-up and underwater views. It's a very ad-hoc mix of Fresnel reflection of sky and sun (sun uses blinn-phong), sky light scattering in water volume, and absorption in water volume. I'm not doing any raymarching for perf reasons.

@lisyarus@mastodon.gamedev.place avatar lisyarus , to random

I feel like once I populate the underwater regions with stones and seaweeds and fish, this could become a really sick screensaver

video/mp4

@lisyarus@mastodon.gamedev.place avatar lisyarus , to random

Something's not quite right here...

@aeva@mastodon.gamedev.place avatar aeva , (edited ) to random

for all you beautiful hard working professional computer touchers out there:

"my day job has me making the world a ____ place"

(be honest, don't just repeat what your CEO says)

lisyarus ,
@lisyarus@mastodon.gamedev.place avatar

@aeva It could very well be making a better place, but due to corporate things it's more like not changing anything at all

@aeva@mastodon.gamedev.place avatar aeva , to random

sees two different people bang out absolutely fantastic lowpoly water rendering fuck everyone's getting in on this water action but me

lisyarus ,
@lisyarus@mastodon.gamedev.place avatar

@aeva I've seen another person on another site also doing water rn. Must be that time of the year

lisyarus ,
@lisyarus@mastodon.gamedev.place avatar

@aeva That's like the bazillionth time I'm doing water rendering, it's about time I made something that doesn't look stupid 😅

@thomastc@mastodon.gamedev.place avatar thomastc , to random
lisyarus ,
@lisyarus@mastodon.gamedev.place avatar

@thomastc Swimming in mercury? Your world generator is sure quite advanced!

@lisyarus@mastodon.gamedev.place avatar lisyarus , to random

Adding the fake random wave bumps to the large-scale water. It looks gorgeous but also flickers A LOT, guess I'll have to tune it down based on camera angle

@lisyarus@mastodon.gamedev.place avatar lisyarus , to random

Every now and then I start my game to test something and suddenly the perf is 2x worse and I start investigating my profiling data and renderdoc captures and after about 15 minutes I realize there's a second instance of the game running 😂

Days since that happened again: 0

lisyarus OP ,
@lisyarus@mastodon.gamedev.place avatar

@iralmeida Tbh I almost never run debug builds, they're just too slow 😅

@joe@f.duriansoftware.com avatar joe , to random

what bitmap font editors do folks like using?

lisyarus ,
@lisyarus@mastodon.gamedev.place avatar

@joe Gimp 😓

lisyarus ,
@lisyarus@mastodon.gamedev.place avatar

@alchemicacht @joe I mean, if by a bitmap font you mean just a bitmap with glyphs - sure, gimp can edit bitmaps 😅

@lisyarus@mastodon.gamedev.place avatar lisyarus , to random

First tests with large-scale water (just rendering, no simulation ofc). Pretty much everything's terrible, a lot of work ahead 😅

video/mp4

lisyarus OP ,
@lisyarus@mastodon.gamedev.place avatar

@hypolite Well, the flickering is expected (parent chunk not rendered because you're too close but the child chunk not loaded yet), I had this with terrain as well

Gaps between chunks are probably some uninitialised memory (which makes half of the water heights equal to zero), just need to find where it is!