This is totally worth the extra effort, great work! I actually wrote a parser for the aseprite file spec in my game. The texture atlas, animations, and frame data are also generated/derived directly from imported assprite files. It makes adding assets as simple as saving an aseprite file into a folder without requiring any special UI or manual steps, and I even get autocomplete in my editor for animation names
Ohhh man, i was expecting a real time aseprite parser XD. Basicly all i wanted is be able to change indexes colors on the go to be able to simulate old game hardware. Maybe i'l give it a go someday. But nice solution for fast exporting 👍👍
Nice workflow improvement! I've seen in Rust that there are some libraries (known as crates) for directly reading the .aseprite file. I'd like to try implementing that and see how it goes. It'd remove the need for the spritesheet step entirely. Could be something worth exploring for your codebase and language!
Yeah, it would be nice. Right now I'm planning to edit animations inside my engine using those sprite sheets, but definitely, I could load them directly from .aseprite.
This is very cool, but I am not sure I understand - Does this command constantly output changes to a file - and that fiile is loaded into your engine - and ur engine looks for when that file changed? - What about the layers? Are they lost? It would be amazing to have engine level control of the layers, which would allow for frames of animation generated by tuning layers on and off, but I guess this could also just be another full image in the png sheet. - Not sure I got it all - would be cool to see another vid with more detail.
Yes, layers are unfortunately lost. About updating, right now I have to click 'refresh' or 'f5'. Engine will go through the directory and if the modification timestamp was updated since the last refresh, the new sprite sheet will be exported and loaded into memory. But it's possible to detect those changes in separate thread and update sprite sheets without the need to click anything. Idea with with having access to layers is nice, and maybe Aseprite already have export option to keep layers separated.
Postaram się mniej więcej wyjaśnić, ale jest tutaj kilka mechanizmów. Nie jest też to idealne rozwiązanie, ale takie, które uznałem, że jest wystarczające. Najpewniej istnieją inne lepsze, ale wolałem też zostać przy takim, które w miarę rozumiem, a nie brać gotowy shader, którego nie mam pojęcia jak mogę zmodyfikować. 1. Kod shadera tutaj: gist.github.com/jakubpodgorniak/f27e90d1706ff0504d7b18175b378142 2. Do shadera przekazuje kolor, który nadaje barwę całej scenie (ambientColor) 3. Przekazywana jest też tablica świateł (max 48), dla każdego ze świateł określana jest pozycja, promień, barwa oraz intensywność. 4. Przekazywana jest też tekstura, na której wyrenderowane są rozmyte inne źródła światła (np. efekty cząsteczkowe) 5. Przekazywana jest kolejna tekstura, na której wyrenderowane jest rozmyte światło z tych widocznych na thumbnail-u zielonych ścianek. 6. Barwy te są kombinowane w jedną (punkt 3 działa dość słabo na zintegrowanych kartach, więc można wyłączyć tą opcję, wtedy wszystkie światła w grze są robione za pomocą pkt 4) Trochę chaotycznie opisane, ale też nie czuję się super mocny jeżeli chodzi o shader-y i to jest jeden z obszarów, w których chcę się mocniej podszkolić.
Sounds like you were manually updating the atlas file, how come you are not using texture packer, you should be able to achieve nearly the same workflow
Explain how that would help here please because i just googled what a texture packer is and off the top of my head i'm sure it doesn't solve the issue but i might be wrong just from my quick understanding.
@@ApexJnr This approach is just fine btw, For my workflow use the export function save all selections and frames as pngs, add the texture packer code to my gradle file then in my launch configurations I can choose which folders to include and whether to use the texture packer and that builds the atlas file and loads it in as it boots the game
When working on Pumpkinman I just wasn't planning for the game to grow as it did. So I was doing everything manually, and then didn't want to do revolution in codebase. That's why I wasn't using texture packer, but yes it would save time. For this game I will actually write my own simple texture packer (probably with some naive algorithm - but for my needs it's fine). It will be actually a topic of one of upcoming videos!
I’m sorry brother, I love commenters on indie dev videos so much, but please for the love of god research how to write the word “losing”, I’m losing my mind xD
The amount of time this must save you. I do everything cave man style.
Nothing wrong with that, I did whole game this way. I just tought this is a cool feature to have.
This is totally worth the extra effort, great work! I actually wrote a parser for the aseprite file spec in my game. The texture atlas, animations, and frame data are also generated/derived directly from imported assprite files. It makes adding assets as simple as saving an aseprite file into a folder without requiring any special UI or manual steps, and I even get autocomplete in my editor for animation names
Sounds great. Maybe someday I'll do the same for my game.
Very smart. These little things end up giving you hundreds of hours to focus on making your game rather than doing repetitive tasks.
Thanks. That's the idea, I hated adding new sprites till the end of Pumpkinman development, so this time I change approach : )
Ohhh man, i was expecting a real time aseprite parser XD.
Basicly all i wanted is be able to change indexes colors on the go to be able to simulate old game hardware.
Maybe i'l give it a go someday.
But nice solution for fast exporting 👍👍
Thanks and sorry to disappoint ;) maybe someday I'll write a pareser, but right now that's all I need.
Nice workflow improvement! I've seen in Rust that there are some libraries (known as crates) for directly reading the .aseprite file. I'd like to try implementing that and see how it goes. It'd remove the need for the spritesheet step entirely. Could be something worth exploring for your codebase and language!
Yeah, it would be nice. Right now I'm planning to edit animations inside my engine using those sprite sheets, but definitely, I could load them directly from .aseprite.
I made an aseprite and psd exporter integrated it into my engine too.
You’re amazing - +1 sub and I’ll be supporting the journey you’re on! Never give up
Thank You Very Much!
how tf do you only have 240 subs???
Thanks! I guess it will take some time to gain momentum.
@@undermountain_dev I saw this vid and subbed! So thats 1 more ^_^
Thanks :)
Oj bratku, leci subik
Dzięki!
That's very smart.
Thanks! I hope so.
This is very cool, but I am not sure I understand - Does this command constantly output changes to a file - and that fiile is loaded into your engine - and ur engine looks for when that file changed? - What about the layers? Are they lost? It would be amazing to have engine level control of the layers, which would allow for frames of animation generated by tuning layers on and off, but I guess this could also just be another full image in the png sheet. - Not sure I got it all - would be cool to see another vid with more detail.
Yes, layers are unfortunately lost. About updating, right now I have to click 'refresh' or 'f5'. Engine will go through the directory and if the modification timestamp was updated since the last refresh, the new sprite sheet will be exported and loaded into memory. But it's possible to detect those changes in separate thread and update sprite sheets without the need to click anything. Idea with with having access to layers is nice, and maybe Aseprite already have export option to keep layers separated.
W jaki sposób działa oświetlenie w tej grze?
Postaram się mniej więcej wyjaśnić, ale jest tutaj kilka mechanizmów. Nie jest też to idealne rozwiązanie, ale takie, które uznałem, że jest wystarczające. Najpewniej istnieją inne lepsze, ale wolałem też zostać przy takim, które w miarę rozumiem, a nie brać gotowy shader, którego nie mam pojęcia jak mogę zmodyfikować.
1. Kod shadera tutaj: gist.github.com/jakubpodgorniak/f27e90d1706ff0504d7b18175b378142
2. Do shadera przekazuje kolor, który nadaje barwę całej scenie (ambientColor)
3. Przekazywana jest też tablica świateł (max 48), dla każdego ze świateł określana jest pozycja, promień, barwa oraz intensywność.
4. Przekazywana jest też tekstura, na której wyrenderowane są rozmyte inne źródła światła (np. efekty cząsteczkowe)
5. Przekazywana jest kolejna tekstura, na której wyrenderowane jest rozmyte światło z tych widocznych na thumbnail-u zielonych ścianek.
6. Barwy te są kombinowane w jedną (punkt 3 działa dość słabo na zintegrowanych kartach, więc można wyłączyć tą opcję, wtedy wszystkie światła w grze są robione za pomocą pkt 4)
Trochę chaotycznie opisane, ale też nie czuję się super mocny jeżeli chodzi o shader-y i to jest jeden z obszarów, w których chcę się mocniej podszkolić.
Sounds like you were manually updating the atlas file, how come you are not using texture packer, you should be able to achieve nearly the same workflow
Explain how that would help here please because i just googled what a texture packer is and off the top of my head i'm sure it doesn't solve the issue but i might be wrong just from my quick understanding.
@@ApexJnr This approach is just fine btw, For my workflow use the export function save all selections and frames as pngs, add the texture packer code to my gradle file then in my launch configurations I can choose which folders to include and whether to use the texture packer and that builds the atlas file and loads it in as it boots the game
When working on Pumpkinman I just wasn't planning for the game to grow as it did. So I was doing everything manually, and then didn't want to do revolution in codebase. That's why I wasn't using texture packer, but yes it would save time. For this game I will actually write my own simple texture packer (probably with some naive algorithm - but for my needs it's fine). It will be actually a topic of one of upcoming videos!
I'm so sorry brother, I love indie devs so much, but please for the love of god research how to say the word "engine", I'm loosing my mind xD
who are you to decide how words are pronounced? let him say engine whichever way he pleases!
Speaks the smooth brained American that only speaks 1 language
I’m sorry brother, I love commenters on indie dev videos so much, but please for the love of god research how to write the word “losing”, I’m losing my mind xD