Undermountain Dev
Undermountain Dev
  • 18
  • 40 697
This bug haunted me for 7 months | devlog
Want to support me?
Check out Pumpkinman Demo on Steam : store.steampowered.com/app/2564870/Pumpkinman/
Thanks!
Join discord: discord.gg/7Wz4bw258t
socials:
twitter: undermnt_pj
twitch: www.twitch.tv/under_mountain_
github: github.com/jakubpodgorniak
icon used in thumbnail: www.svgrepo.com/svg/491547/arrow-shape-turn-left?edit=true
#gamedev #indie #indiegame #indiegames #gamedesign #imgui #interfacedesign #pixelart
Переглядів: 1 618

Відео

How games manage references between objects?
Переглядів 688Місяць тому
Want to support me? Play Pumpkinman Demo on Steam and check out the full version if You liked it! store.steampowered.com/app/2564870/Pumpkinman/ Thanks! Join discord: discord.gg/7Wz4bw258t socials: twitter: undermnt_pj twitch: www.twitch.tv/under_mountain_ github: github.com/jakubpodgorniak #gamedev #indie #indiegame #indiegames #gamedesign #imgui #interfacedesign #pixelart
I'm making custom sprite editor | devlog
Переглядів 5572 місяці тому
Pumpkinman Demo will be released at 12.09.2024. This time, a shorter video where I mainly talk about progress I managed to made in my game & engine. Hope You like it. Want to support me? Buy Pumpkinman on Steam : store.steampowered.com/app/2564870/Pumpkinman/ Thanks! Join discord: discord.gg/7Wz4bw258t socials: twitter: undermnt_pj twitch: www.twitch.tv/under_mountain_ github: githu...
What is texture packing?
Переглядів 1,5 тис.3 місяці тому
Pumpkinman Demo will be released at 12.09.2024. Want to support me? Buy Pumpkinman on Steam : store.steampowered.com/app/2564870/Pumpkinman/ Thanks! Join discord: discord.gg/7Wz4bw258t socials: twitter: undermnt_pj twitch: www.twitch.tv/under_mountain_ github: github.com/jakubpodgorniak icons used: uxwing.com/graphic-card-icon/ uxwing.com/microchip-icon/ #gamedevlopment #indie #indi...
I integrated Aseprite with my game engine | devlog
Переглядів 8 тис.3 місяці тому
Want to support me? Buy Pumpkinman on Steam : store.steampowered.com/app/2564870/Pumpkinman/ Thanks! Join discord: discord.gg/7Wz4bw258t socials: twitter: undermnt_pj twitch: www.twitch.tv/under_mountain_ github: github.com/jakubpodgorniak icons used: uxwing.com/image-file-icon/ uxwing.com/writing-pad-line-icon/ uxwing.com/cube-icon/ uxwing.com/steam-icon/ #gamedevlopment #indie #in...
How do modern games handle pixel art?
Переглядів 17 тис.4 місяці тому
Want to support me? Buy Pumpkinman on Steam : store.steampowered.com/app/2564870/Pumpkinman/ Thanks! Join discord: discord.gg/7Wz4bw258t socials: twitter: undermnt_pj twitch: www.twitch.tv/under_mountain_ github: github.com/jakubpodgorniak icon used in thumbnail: www.svgrepo.com/svg/491547/arrow-shape-turn-left?edit=true #gamedev #indie #indiegame #indiegames #gamedesign #imgui #int...
Creating image viewer for my game engine | devlog
Переглядів 4754 місяці тому
Want to support me? Buy Pumpkinman on Steam : store.steampowered.com/app/2564870/Pumpkinman/ Thanks! Join discord: discord.gg/7Wz4bw258t socials: twitter: undermnt_pj twitch: www.twitch.tv/under_mountain_ github: github.com/jakubpodgorniak #gamedev #indie #indiegame #indiegames #gamedesign #imgui #interfacedesign
Types of movement in games
Переглядів 8834 місяці тому
Hi! This weeks video is bit shorter and less technical as I had pretty tight schedule lately, still I hope You like it! Want to support me? Buy Pumpkinman on Steam : store.steampowered.com/app/2564870/Pumpkinman/ Thanks! Join discord: discord.gg/7Wz4bw258t socials: twitter: undermnt_pj twitch: www.twitch.tv/under_mountain_ github: github.com/jakubpodgorniak #gamedev #indie #indiegam...
I made text editor inside my game from scratch | devlog
Переглядів 5015 місяців тому
Want to support me? Buy Pumpkinman on Steam : store.steampowered.com/app/2564870/Pumpkinman/ Thanks! Join discord: discord.gg/7Wz4bw258t socials: twitter: undermnt_pj twitch: www.twitch.tv/under_mountain_ github: github.com/jakubpodgorniak #devlog #gamedev #indie #indiegame #indiegames #gamedesign #zig #gapbuffer #programming
Editing code while game is already running | devlog
Переглядів 3,4 тис.5 місяців тому
Want to support me? Buy Pumpkinman on Steam : store.steampowered.com/app/2564870/Pumpkinman/ Thanks! Join discord: discord.gg/7Wz4bw258t socials: twitter: undermnt_pj twitch: www.twitch.tv/under_mountain_ github: github.com/jakubpodgorniak #gamedev #indie #indiegame #indiegames #gamedesign #imgui #zig Icons used to create animations: uxwing.com/bulb-light-icon/ uxwing.com/cpu-icon/ ...
Making GUI system for my game from scratch | devlog
Переглядів 3,4 тис.6 місяців тому
You can support me by getting Pumpkinman : store.steampowered.com/app/2564870/Pumpkinman/ Join discord: discord.gg/7Wz4bw258t socials: twitter: undermnt_pj twitch: www.twitch.tv/under_mountain_ github: github.com/jakubpodgorniak #gamedev #indie #indiegame #indiegames #gamedesign #imgui #zig
What makes a game engaging? | devlog
Переглядів 1686 місяців тому
You can support me by getting Pumpkinman : store.steampowered.com/app/2564870/Pumpkinman/ Join discord: discord.gg/7Wz4bw258t socials: twitter: undermnt_pj twitch: www.twitch.tv/under_mountain_ github: github.com/jakubpodgorniak #gamedev #indie #indiegame #indiegames #cthulhu #lovecraft #detective #gamedesign
How I designed my game to maximize fun? | devlog
Переглядів 1,4 тис.7 місяців тому
You can support me by getting Pumpkinman : store.steampowered.com/app/2564870/Pumpkinman/ Join discord: discord.gg/7Wz4bw258t socials: twitter: undermnt_pj twitch: www.twitch.tv/under_mountain_ github: github.com/jakubpodgorniak #gamedev #indie #indiegame #indiegames #cthulhu #lovecraft #detective
Become a detective in Lovecraftian 20s | devlog
Переглядів 1707 місяців тому
You can support me by getting Pumpkinman : store.steampowered.com/app/2564870/Pumpkinman/ Join discord: discord.gg/7Wz4bw258t socials: twitter: undermnt_pj twitch: www.twitch.tv/under_mountain_ github: github.com/jakubpodgorniak #gamedev #indie #indiegame #indiegames #cthulhu #lovecraft #detective sources: thumbnail photo: Public Domain Photo of H. P. Lovecraft in 1915 taken for the...
Making new game for the glory of Cthulhu | devlog
Переглядів 6548 місяців тому
You can support me by getting Pumpkinman : store.steampowered.com/app/2564870/Pumpkinman/ Join discord: discord.gg/7Wz4bw258t socials: twitter: undermnt_pj twitch: www.twitch.tv/under_mountain_ github: github.com/jakubpodgorniak #gamedev #indie #indiegame #indiegames
Pumpkinman announcement trailer
Переглядів 258Рік тому
Pumpkinman announcement trailer
30 hours of programming without sleep | Timelapse
Переглядів 1542 роки тому
30 hours of programming without sleep | Timelapse

