@kroltan@functional.cafe avatar



#Brazillian game developer, orbits around tooling, frameworking, and tech art. #Linux user, because I can still own a digital house even if I have to rent a physical apartment.

This profile is from a federated server and may be incomplete. Browse more on the original instance.

vga256, to random
@vga256@dialup.cafe avatar

nice little graphics hack i just learned:

you can get the opposite of any RGB 8-bit colour by subtracting 255 from each colour value

e.g. bright green: [0, 255, 0]
turns into its contrasting magenta: [255, 0, 255]

this rule also applies to colour values in the 0->1.0 scale or 0->F hex scale. just subtract colorMax from the its component colour values!

@kroltan@functional.cafe avatar

@vga256 Watch out, that road leads to madness! (And tons of fun), it's called "shader programming" 😂

@kroltan@functional.cafe avatar

@vga256 This also reminds me of a way more complicated and neat image manipulation trick using a software with layers. Where you can re-paint things without it looking like an overlay, it's called "frequency separation" I think:

  1. Duplicate your image
  2. Blur the bottom layer enough so you can only see shapes, not details;
  3. Duplicate the blurred layer, so your stack is "blurred", "blurred", "original" on top;
  4. Set the top layer to "subtract", with an offset of 50% gray;
  5. Merge the top and middle layers, so you get a layer of gray with bright and dark bumps;
  6. Set the merged layer to Screen blending (IIRC); and now you should see what is basically the original image.

Big whoop right? But if you did it right you can now paint the blurry bottom layer different colors to change the color of objects! You can also use this to transfer details from one part of the image to another, or from another image entirely!

I definitely didn't use this technique to faceswap everyone on a class photo during high school... And am definitely not very disappointed that I lost said edited photo...

(Krita has special "grain extract" and "grain merge" blend modes that do most of this for you, but these steps should work on any layer based software)

kroltan, to bevy
@kroltan@functional.cafe avatar

I finished my entry!

It's an interactive toy type thing made in about a never-ending demonic war.

You can play it over at Ludum Dare.


juliobiason, to random Portuguese
@juliobiason@functional.cafe avatar

Tem uma pessoa no grupo de Django que sempre começa as conversas com "Fala men".

Eu me recuso a responder.

@kroltan@functional.cafe avatar

@juliobiason coé men

juliobiason, to random
@juliobiason@functional.cafe avatar

Today I found out there is a Flake8 module that complains if you use print().


How do people expect to report things back to the user? Rich? Being stupid and use logging?

@kroltan@functional.cafe avatar

@juliobiason Maybe like Some Places I Know which forbid console.log in ESLint, but the alternative is verbose and less featureful so all our logs looked horrible.

(Without providing any features at all, of course. Just worse stack traces for no reason)

juliobiason, to random
@juliobiason@functional.cafe avatar

Are graphical libraries so bad in explaining their event loops to newcomers?

I swear we get, once per week, someone saying "I used the UI library X, and now it is not working" and, drilling down in their problem, they put a loop somewhere.

@kroltan@functional.cafe avatar

@juliobiason Maybe, but also a lot of first principles education often recommends looping structure around interactive processes.

Classic example is the "repeat prompt until user types something that passes validation".

I think there's often a gap between this kind of "synchronous"/"command-response" interactive format common in TUI applications, vs the "realtime/nonlinear" interactive common in GUIs and things like asynchronous web services.

juliobiason, to random
@juliobiason@functional.cafe avatar

Bash, why do you keep fucking up my history?

@kroltan@functional.cafe avatar

@juliobiason If there is anything in common with all the shell implementations, is that history fricken sucks.

godotengine, to gamedev
@godotengine@mastodon.gamedev.place avatar

Do you have some ideas of yours we can shelve- erm, display in this space? 💡

@kroltan@functional.cafe avatar
@kroltan@functional.cafe avatar

Square-aspect image for convenience

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

Judging by how badly this grinds my phone to a halt, CSS 3D is about 1000x slower than even a half-assed equivalent WebGL implementation. I really wish that wasn’t the case. 3D combined with the DOM’s accessibility and ease of authoring would be amazing.

(WARNING: may lock up your tab/browser/device) https://petertyliu.github.io/toaster/

@kroltan@functional.cafe avatar

@jonikorpi To be fair, it's super far from an apples to apples comparison, doing 3D with CSS is very much using a hammer to drive a bolt.

No instancing, no batching, and all the transformations happen on the CPU, through many layers of indirection no less.

(Instancing and batching is used in browsers, but usually only for laid-out stuff, using 3D transforms creates lots of stacking contexts, which are basically an intermediary render target)

The 2000s had VRML for building 3D worlds using the same kinds of principles as HTML, and nowadays there are "software" solutions like A-Frame that you can use (but require JS to actually run anyway)

janriemer, to bevy

If I should describe in one word, it is this:


@kroltan@functional.cafe avatar


  • Modular
  • Very high quality construction compared to its competitors
  • If you leave it lying around forget about it, stepping into a project is painful?
@kroltan@functional.cafe avatar

@janriemer Sure!

alatiera, to random
@alatiera@mastodon.social avatar

Abolish cmake.

@kroltan@functional.cafe avatar

@alatiera Can we throw Docker out while at it too, or is it better to do it one at a time so they don't copulate in the ditch and spawn more terrible technologies?

janriemer, to graphics

This is genius:

vong | The first compute-centric vector graphic video game


I think zooming should be an explicit feature in the game (which triggers some behaviour/state change in the game besides zooming).🙃

