I integrated Aseprite with my game engine | devlog

Поделиться
HTML-код
  • Опубликовано: 4 ноя 2024

Комментарии • 31

  • @Empa_Nada
    @Empa_Nada 3 месяца назад +21

    The amount of time this must save you. I do everything cave man style.

    • @undermountain_dev
      @undermountain_dev  2 месяца назад +3

      Nothing wrong with that, I did whole game this way. I just tought this is a cool feature to have.

  • @reggielj
    @reggielj 3 месяца назад +9

    Very smart. These little things end up giving you hundreds of hours to focus on making your game rather than doing repetitive tasks.

    • @undermountain_dev
      @undermountain_dev  2 месяца назад +1

      Thanks. That's the idea, I hated adding new sprites till the end of Pumpkinman development, so this time I change approach : )

  • @MrVinicius5000
    @MrVinicius5000 2 месяца назад +2

    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 👍👍

    • @undermountain_dev
      @undermountain_dev  2 месяца назад

      Thanks and sorry to disappoint ;) maybe someday I'll write a pareser, but right now that's all I need.

  • @brettchalupa
    @brettchalupa 2 месяца назад +1

    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!

    • @undermountain_dev
      @undermountain_dev  2 месяца назад +2

      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.

  • @ClayMurray8
    @ClayMurray8 2 месяца назад +1

    I made an aseprite and psd exporter integrated it into my engine too.

  • @arl-t8d
    @arl-t8d 2 месяца назад

    Oj bratku, leci subik

  • @kariimora
    @kariimora 3 месяца назад

    You’re amazing - +1 sub and I’ll be supporting the journey you’re on! Never give up

  • @InexplicableVibes
    @InexplicableVibes 3 месяца назад +9

    how tf do you only have 240 subs???

    • @undermountain_dev
      @undermountain_dev  3 месяца назад +1

      Thanks! I guess it will take some time to gain momentum.

    • @Rageypeep
      @Rageypeep 3 месяца назад +1

      @@undermountain_dev I saw this vid and subbed! So thats 1 more ^_^

    • @undermountain_dev
      @undermountain_dev  2 месяца назад

      Thanks :)

  • @ApexJnr
    @ApexJnr 3 месяца назад

    That's very smart.

  • @brentgreeff1115
    @brentgreeff1115 2 месяца назад

    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.

    • @undermountain_dev
      @undermountain_dev  2 месяца назад +1

      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.

  • @arl-t8d
    @arl-t8d 2 месяца назад

    W jaki sposób działa oświetlenie w tej grze?

    • @undermountain_dev
      @undermountain_dev  2 месяца назад

      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ć.

  • @byronmorley2907
    @byronmorley2907 3 месяца назад

    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

    • @ApexJnr
      @ApexJnr 3 месяца назад

      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.

    • @byronmorley2907
      @byronmorley2907 3 месяца назад

      @@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

    • @undermountain_dev
      @undermountain_dev  2 месяца назад

      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!

  • @skill3472
    @skill3472 3 месяца назад +3

    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

    • @lilyeatssoup
      @lilyeatssoup 3 месяца назад +6

      who are you to decide how words are pronounced? let him say engine whichever way he pleases!

    • @VADYCAN
      @VADYCAN 3 месяца назад +4

      Speaks the smooth brained American that only speaks 1 language

    • @ClayMurray8
      @ClayMurray8 2 месяца назад +3

      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