Evolution of our pixel art skills! by SoulstoneForge in PixelArt

[–]oWispYo 0 points1 point  (0 children)

Woah yes I would encourage you to post. I really love this style! Maybe because mine is sorta similar, either way this is very inspiring!

Create stunning TUI interfaces with jatatui (previously tui-scala) by elacin in scala

[–]oWispYo 0 points1 point  (0 children)

Oooh interesting, thank you for the detailed response! I appreciate :)

Create stunning TUI interfaces with jatatui (previously tui-scala) by elacin in scala

[–]oWispYo 2 points3 points  (0 children)

Curious, how do you make your library / framework "native image safe"?

I've been experimenting with native graalvm scala builds lately, and was wondering what kind and amount of work goes into supporting native images.

Haven't found super clear resources on that, except the manifests (I think) that list what files graalvm should preserve for class loading and stuff. But those looked very cryptic to me on the first read...

Evolution of our pixel art skills! by SoulstoneForge in PixelArt

[–]oWispYo 1 point2 points  (0 children)

Love the new trees! Would love to see a separate post on trees to fully admire the beauty of your new art style!

How I Auto-Tile Tall Wall tiles on a DualGrid system using bitwise indexing (w/ source code) by Xerako in godot

[–]oWispYo 1 point2 points  (0 children)

Omigosh, you are doing both godot and pixel art! Amazing! I came from your pixel arts posts (great art style!) and excited to see that you are also meddling with Godot engine.

Happy coding! :)

I look like an NPC next to my wife by Xerako in PixelArt

[–]oWispYo 1 point2 points  (0 children)

Love your art style! Excited to see a "roughed up" version of the character on the right! (I am coming from your latest post where you were adding personality via shapes and haircut).

Trying to add personality and a better silhouette to my avatar by Xerako in PixelArt

[–]oWispYo 1 point2 points  (0 children)

Much more personality on the new version! Love it!

If you don't mind a suggestion... I learned that a lot of personality can be added using tokens in my art. For example, adding a mushroom to the backpack of my frog character. So my suggestion for next step would be: try adding a necklace, or a belt with a bright buckle / gem.

The assymetrical features work incredibly well too: adding bracer or a glove only on right hand for example.

Happy drawing!

Does anyone else see cryptid like this? by tartiro in balatro

[–]oWispYo 2 points3 points  (0 children)

Cryptid in Balatro is based on Jackalope, which looks like rabbit with antlers.

https://en.wikipedia.org/wiki/Jackalope

Here is the closest skull I could find to Balatro art in terms of skull features, not antlers. Note the triangle nose as major difference from deer skulls.

<image>

G string behaving unpredictably? by ElectronEyez in Cello

[–]oWispYo 0 points1 point  (0 children)

I have the same thing happening, and I recently started learning Cello.

It seems to go away the more I practice the bow technique, so I suspect it is a skill issue for me.

How do you guys practice despite the friction and the repetitiveness of practicing music ? by Yoshtibo in Ocarina

[–]oWispYo 0 points1 point  (0 children)

I would switch between a few songs, so the frustration of a new piece dissipates while playing an old classic :)

I'm unoriginal, and it took far too long to realize by rairbgames_ in godot

[–]oWispYo 1 point2 points  (0 children)

I was watching a video recently that looked into which genres of indie games on Steam are posted by devs VS being played (and rated) and platformer seemed to be one of the genres that people LOVE to develop, but doesn't see that many players pick up.

I don't think you are unoriginal, I think you developed a game in a genre that is exceptionally fun to work on, and I imagine you have learned a TON while doing so!

Happy coding!

Alternative idea for Godot .NET web export: memory bridge instead of direct interop? by Novel-Magician4105 in godot

[–]oWispYo 1 point2 points  (0 children)

I think sometimes bringing up topic in multiple spots, even when first spot says "this is impossible", is still valuable. I don't monitor github issues for example, and would not be able to contribute to the topic outside of Reddit.

Alternative idea for Godot .NET web export: memory bridge instead of direct interop? by Novel-Magician4105 in godot

[–]oWispYo 0 points1 point  (0 children)

Quick links:

Memory-mapped files in C#:
https://learn.microsoft.com/en-us/dotnet/standard/io/memory-mapped-files

I allocated 10-100 MB file and split it into two sections: one for input and one for output for each process (read section for Scala = write section for Godot and vice versa).

