[Game Dev] I don't have a publisher. What I do have are a very particular set of skills.



  • ZekZek Registered User regular
    edited March 27
    In light of endless quarantine I'm trying to take another stab at game dev since I'm bored out of my skull. I spent a couple days doing Game Maker Studio tutorials but decided to stick with Unity after all since I just couldn't get over the lack of proper C# object oriented practices; I program for a living and that's half the fun of it to me. I'm planning to stick with pure simple 2D games with tight scope, and maybe get into shape for some game jams down the line as a goal.

    Edit: I think I mostly figured out my Animator issue, though not without a little tedium. I'm working now on doing some kind of interactive idle game, inspired in part by Incremancer. I know there's a community for games like that with very low production values that I'm pretty confident I can hit. Nothing to show for a little while though.

    Zek on
  • KupiKupi Registered User regular
    Kupi's Weekly Friday Game Dev Status Report

    Well, it came down to the wire, and required me taking a day off of work (which I was going to do anyway but shhhh), but I got a little bit of work done this morning, so hey, we broke the streak, it was only 2.99 weeks without any game dev instead of 3.

    Returning to my platforming body movement system with fresh eyes, I immediately spotted an opportunity to compress the handling of various cases into a single handler, so I went ahead and did that refactor. It isn't done yet, and it blocked the planned unit testing, but it's going to make the eventual unit testing and debugging a lot easier, so whatever, I'm calling it a win.

    Since it took place in my designated game programming time, a tale of some other recreational programming I did this week: I've been playing Murder By Numbers recently, which is either a picross game with a visual novel attached, or a visual novel with a picross game that shows up whenever you spot a clue, depending how you look at it. For whatever reason, they gate some extra content behind your ability to solve these picross puzzles without using the built-in assists, such as handing you the next move or pointing out where you've filled a square in incorrectly. To get the maximum rank, you have to complete every puzzle in a chapter without using any assists. Well, imagine my shock when I got to the end of case 3 with only an A-Rank, when the maximum is S-Rank. It turns out that there's a piece of evidence in that case (and only in case 3) that you can miss by not investigating a particular area at a particular time, and since I caught on to what was happening in that case early, I managed to bypass it. And you can't just go back and re-attempt individual puzzles; if you want a better rank, you have to re-play the entire chapter and every puzzle in it. Now, at this point a normal person would just go look up picross solvers online, because if there's something that shows up in a crossword puzzle book, there's a solver for it online. But that felt like too little work to be entirely fair, so, I went and wrote my own.

    If you've never played picross, the idea is that you have a two-dimensional grid of cells and your objective is to fill in a particular set of cells such that they form a picture. (You usually have to be told what exactly you're looking at after the fact for the image to make sense, but I digress.) To help you figure out which cells are the correct ones, each row and column is annotated with a series of numbers that indicates how many "spans" there are in that row or column and how many cells they consist of. So, if the first row has "1 3 2 2" next to it, that means that there's a span of one cell, three cells, two cells, and two cells, in that order, with at least one blank cell between each one.

    Making a computer solve picross is actually fairly easy if you don't mind applying a bit of brute force to it. Leaving boring stuff like parsing input files and rendering the solved puzzle out, here's how it goes:

    - For each row and column, enumerate all possible blank/marked combinations that solve that row or column.
    - Put all of the rows and columns into a bucket. To help the algorithm converge faster, I sorted them in ascending order of number of possible solutions, then in descending order by largest span, which leaves rows or columns likeliest to have useful information at the front of the bucket.
    - Loop through the contents of the bucket until nothing is left in the bucket OR you reach a maximum number of iterations*.
    - For each potential solution in the current row or column, remove the solution if it contradicts the current state of the grid. (Says "filled" where the grid says "blank" or says "blank" where the grid says "filled".) If this leaves zero solutions associated with the row or column, error out-- the puzzle is flawed.
    - If every remaining solution in the row or column agrees on the state of a particular cell, write that state onto the grid.
    - If there is only one solution in the row or column, remove that row or column from the bucket.

    And that's it! There are some logical tricks I use when solving puzzles manually that aren't represented in this algorithm, but I've yet to see it fail to solve any of the puzzles in Murder By Numbers. As for that asterisk about the maximum number of iterations, I found that it's actually possible to create a picross puzzle that has multiple solutions, in which case the algorithm I wrote will loop infinitely, since it can't ever reach a single solution. With the iteration limit, you still get the majority of the solution, and the ambiguous cells will be indicated as such.

    The lesson to take away from this for game devs: proofread your goddamned story flags. Or some angry nerd will write a program that kicks your program's ass.

    My favorite musical instrument is the air-raid siren.
  • IzzimachIzzimach Fighter/Mage/Chef Registered User regular
    Blocked out the second puzzle. I guess it's an underground bunker? Pretty standard "push-the-blocks" puzzle. You push the blocks onto the targets/pads. When all of the blocks are in the right spot, the door - which in this case is a huge panel covering up a hole - opens up.

  • ZibblsnrtZibblsnrt Registered User regular
    edit2: figured out how to make unlit 2d sprite shader in shadergraph, bad news....build crashes waterfox (havent tried firefox) but it plays in chrome! lights look much better, also added background so you can see your light radius and also pretty thrust particles which are just distracting and need tweaking

    It works happily in Firefox, at least for me. The "you've got an asteroid nearby" pulsing is interesting, too.

    (I'm also getting screwed in it by my own project - the ship in mine can reverse, so I keep reflexively trying to do that only to faceplant into a rock when trying out your game. Doh!)

  • rembrandtqeinsteinrembrandtqeinstein Registered User regular
    Zibblsnrt wrote: »
    edit2: figured out how to make unlit 2d sprite shader in shadergraph, bad news....build crashes waterfox (havent tried firefox) but it plays in chrome! lights look much better, also added background so you can see your light radius and also pretty thrust particles which are just distracting and need tweaking

    It works happily in Firefox, at least for me. The "you've got an asteroid nearby" pulsing is interesting, too.

    (I'm also getting screwed in it by my own project - the ship in mine can reverse, so I keep reflexively trying to do that only to faceplant into a rock when trying out your game. Doh!)

    Thanks for playing! And TY for the report on firefox. The pulsing is supposed to be a "heartbeat" but it looks like compile to webgl does some compression so it doesn't sound like that anymore.

  • ZekZek Registered User regular
    Over the past few days I got some basics in place - simple generated tile map, bounded camera controls with zoom in/out, dropping units with the mouse and having them wander within the boundaries. Thinking of doing something like an idler version of SimAnt - next is a home base, resource harvesting and enemies.

  • nervenerve Registered User regular
    nerve wrote: »
    Is anyone familiar with shader graph displacements?

    I'm having issues when trying to use shader graph to simulate wind on grass while also having multiple meshes use the same texture sheet (grass, flowers, clovers, etc). I'm using a gradient to prevent the bottom of the mesh from waving and it works well for the few items drawn at the top of the texture, but all other parts only get the white part of the gradient. I'm trying to use the Tiling and Offset node but can't figure out how to make it offset based on the lowest UV point of a particular mesh. Is this possible or should I not be having everything on the same texture?

    Here is an example of what I'm trying to do manually. In this example I'm trying to make the gradient begin where the lower grass texture begins instead of the at the top.

    In case anyone is interested in something like this, I was able to get this working by using vertex paint in blender and then using a vertex color node in shader graph. Now I am able to keep all of the objects rooted to the ground even though they are not in the same orientation or Y position in the texture.

  • GlalGlal Registered User regular
    Crossposting from the gaming thread, as it also includes various development assets along with games:

    GDC Relief Bundle
    A bundle hosted by gamedev.world with content from 104 creators.
    Pay what you want for 167 items


  • LilnoobsLilnoobs Alpha Queue Registered User regular
    edited March 31
    I was nearing some sort of goal state for my JRPG system, so naturally I tossed it aside and started anew.

    What we have now is something a bit more limited in scope, a diablo-esque ARPG Loot, Stat, and Item system.

    As an additional note, I started incorporating in Art assets to my personal project Voxel Fight, and I thought this tumbling feature was just too funny not to share.

    The shelter in place culture has allowed me to really focus on various projects for work and personal, which is great so as long as I keep my job.

    Lilnoobs on
  • IzzimachIzzimach Fighter/Mage/Chef Registered User regular
    I'm trying to find a good way to handle drawing stuff when the player is instead a small space (i.e., underground). Some examples for UE4 will look for object blocking your view and make them transparent, but that requires going through a bunch of objects and modifying all their materials. In this case I would have to use specific materials that support translucency or masking.

    A promising method is to use the SceneCapture, which renders a scene and dumps it onto a render texture. The key point is that you can tell it "only render these objects" so I could use it to render only the underground objects and then blit that over the normal view, or crossfade between the normal view and the "only rendering underground things" view.

    The main problem I'm having now is that the SceneCapture camera doesn't do auto exposure (eye adaptation) the same as the main view, so when you are underground everything looks really dark. I'm switching from 4.23 to 4.24 to see if anything improves, and then maybe switch to 4.25-preview. In 4.25 they are changing the auto exposure so it's likely any scene capture quirks would be fixed as well.

  • Mc zanyMc zany Registered User regular
    Unreal can make stuff transparent depending on distance to the camera (distancefade). I use them for stealth ships but you could set it so that the top layer goes transparent when the camera gets close.

  • IzzimachIzzimach Fighter/Mage/Chef Registered User regular
    I would need to change a bunch of materials to do it via shaders (landscape, particles, avatars) so I'm hoping this alternate method works, but in the end I may have to just bite the bullet and add fading to all (most?) of my materials.

Sign In or Register to comment.