I integrated Aseprite with my game engine | devlog

Поділитися
Вставка
  • Опубліковано 24 лис 2024

КОМЕНТАРІ • 33

  • @Empa_Nada
    @Empa_Nada 3 місяці тому +21

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

    • @undermountain_dev
      @undermountain_dev  3 місяці тому +3

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

  • @soggy_dev
    @soggy_dev 18 днів тому

    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

    • @undermountain_dev
      @undermountain_dev  15 днів тому

      Sounds great. Maybe someday I'll do the same for my game.

  • @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  3 місяці тому +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 3 місяці тому +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  3 місяці тому

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

  • @brettchalupa
    @brettchalupa 3 місяці тому +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  3 місяці тому +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 3 місяці тому +1

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

  • @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  3 місяці тому

      Thanks :)

  • @arl-t8d
    @arl-t8d 3 місяці тому

    Oj bratku, leci subik

  • @ApexJnr
    @ApexJnr 3 місяці тому

    That's very smart.

  • @brentgreeff1115
    @brentgreeff1115 3 місяці тому

    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  3 місяці тому +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 3 місяці тому

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

    • @undermountain_dev
      @undermountain_dev  3 місяці тому

      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  3 місяці тому

      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 3 місяці тому +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