КОМЕНТАРІ

  • @degariuslozak2169
    @degariuslozak2169 День тому

    Looks good👌

  • @weasel.3683
    @weasel.3683 6 днів тому

    You should try signed distance field (SDF) fonts. They are essentially sprite fonts that are infinitely upscalable and only fail at really small sizes.

  • @aSameplayer
    @aSameplayer 8 днів тому

    I usually use a resolution ratio of 1:1 and then I crop and the rectangle the player can be in that triggers camera movement, camera bounds, is relativ to the screen. or if I do not want different sizes, I render a 3D Console, liek a gameboy and then I place the virtuell screen with a shader on the screen mesh and then I fixed it :3

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

    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 11 днів тому

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

  • @ike8187
    @ike8187 17 днів тому

    I've been putting off fixing this in my font rendering. I'm glad you solved it for me 😂

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

    🦔👻

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

    hmmm

  • @gavinrector
    @gavinrector 19 днів тому

    First

  • @ultimaxkom8728
    @ultimaxkom8728 20 днів тому

    This is more of minimizing the "unfun". Most of which are self-afflicted. So protecting players from themselves, some might say.

  • @leonardo01570
    @leonardo01570 Місяць тому

    What libraries or frameworks are you using in you game engine? I would love to know more about it

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

      It's zig + SDL2 + SDL_image + freetype for font rasterization. Everything else is homemade.

  • @bl2575
    @bl2575 Місяць тому

    Some interesting approaches, but I predict that localization will be a problem with sprite fonts. Many languages have complex ligatures (multiple characters become one complex character) , composable marks, ... Not sure how this is usually solved for pixel art style game, but I would use a text renderer that correctly handle all the complex rules and post-process it to make it "pixelated"...

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

      Yes, thats true. But that would assume I will support non latin based alphabets (if thats correct term) which I won't do due to lack od resources. If game happens to be success and I can afford proper localiztion, then I will probably also have resources to rework text rendering.

  • @leonss2356
    @leonss2356 Місяць тому

    good stuff :P

  • @byronmorley2907
    @byronmorley2907 Місяць тому

    I'm not sure who your intended audience here is, I'd imagine anyone looking at object interaction isn't really worried about the minutia of RAM allocation. Maybe start the video with some goals, and end with a conclusion, the point you want to get across, i think the subject is interesting but it needs to be tailored to the right audience.

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

      Thanks for the insight. I usually try to keep videos not too technical, so it's not only targeting other game devs. But here I probably get carried out, but on the other hand knowking how allocation works explain some of decision I made in this video, which may be a bit unclear without this knowledge. Maybe this video would work better as fully technical explanation/presentation but I'm explicitly avoiding making such videos.

    • @byronmorley2907
      @byronmorley2907 29 днів тому

      @@undermountain_dev it's all good, it really depends what you want to get out of your channel, I'm a dev I like the content because of the deep dive stuff but this video felt like it was trying to cater to both sides of the opposite coin

    • @ultimaxkom8728
      @ultimaxkom8728 20 днів тому

      @undermountain_dev For me *personally,* this video is great _because_ of its depth. Surface level videos are already dime a dozen, after all.

    • @byronmorley2907
      @byronmorley2907 20 днів тому

      @@ultimaxkom8728 I agree, so many dev's just play with engines and don't really get into the weeds of problem solving that we all face, especially when building things without the common engines. I want more of the complex problems and less of the surface level stuff.

  • @piteroix
    @piteroix Місяць тому

    Shadow sigma 😮

  • @jasonl9266
    @jasonl9266 Місяць тому

    They use a program called pixel renderer

  • @NoneOne_
    @NoneOne_ 2 місяці тому

    I agree with the other comment, this is very underrated, keep up!

  • @piteroix
    @piteroix 2 місяці тому

    That's the better tool than Unity. You are mrocznaSigma

  • @lautystrike1
    @lautystrike1 2 місяці тому

    Now this is a real underrated devlog, is weird to see tools in the own game

  • @lenargilmanov7893
    @lenargilmanov7893 2 місяці тому

    Hey! I read the same article, and eventually decided to use the guillotine algorithm, cause it was relatively simple. Also why not use instancing instead of batching?

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

      Yeah, maybe in future I'll improve my approach too, but right now - anything that works. About instancing - that's from my understanding how SDL works, maybe there are ways to easily costumize it and improve performance, but I'm quite certain it won't be neccessary for my game.

  • @hotworlds
    @hotworlds 2 місяці тому

    Aseprite has a texture packing export option for sprite sheets built in! There's a lot of options for exporting different json metadata too. You just need to put all your art in one file on different layers and animation frames.

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

      That's interesting. I'm not sure if managing all game's graphic in single .aseprite file would be convenient after some time. But that's helpful knowledge. Thanks :)

    • @hotworlds
      @hotworlds 2 місяці тому

      @@undermountain_dev yeah yours is definitely way more flexible and all kinds of cool features. Still some of the aseprite export options might be helpful for you at the beginning of your process. And most of it works with cli. Like I'm using the trim frames options since my characters have hundreds of frames of all different sizes.

  • @elgoog-the-third
    @elgoog-the-third 2 місяці тому

    How *do* modern games handle pixel art? ftfy

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

    Idol w końcu nagrał sigma

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

    In general, is a packed texture referenced by ‘indices’ in the code, such as (xtop, xbottom, ytop, ybottom) for a game character? Also, was texture packing the reason why Minecraft’s earlier versions stored all textures in a single file?

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

      1. Kind of like that. I my code I've list of sprites. Sprite have 3 different properties: reference to texture atlas, indices (xtop etc.) - I call this 'clip', and pivot 2. I don't know details about minecraft, but most likely it's true. Also it's simplest solution if there's not that much graphic content in the game. Just load single texture and that's all what's needed.

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

    Im a pixel purist. I cant stand seeing pixel rotate or slip in a game x_x

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

      Understandable. Personally this doesn't bother me so I allow this in my game.

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

      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.

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

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

      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.

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

    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.

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

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

    Oj bratku, leci subik

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

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

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

    I’ve never made a game nor do I plan on making one anytime soon, but I’ve always found it cool how much background thinking and implementing goes on to release a game and have it look good on different screens. I did some web design back in the day and I remember getting stuck on having my webpage fit nicely between pc and phone screens. This was a great video for a small channel like yourself

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

      Thanks! Yeah, it's a topic I was also scratching my head over for quite some time. But after releasing one game I can grasp it pretty well, but still learned I learned a lot just by making this video.

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

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

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

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

    That's very smart.

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

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

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

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

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

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

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

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

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

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

      Speaks the smooth brained American that only speaks 1 language

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

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

    underrated

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

    how tf do you only have 240 subs???

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

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

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

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

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

      Thanks :)

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

    This is a cliché comment, but I was actually shocked when I finished the video and realized it didn't even have 200 views. Keep up the good work!

  • @depp9111
    @depp9111 4 місяці тому

    nice video and good luck on your game👍👍👍👍👍👍👍

  • @FlukyDev
    @FlukyDev 4 місяці тому

    great video, i enjoyed watching and i have to say your channel is so underrated!

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

      Thank You Very Much! And good luck with Your dream game!

    • @FlukyDev
      @FlukyDev 4 місяці тому

      @@undermountain_dev thank you!

  • @piteroix
    @piteroix 4 місяці тому

    Spooky scary skeleton💀

  • @NoneOne_
    @NoneOne_ 4 місяці тому

    Yo man that looks like great work! Keep it going!

  • @PJutch
    @PJutch 4 місяці тому

    Problem with discrete movement on a square grid is is that it creates an eternal question: how many neigbours cell has?

  • @PJutch
    @PJutch 4 місяці тому

    Another useful classification you can make is discrete angle vs continous angle. Like shooting in Dead Cells (2 directions) vs Super Metroid (8 directions) vs Terraria (any angle) is significantly different.

  • @PJutch
    @PJutch 4 місяці тому

    I have seen another nice solution for interpolation - exponentially interpolation. Iirc the formula is newSpritePos = fieldPos + (oldSpritePos - fieldPos) * exp(-speed*deltaTime) Basically, you just multiply distance between sprite position ad field position by factor < 1 and adjust that factor because of variable frame rate. Nice thing about it is that you only need to store sprite position and field position and it's execatlywat you want to access.

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

      Hmm, haven't seen that, but looking at formula it should work nicely, no conversions needed. Maybe I will find chance to test it. Thanks!

  • @piteroix
    @piteroix 4 місяці тому

    🎉🎉

  • @fuzzy-02
    @fuzzy-02 4 місяці тому

    That was insightful to watch, I liked the (current) final implementation especially the part where stuff like collision is handled on the discreet plane level, I feel it make things much easier to code and for performance wise. Would love to hear about benchmark comparison

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

      Thanks!. It's much easier implementation wise, but I don't have any data about performance, unfortunately. The entities movement wasn't bottleneck at any point, so I didn't bother improving it's performance. This change was only driven by how painful it was to work with previous solution. From my experience, I would say second solution is more performant, but without proper tests it's hard to say.