#SVG #Graphics #GameDev #Pong

@kroltan@functional.cafe avatar

@elementbound @janriemer Compute as in "compute shaders", as in not using a CPU rasterizer I think.

Something like Adobe Flash was already vector-based at interactive framerates (mostly lol), but the rendering was all on the CPU, partly because shaders weren't as versatile as nowadays (the so-called "compute shaders" basically did not exist), so it was highly resolution-dependent.

Modern vector renderers often also "just" convert the vector data to a more GPU-friendly vector data (traditional triangle meshes, which GPUs are quite good at) and stop around there, but that means if you zoom far enough you'll see that it's all polygons with straight sides.

But I'm talking outta my ass here, I have not studied Vello to know what they precisely mean.

joelanman, to gamedev
@joelanman@hachyderm.io avatar

Unirally/Uniracers on the SNES was a great game, you do tricks to go faster. Mess up a trick and you slow right down. Has a racer done anything like that since? It's a great mechanic - risk and reward (it was also very smooth, fast and looked nice)
#gameDev #retrogaming

@kroltan@functional.cafe avatar

@joelanman If you count Mario Kart, then that. Jump and drift boosting is possibly the biggest differentiator on lap time.

alienmelon, to gamedev
@alienmelon@mastodon.social avatar

Achievement unlocked! I made a cute pixel art font today for the game. It's a pixelated grunge typewriter font... It's really simple but I love the novelty of having my own fonts in the game :D
Yay :perfect:
#GameDev #GameArt

@kroltan@functional.cafe avatar

@alienmelon "You wouldn't download a font"

juliobiason, to random
@juliobiason@functional.cafe avatar

Took my motorbike to another shop for service.

"Make it like you are about to sell me this motorbike, instead of [other shop]", I said.

Now then found a ton of small pieces to replace.


@kroltan@functional.cafe avatar

@juliobiason I recommend evolving photosynthesis.

juliobiason, to random
@juliobiason@functional.cafe avatar

I should be writing my presentation, but guess what I am not doing right now?

@kroltan@functional.cafe avatar

@juliobiason ...juggling while bouncing on a trampoline? 🤭

chris__martin, to random
@chris__martin@functional.cafe avatar

Not pedantic about there being a colloquial distinction between trees and DAGs, because the trees in real life aren't always trees. Hell, I doubt they're even acyclic in general.

@kroltan@functional.cafe avatar

@chris__martin Well, for a start they don't necessarily have a root node! It's more like a complete graph core, from whose nodes sprout other graphs in the form of branches and, well, roots.

gamingonlinux, to random
@gamingonlinux@mastodon.social avatar

Just a reminder: i take a break on most weekends, which is why there’s often no content. It’s important to take breaks 🤟

kroltan, (edited )
@kroltan@functional.cafe avatar

@gamingonlinux You gotta take breaks, or the take breaks you!

(The noun usage of "take" is obscure but appropriate here)

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

May have just cracked the bigger of the two core gameplay design problems that have been plaguing me all year. Tomorrow I’ll take these awkward region borders and rework them. With any luck they’ll become the core of a turn-based movement system that provides both exploration and tactics.

@kroltan@functional.cafe avatar

@jonikorpi It takes just 4 colors to paint a map with no overlaps, pick 4 tones and fade them in at the borders local-contrast style, maybe?

maxim, to unity
@maxim@mastodon.gamedev.place avatar

So, the betrayal with Unity is canceled... I can congratulate all the panickers and those who have already started studying other engines. Compromise seems to be the norm, and the logo made with unity can be off even with free use of the license.

What else do you need?

@kroltan@functional.cafe avatar

@maxim The stove has been set under this frog for a while now, we're just seeing the first bubbles.

This particular bubble has been stirred out, but if you wait, soon you'll see some more.

(Or something, I'm bad with analogies. By the time there were bubbles the frog would be long dead, and also frogs can detect slow boil contrary to common belief)

What I need is all the pending promises and unfinished features that have been promised for best part of the last decade.

If we get input layers and a stable DOTS API (or even just a documented one) I'll be paying attention again.

fell, to programming
@fell@ma.fellr.net avatar

Post your latest commit message. I'll start:

> Fixed a possible crash during the trophy cutscene that could happen if the stadium did not have a scheduled match and was not associated with an owning club.


@kroltan@functional.cafe avatar


Move water shader to builtin

llamasoft_ox, to random
@llamasoft_ox@toot.wales avatar

it can't be autumn, we haven't had any bloody summer yet

@kroltan@functional.cafe avatar

@llamasoft_ox Here in the upside down, I only had to put on a long sleeve like 8 days this year, I really wanted to fire up the wood stove but there's no reason to!

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

Are there any project management apps made for individuals?

Obviously there are tons of apps for ticking todo items, but what about research, moodboards, design docs? I’ve been trying to condense all of these into GitHub issues, but it’s a mess.

@kroltan@functional.cafe avatar

@jonikorpi LOL! I guess the choice of word "survive" was more accurate than I expected.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • JUstTest
  • tacticalgear
  • InstantRegret
  • thenastyranch
  • magazineikmin
  • everett
  • rosin
  • Youngstown
  • slotface
  • mdbf
  • cubers
  • kavyap
  • osvaldo12
  • DreamBathrooms
  • anitta
  • khanakhh
  • cisconetworking
  • ngwrru68w68
  • Durango
  • tester
  • provamag3
  • normalnudes
  • GTA5RPClips
  • modclub
  • ethstaker
  • megavids
  • Leos
  • lostlight
  • All magazines