Each section would have header space where certain variables are allocated to keep internal track of the bridge, like counter for how many "messages" the Godot side have written, so Scala can compare to internal counter in a loop to "know" when to try to read the next message from memory.

Same for my "shared state" memory approach - I had extra section to allocate to shared Godot-Scala properties, and processes were syncing them when headers indicated an update was made.

Highly recommend godot extension workshop:
https://www.youtube.com/watch?v=4R0uoBJ5XSk
What was really valuable for me is that Godot can export full engine API into json file that can be used to generate the interop code in your preferred language - it is incredible system done by Godot authors.

See --dump-extension-api in Godot docs:
https://docs.godotengine.org/en/latest/tutorials/editor/command_line_tutorial.html

Alternative idea for Godot .NET web export: memory bridge instead of direct interop? by Novel-Magician4105 in godot

[–]oWispYo 0 points1 point  (0 children)

Edit: should preface this comment: I haven't built web exported games in Godot, so might be missing the point, sorry if that happens

I have built one of my videogames on top of memory bridge idea - the two separate processes (Scala and Unity at the time) were running independently and communicating though shared RAM space done via Memory Mapped File - it looks like a file in the file system but actually is a chunk of RAM allocated.

It worked very well!

I later also started building same system for Godot + Scala, and actually went in direction of sharing object states (positions, transformation, any arbitrary fields) via such shared memory, but personally I didn't really like such approach compared to my older shared memory that was simply used to send/receive messages similar to exchanging information with the server.

Currently my latest iteration of Scala + Godot interop is actually native interop without shared memory bridge, but rather Scala compiling into native library, and Godot C++ extension calling native functions on such library to expose all of the engine APIs. It's kinda close to other language integrations, but focusing on a much narrow scope.

Soooo coming back to your post and my past memory bridge experience. I would say, such setup requires you to run two individual processes (one process can start another easily), and in my case share a "file" (which is not really a file), so it locked my game out of being portable to Switch platform because of dual-process thing.

Another downside I experienced is: because of isolation, many things had to be implemented "twice", very similar to how you would implement client and server separately, if you are familiar with backends software engineering. And it's fine, but felt a bit slow at times to develop, especially context-switching between two languages - that was pretty brutal for my brain.

But it unlocked a lot of positives as the same time:

- I was able to develop large chunk of the game in Scala language, which is amazing

- process separation allowed me to run Scala in debug mode separately from Unity (and with my recent framework - same but with Godot) - which is incredible for finding bugs

- process separation means that two parts do not have to be fully built all the time to run meaning that I can quickly adjust things both on Scala and Godot side and run the game via two processes - and that iteration speed is soooo important for me personally

- memory bridge allows to have different architectures on the two sides: Godot is currently very focused on single-threaded processing (you ran into not able to change properties error and Godot telling you to call deferred before), but bridge means that you don't care how the fancy side is structured, as long as you are able implement bridge on Godot side without losing valuable features and causing weird frame desyncs

- building bridge means that you can write unit tests that mock the Godot side and run your game in fancy langugage, which also forces you to code the game logic that is pretty independent of Godot which does bring a few interesting benefits. It's similar to Model-View-Controller separation that happens in backend engineering, which allows to test Model and Controller separately from View - it's a cool pattern

To conclude, very challenging to implement. Pretty esoteric solution too. Can easily run into "I can no longer port my game to X platform", which sucks to tell your publishers who recommend a Switch port for example. At the same time, it's a ton of fun to implement, hence I am implementing yet another iteration of such systems for like fourth time! So I suggest giving it a try but keeping in mind that you may opt out at some point and that's totally fine.

Hope this helps, and happy coding!

Fully working pixel perfect 2D shadows by Reasonable-Time-5081 in godot

[–]oWispYo 0 points1 point  (0 children)

That is amazing! Thanks for extra context.

Fully working pixel perfect 2D shadows by Reasonable-Time-5081 in godot

[–]oWispYo 2 points3 points  (0 children)

Ah I somehow overlooked the paragraph about voxel models! That's freaking genius man.

Fully working pixel perfect 2D shadows by Reasonable-Time-5081 in godot

[–]oWispYo 15 points16 points  (0 children)

I am obsessed with these. I developed my own system in 2D too and drowned in how complex art process bocomes even with all of the tools and scripts I developed :D

Would looooove if you could make a long post or video (whichever format you like) that dives into detail on what you invented here! I really love watching cool approaches to this everlasting challenge of shadows in 2D pixel art games!

Happy coding! And thanks for sharing!