Due to a security update, you may have to reset your password. Don’t panic, nothing has gone wrong and your password is safe. If you don’t have access to that email, send Tube a message at [email protected] More info here: https://status.vanillaforums.com/incidents/2zdqxf3bt7mj
Our new Indie Games subforum is now open for business in G&T. Go and check it out, you might land a code for a free game. If you're developing an indie game and want to post about it, follow these directions. If you don't, he'll break your legs! Hahaha! Seriously though.

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

15758596062

Posts

  • KupiKupi Registered User regular
    Kupi's Weekly* Friday Status Report

    I'm in the wrong mood for status reports right now.

    Accomplished this week: "Move" and "Copy" operation for level editor. You can move the selection and copy the selection. The Copy operation can be used to create a copy over top of the source without disrupting the copy operation (that is to say, every part of the original is reproduced even if the original started getting deleted by being painted over by the copy).

    Unless some random flash of inspiration hits me, I'm taking a break this week to just play video games and have no expectations of myself, so there will be no report next week.

    My favorite musical instrument is the air-raid siren.
  • LilnoobsLilnoobs Alpha Queue Registered User regular
    Well, finally implemented a saving system for the RPG system I'm making in Unity.

    I can finally see a point of light across the horizon, whispering "release me on the asset store".

    IncenjucarRoyceSraphimtemplewulfCornucopiistdipuc4lifeDisruptedCapitalistZavianJustice
  • RoyceSraphimRoyceSraphim Registered User regular
    fYhBQTF.png

    Decided to mockup ahead of time next project in gamemaker (gamemaker 2 having a steam sale this weekend). I love aseprite.

    KoopahTroopahElvenshaeIncenjucarZavianDisruptedCapitalist
  • CornucopiistCornucopiist Registered User regular


    Endless Azure is now updated to the new #Unity #ShaderGraph which will make it much easier to swap colors.
    Here I'm testing the new updated code to select colors. The code behind the buttons was some of the oldest I've written, and it showed.
    Mainly the novelty is in swapping parts of an atlas texture around to 4 areas where I have set up my UV, so I can create as many texture combos as I want.
    I'll need to update the interface for that, but first I'll be using the shader graph shader I created in another project.
    Now that I figured out a way to do the texture swap, I can design the atlas texture for that other project and start skinning some spaceship models...

    KupiRoyceSraphimZavianDisruptedCapitalist
  • ZavianZavian Senātus Populusque Rōmānus Registered User regular
    So thanks to Steam thread, I got the idea for an anime geese dating sim VN where you try to romance geese, though usually end up dead or arrested in a jail cell with a giant convict named Geese who surprisingly turns out be a fellow friendly goose enthusiast (and who ends up bludgeoning you to death during a deadly game of Play Goose). Basically the dark souls of anime geese VNs, where the only way to win is to HONK
    MfdKvSX.jpg
    I did this mockup last night, this weekend I'm going to use Ren'Py to do a demo and release it free on Itchio by Sunday hopefully

    Steam - PSN: Zavian2099 - Twitch
    DrovekKoopahTroopahIanatordipuc4lifeIncenjucarRoyceSraphimDisruptedCapitalistElvenshae
  • JusticeJustice Registered User regular
    Finished a game in GameMaker Studio 2 that I've been working on with my wife for the last... uhm... we'll just say "years" and leave it at that.

    Been working through the big Udemy Unity 2D course and really loving it. The editor workflow and using C# really click with me. Definitely smaller projects this time through. Really small. In fact, I think the first one is going to be called "That Happened." It'll be a brutally minimalist app that records the time and date that X, Y, or Z thing happened, for example, to track when you get into a bad mood, or get a headache, or whatever. I don't know if people still do "quantified self," but maybe for that. Also, it'll have adorable drawings of cats or dinosaurs or something, because we'll also need to practice using Unity's art/animations workflow.

    IncenjucarKoopahTroopahZavianIanatorRoyceSraphimGlaldipuc4lifeCornucopiistElvenshae
  • CornucopiistCornucopiist Registered User regular
    Quick and dirty texturing on the modular model created from a physical model... well, photos thereof!

    fgpu315qwmmp.jpg

    I'm changing it up a bit to allow for some functionality the world designer asked for. There's room in the middle of the fuselage to store a frame now.
    Once I'm tired working on the landing gear, I'll center the modules. Then I'll put the whole thing together in Unity as a prefab, and start flying it around as a motivational exercise... Following which I have to completely change over the cityscape to fit into the world designer's vision.
    TBH I would be so much further along by now if Unity's renderer did not freak out over scaling, so here's a warning: don't scale sh*t more than ten times or so. It only took me two months to figure that out so, you're welcome.

    RoyceSraphimKupiJusticeIzzimachZaviandipuc4lifeElvenshaeDisruptedCapitalist
  • KupiKupi Registered User regular
    Kupi's Weekly Friday Status Report

    So, my vacation from personal expectations went on a little longer than I'd budgeted, but y'all ain't rid of me yet. This week I got back into the swing of things with some work on Contexts, Levels, and how you transition between them.

    A refresher on the vocabulary I'm using:

    Entity, component, and system - as per their usual definitions in ECS.
    Component Storage - An object that keeps track of components and responds to queries for entities matching specific component layouts.
    Context - An object that combines a component storage with a pipeline of systems to run against those components. (Doing so allows me to, say, implement pause logic by switching instantly to a different context, or make a cutscene-handling context that operates on the same component storage as the main gameplay context.)
    Level - the fundamental unit of collection of stuff presented to the player. Like a "Scene" in Unity or {Whatever it's called in Unreal} in Unreal.
    Character - one placeable "thing" in a level. Like a "GameObject" in Unity or an "Actor" in Unreal.

    So far all of those objects have been implemented and are working as I'd like them to. Now I'm starting to move out of laboratory conditions, addressing the issue of how to arrange the transitions between various Contexts and Levels on a programmatic and data-driven level. The first thing I set out to do was make a Game class that handles initialization in an I/O driven way, either taking a Level file to start from from the command line or falling back to a config file if none is supplied.

    There were three possibilities for how to handle the transition between Contexts:
    - The Game decides how to transition between Contexts.
    - A Context decides how to transition between Contexts.
    - A System decides how to transition between Contexts.

    I decided against the third option because I'm trying to maintain a strict hierarchy of ownership of objects. If one class is composited into another class, then the composited object should have no interaction whatsoever with the higher-level class. Systems query Component Storages for Entity streams and write Component updates back into them; they don't (and shouldn't) know what a Context is. As for the remaining two, I think there's an argument to be made for either of them; in some senses a Game is a procession of Contexts, and sometimes the extant Contexts need to be pushed and popped on a stack and sometimes a new Context needs to wipe out every other Context that exists (as in the case of, for instance, going back to the main menu from the pause menu, which is layered on top of the main gameplay). ... having made that argument, I think I might wind up going back and revising what I did, which is the second option of having Contexts that are given the option every frame to choose how they want to affect an input list of Contexts.

    Moving on from that trainwreck, I had another major design pop up, which is "what decides which Systems should be in the pipeline for a particular Context?" That's another question that wound up having several possible answers:
    - The Context itself decides what Systems are in its pipeline. Subclasses of Context, like "GameplayContext", "CutsceneContext", or "PauseContext" generate their own pipelines from known System types.
    - Each Level stores a Context type and list of System types. When the level is loaded, the Context is created and provisioned with the Systems listed.
    - Components are marked up with attributes indicating which Systems should exist in the pipeline for the Context containing them. When a Context is created, the Component Storage is scanned for all the Component types it contains and the Systems are emitted to it.

    Ultimately, I decided to go with the strategy of "yes":
    - Typed Contexts determine what Systems they start with. This is because if the Level determines what Systems exist in the Context's pipeline, then I have to remember to include those Systems each time. I don't like the idea of restarting my debug session because I forgot to say that gravity should be a thing for the fifth time.
    - The Level can also include additional Systems, because some levels will have unusual processing steps, like a shader that only applies during that level, or an extra counter that tracks your maximum goomba stomp combo.
    - When creating a Context out of a Level, Components can emit a required System that must exist. The reasoning for this one is that certain components, like character state machine data Components, are meaningless outside of the context of the Systems that process them. And while it's possible to simply include every possible necessary System in a core context, that winds up putting a bunch of no-op systems into common pipelines* and that just rubs me the wrong way.

    * for example, the MainGameplayContext for a hypothetical Mario game where there's only one MainGameplayContext class without smart provisioning of the System pipeline looks like:
      ProcessMarioStateMachineSystem
      ProcessGoombaStateMachineSystem
      ProcessKoopaTroopaStateMachineSystem
      ProcessBowserStateMachineSystem
    
    ... even if the level contains no Koopa Troopas or Bowsers. Now, Mario only has like 20 or so enemy types total, but if you start to have a bajillion miniboss characters or enemy variants, it starts to get questionable.

    I'm nowhere close to having this feature done, so continuing to peck away at it is my goal for this week.

    My favorite musical instrument is the air-raid siren.
    LD50
  • EnigmedicEnigmedic Registered User regular
    fYhBQTF.png

    Decided to mockup ahead of time next project in gamemaker (gamemaker 2 having a steam sale this weekend). I love aseprite.

    Final Fantasy 7 x NES Top Gun Pro Beach Soccer

    3ds FC: 0645 - 7166 - 9801
    DrovekHandkordipuc4lifeRoyceSraphimElvenshae
  • RoyceSraphimRoyceSraphim Registered User regular
    Enigmedic wrote: »
    fYhBQTF.png

    Decided to mockup ahead of time next project in gamemaker (gamemaker 2 having a steam sale this weekend). I love aseprite.

    Final Fantasy 7 x NES Top Gun Pro Beach Soccer

    No, just a game based on story my mom told of a kid getting eaten by a shark in Mogadishu. So this just gonna be a Somali kid kicking soccer balls against invading sharks and sinking the ship.

    Ideally I translate this to Somali, convert to HTML5, upload to internet, spam Somali people.

    But first, need to actually program a proper state machine to load the game from menu and not ....destroy the player every character death

    IncenjucarElvenshaeDisruptedCapitalist
  • Mc zanyMc zany Registered User regular
  • JusticeJustice Registered User regular
    @Kupi That's an interesting discussion of architecture. I suffered from a lack of understanding and forethought when I made my game, and I want to do better next time. Here, I feel like I'm dropping into the middle of a longer discussion. If you don't mind, can I ask:

    What framework or engine are you using? It sounds a bit like you're making your own, given that you're forging your own vocabulary.

    I'm not clear on the need for both contexts and levels, and both entities and characters.

    I'm severely limited by my lack of CS training, but as best I can re-summarize what you've said: The player is presented with a scene (context) that contains a controller object (component storage) that evaluates what the current scene is and does two things. It (1) instantiates a list of entities (characters) and components (behaviors) necessary to that scene, and then (2) either itself or through a second controller, loops through each of the entities every frame allowing them to do their state thing.

    Sorry, again, perhaps you're just speaking to people who have a much more nuanced and informed grasp of these things, and you don't need to teach me. Anyhow, I'll keep following along as I teach myself Unity and programming patterns translated into Unity style, and see if I can catch up.

  • templewulftemplewulf The Team Chump USARegistered User regular
    Justice wrote: »
    @Kupi That's an interesting discussion of architecture. I suffered from a lack of understanding and forethought when I made my game, and I want to do better next time. Here, I feel like I'm dropping into the middle of a longer discussion. If you don't mind, can I ask:

    What framework or engine are you using? It sounds a bit like you're making your own, given that you're forging your own vocabulary.

    I'm not clear on the need for both contexts and levels, and both entities and characters.

    I'm severely limited by my lack of CS training, but as best I can re-summarize what you've said: The player is presented with a scene (context) that contains a controller object (component storage) that evaluates what the current scene is and does two things. It (1) instantiates a list of entities (characters) and components (behaviors) necessary to that scene, and then (2) either itself or through a second controller, loops through each of the entities every frame allowing them to do their state thing.

    Sorry, again, perhaps you're just speaking to people who have a much more nuanced and informed grasp of these things, and you don't need to teach me. Anyhow, I'll keep following along as I teach myself Unity and programming patterns translated into Unity style, and see if I can catch up.

    I can't speak to his of framework or engine, but those are pretty common terms in ECS patterns. https://en.wikipedia.org/wiki/Entity_component_system

    Basically, scene graphs in engines like Unity have "objects" (equivalent to entities), and they start out as just spatial transforms. You can attach components to them that provide other functionality (colliders, sprite renderers, etc). Then the basic game loop activates the callbacks on each of those components.

    In ECS systems, those are rearranged a little bit so that all components of a particular type are allocated together. Unity's implementation can seem a little counterintuitive if you're used to the old way, but it allows for some shocking performance gains. https://connect.unity.com/p/what-is-unity-ecs

    Twitch.tv/FiercePunchStudios | PSN | Steam | Discord | SFV CFN: templewulf
  • LilnoobsLilnoobs Alpha Queue Registered User regular
    edited October 13
    There is the RPG Maker Humble sale happening, so I went ahead and got that and I'm thinking about doing a re-telling of The Juniper Tree to learn RPG Maker MV. I won't spoil it, but it has some wtf moments that I thought would work well in the RPG Maker environment.

    But that's all a diversion from my Unity RPG project because my editor scripts for it all broke in 2019.3 with the new UI elements, and I'm procrastinating learning how to do those elements even though they seem to do some cool stuff.

    And both those projects are diversions from grading papers, which is something no one wants to do ever in the history of all kind.

    I think it's appropriate to say c'est la vie here, but my French is nonexistent.

    Lilnoobs on
  • IncenjucarIncenjucar Audio Game Developer Seattle, WARegistered User regular
    Lilnoobs wrote: »
    There is the RPG Maker Humble sale happening, so I went ahead and got that and I'm thinking about doing a re-telling of The Juniper Tree to learn RPG Maker MV. I won't spoil it, but it has some wtf moments that I thought would work well in the RPG Maker environment.

    But that's all a diversion from my Unity RPG project because my editor scripts for it all broke in 2019.3 with the new UI elements, and I'm procrastinating learning how to do those elements even though they seem to do some cool stuff.

    And both those projects are diversions from grading papers, which is something no one wants to do ever in the history of all kind.

    I think it's appropriate to say c'est la vie here, but my French is nonexistent.

    C'est la vie is basically "that is the life" or "such is life".

    Definately do your best to focus on s project until it's completed. Momentum us hard to get back.

  • KupiKupi Registered User regular
    templewulf wrote: »
    Justice wrote: »
    @Kupi That's an interesting discussion of architecture. I suffered from a lack of understanding and forethought when I made my game, and I want to do better next time. Here, I feel like I'm dropping into the middle of a longer discussion. If you don't mind, can I ask:

    What framework or engine are you using? It sounds a bit like you're making your own, given that you're forging your own vocabulary.

    I'm not clear on the need for both contexts and levels, and both entities and characters.

    I'm severely limited by my lack of CS training, but as best I can re-summarize what you've said: The player is presented with a scene (context) that contains a controller object (component storage) that evaluates what the current scene is and does two things. It (1) instantiates a list of entities (characters) and components (behaviors) necessary to that scene, and then (2) either itself or through a second controller, loops through each of the entities every frame allowing them to do their state thing.

    Sorry, again, perhaps you're just speaking to people who have a much more nuanced and informed grasp of these things, and you don't need to teach me. Anyhow, I'll keep following along as I teach myself Unity and programming patterns translated into Unity style, and see if I can catch up.

    I can't speak to his of framework or engine, but those are pretty common terms in ECS patterns. https://en.wikipedia.org/wiki/Entity_component_system

    Basically, scene graphs in engines like Unity have "objects" (equivalent to entities), and they start out as just spatial transforms. You can attach components to them that provide other functionality (colliders, sprite renderers, etc). Then the basic game loop activates the callbacks on each of those components.

    In ECS systems, those are rearranged a little bit so that all components of a particular type are allocated together. Unity's implementation can seem a little counterintuitive if you're used to the old way, but it allows for some shocking performance gains. https://connect.unity.com/p/what-is-unity-ecs

    Don't worry, Justice, the context (no pun intended) you're missing is pretty much every weekly post I've made since January. You're definitely dropping into the third season of a continuity-heavy show and to some extent I make those posts more for my own sake than anyone else's. You're excused to need me to make things clearer to someone who doesn't live in my head! :lol:

    I'm working with MonoGame (formerly XNA), which is a thin C# wrapper around the capabilities of the hardware. It lets you send polygons to the graphics card with a function call, but it doesn't have its own file formats for common gameplay elements like collision detection and animation. It's more work than working with Unity and to be honest I could probably have a whole game done by this time if I'd put the effort into learning Unity or Unreal, but it entertains me to put up my own scaffolding and if I wind up confused over some part of the engine code, I know there's some way to fix it because I control it because I wrote it.

    The short answer to your question about contexts vs. levels and entities vs. characters is that in both cases the former is a small element that exists "in code" or "at runtime", while the latter is a data object used to create the smaller one. An Entity is just a collection of arbitrary Components, being a "thing" that exists in the game. A Character is a template for a set of Entities that can be copied and pasted into play an arbitrary number of times. In the same way, a Level is a content file that determines where Characters should be put into play.

    As for Contexts, that's significantly harder to explain, but I think the simplest way is to say that it's an inversion of the normal way most people are used to thinking about what's responsible for causing things to happen in the game world. In Unity's paradigm, a Component has a function that's called every frame. Let's say you have a VelocityComponent that moves the GameObject it's attached to every frame by finding its sibling PositionComponent and writing a new value to it. So anything you attach a VelocityComponent to will move according to its velocity each frame. In the ECS paradigm, the VelocityComponent does nothing but store the amount to move each frame. A separate object, let's call it a VelocitySystem, runs once each frame, finds every Entity with a PositionComponent and VelocityComponent, and writes back a new value to the PositionComponent moved by the velocity. For the most part, this is "six of one, half-dozen of the other". But ultimately, you have to have a collection of Systems that form a description of what happens on each frame. "Create some new objects flying toward the center of the screen. Everything with a velocity moves. All objects that are overlapping disappear. Anything that remains afterward should be drawn to the screen." That's what a Context is (as I use the term, at least).

    And a Level defines what Context should be used when it's loaded because if, say, Level 1 is a platformer and Level 2 is a bullet hell, they have completely different descriptions of the rules.

    My favorite musical instrument is the air-raid siren.
    Justice
  • LilnoobsLilnoobs Alpha Queue Registered User regular
    Incenjucar wrote: »
    Lilnoobs wrote: »
    There is the RPG Maker Humble sale happening, so I went ahead and got that and I'm thinking about doing a re-telling of The Juniper Tree to learn RPG Maker MV. I won't spoil it, but it has some wtf moments that I thought would work well in the RPG Maker environment.

    But that's all a diversion from my Unity RPG project because my editor scripts for it all broke in 2019.3 with the new UI elements, and I'm procrastinating learning how to do those elements even though they seem to do some cool stuff.

    And both those projects are diversions from grading papers, which is something no one wants to do ever in the history of all kind.

    I think it's appropriate to say c'est la vie here, but my French is nonexistent.

    C'est la vie is basically "that is the life" or "such is life".

    Definately do your best to focus on s project until it's completed. Momentum us hard to get back.

    Thanks. I jumped back into it and turned out it wasn't as broken as I thought.

    Just working on the front end stuff. I've been merely just making stuff by duplicating SO's which I think is pretty simple, but now I'm making buttons to populate all the things. Not so exciting, but it's nearing a point I can test out with others.

  • DrDinosaurDrDinosaur Registered User regular
    Last week I was doing some reading about procedural generation, and found out about the wave function collapse algorithm

    I was super intrigued, but was having trouble figuring out how to actually implement the dang thing - I was able to get pattern extraction working by Saturday, but was massively over complicating the tile placement step

    Well, after a couple of stumbles everything finally clicked yesterday, and now it's fully functioning!

    NwBQQMH.gif

    This thing is super rad, it takes in input, extracts patterns from that input, then tries to build output out of those patterns based on the relationships observed in the input. And, I've built it using integers, so it can run off of any data type I can translate to an int!

    RoyceSraphimKoopahTroopahJusticeIzzimachCornucopiistLilnoobsDisruptedCapitalist
  • RoyceSraphimRoyceSraphim Registered User regular
    edited October 16
    DrDinosaur wrote: »
    Last week I was doing some reading about procedural generation, and found out about the wave function collapse algorithm

    I was super intrigued, but was having trouble figuring out how to actually implement the dang thing - I was able to get pattern extraction working by Saturday, but was massively over complicating the tile placement step

    Well, after a couple of stumbles everything finally clicked yesterday, and now it's fully functioning!

    NwBQQMH.gif

    This thing is super rad, it takes in input, extracts patterns from that input, then tries to build output out of those patterns based on the relationships observed in the input. And, I've built it using integers, so it can run off of any data type I can translate to an int!

    1st thought

    What would you get with a simple skull?

    2nd thought

    Map of Fake landia's Capitol city

    edit:

    Main game director state machine: failed.

    Moving enemy state machine to make the sharks change size based on distance to level controller:functioning.

    RoyceSraphim on
  • CornucopiistCornucopiist Registered User regular
    DrDinosaur wrote: »
    Last week I was doing some reading about procedural generation, and found out about the wave function collapse algorithm

    I was super intrigued, but was having trouble figuring out how to actually implement the dang thing - I was able to get pattern extraction working by Saturday, but was massively over complicating the tile placement step

    Well, after a couple of stumbles everything finally clicked yesterday, and now it's fully functioning!

    This thing is super rad, it takes in input, extracts patterns from that input, then tries to build output out of those patterns based on the relationships observed in the input. And, I've built it using integers, so it can run off of any data type I can translate to an int!

    Very impressed, I looked at Wang tiles and wave function collapse a while ago and didn't make any headway!

  • HandkorHandkor Registered User regular
    DrDinosaur wrote: »
    Last week I was doing some reading about procedural generation, and found out about the wave function collapse algorithm

    I was super intrigued, but was having trouble figuring out how to actually implement the dang thing - I was able to get pattern extraction working by Saturday, but was massively over complicating the tile placement step

    Well, after a couple of stumbles everything finally clicked yesterday, and now it's fully functioning!

    NwBQQMH.gif

    This thing is super rad, it takes in input, extracts patterns from that input, then tries to build output out of those patterns based on the relationships observed in the input. And, I've built it using integers, so it can run off of any data type I can translate to an int!

    Oh god you reminded me of this algorithm. I've wanted to try it out too a while ago but I was busy. There goes my free time for the next couple of days.

    DisruptedCapitalist
  • RoyceSraphimRoyceSraphim Registered User regular
    Anyone see something wrong with this state machine? I started working on a smaller one to verify where my bigger one was going wrong and cannot get the keyboard checks to go through.

    Except when I hit escape, then it draws some color box before game closes.
    The creation event sets color_state to state_color.red.

    This is the step event
    if keyboard_check(vk_escape)
    {
        game_end();
    }
    
    {
    switch (color_state)
        {
        case state_color.red:
            //setbackground red
            draw_background(bg_red, view_xview[0], view_yview[0]);
            if keyboard_check(vk_space) color_state = state_color.blue;
            break;
        case state_color.blue:
            draw_background(bg_blue, view_xview[0], view_yview[0]);
            if keyboard_check(vk_space) color_state = state_color.green;
            break;
        case state_color.green:
            draw_background(bg_green, view_xview[0], view_yview[0]);
            if keyboard_check(vk_space) color_state = state_color.black;
            break;
        case state_color.black:
            draw_background(bg_black, view_xview[0], view_yview[0]);
            if keyboard_check(vk_space) color_state = state_color.red;
            break;
        
        }
    
    
    }
    
    

    It compiles, but does not do what I want.

  • HandkorHandkor Registered User regular
    edited October 18
    The lack of parenthesis for the if statements is throwing me but what happens if you resolve your keyboard check outside the switch statement first and set a bool to test instead inside each case?

    Also instead of a switch you could just fill a dictionary keyed to state and output next state. Your value could even be a small struct that contains the color and the next state, no need for large switch statements you just have a look up tables with what to do whit each state.

    edit: nvm the last part about dictionaries I just noticed that you were working with gamemaker script and not C#.

    Handkor on
    templewulf
  • RoyceSraphimRoyceSraphim Registered User regular
    edited October 19
    Turns out draw commands need to be in the draw event. Really need to practice.

    So that state machine works, why does the other one give me a solid grey screen?
    /// statemachine
    {
        switch (dir_state)
            {
            case director_states.Start_game:
                //scr_start_game(); 
                dir_state = director_states.Maingame;
                break;
            case director_states.Main_Menu:
            
                break;
            case director_states.Maingame:
                room_goto(rm_test);
                break;
            }
    }
    

    edit: for some reason, room_goto(); is making it freeze. I replaced it with room_goto_next(); That got me a fatal error.

    Edit: figured it out.

    State machine kept trying to send me to next room forever.

    RoyceSraphim on
  • KupiKupi Registered User regular
    Kupi's Weekly Friday Status Report

    My game development report will be truncated this week due to a head-on collision with Murphy's Law at my day job delaying the commencement of my weekend.

    I took a total left turn this week and heavily revised the way I handle content loading. Originally, I had assigned all content associated with a Character to the Character itself. So, a Character file contained individual lists for Textures, Animations, and Sound Effects, with plans to expand those as necessary. These were stored in a "Content" object that was then handed off to a ContentComponent attached to any Entity that needed content that existed in the Character's component storage template. The problem with that arrangement is that there's an infinite conceivable amount of types of content, and I don't want to go back and change the Content object every time I come up with a new one. So, instead, the Content class now just has a single multi-layered Dictionary that maps a Type (the type of the content to load) to a String (the queryable name of the content) to a string-object pair (the path to the content file and the loaded object). As part of the process of loading a level, a "content loader" object (the same loader that loads the level itself) gets passed into the Content object of any ContentComponent it can find in any component storage instance produced by loading the level. (Content loaders are cached, so if two Content objects use the same file path, they get the same object instance back.) This still has the unfortunate effect of requiring me to actually type out the "bill of materials" for each Character I create, instead of something more similar to Unity where you can just assign an object instance to a GameObject and it'll load up at the appropriate time, but what I did ultimately reduced the number of times I can have a runtime crash because I forgot something by one, so I count it as a win.

    My goal for this week is to get to the point where I can run my debug build and actually load up a Level. That is an ambitious goal in light of the fact that I'm halfway through a second play-through of Three Houses and I'll be taking a trip to visit family on Friday, but since when has a project being well beyond my ability to deliver ever stopped me from committing to something? (And since that family trip is going to render me unable to deliver the weekly report, if I miss the deadline I'll stretch it into the second week and say I got it done in the first week...)

    My favorite musical instrument is the air-raid siren.
    dipuc4lifeCornucopiistLilnoobs
  • RoyceSraphimRoyceSraphim Registered User regular
    edited October 25
    Game states set basically where I want them to be.

    Main menu to be developed as a simple state machine drawing options.

    Then I guess....setting up a level beginning and ending? Well, I could just draw that final boss and use him as a level, work backwards.

    Edit: A pity that GM studio doesn't have the ability to easily Import CSV files otherwise I design a dungeon in excel in a future project

    RoyceSraphim on
    HandkorElvenshae
  • CornucopiistCornucopiist Registered User regular
    My focus has been on marketing lately... But the next step is to send out solicitations for reviews. I have a list of review sites, but conflicting information as to what to send. I've been told that I should send an example review along, or structure my text so it could be copy/pasted into a review?
    That sounds pretty dodgy even if I can imagine the economics behind it. Does anyone have info on this?

  • JusticeJustice Registered User regular
    edited November 23
    ...

    Justice on
    LilnoobsElvenshae
  • CornucopiistCornucopiist Registered User regular
    Current state: I've got super fast and efficient creation of entities, the LWRP rendering is as smooth as a baby's bottom, the shader here is a Shader Graph that allows me to select texture tiles from an atlas, and overall everything seems to be non-broken.

    99lqne2ns6ar.jpg

    LilnoobsRoyceSraphimElvenshaeKoopahTroopahDisruptedCapitalist
  • RoyceSraphimRoyceSraphim Registered User regular
    Game state machine timing and displays refined.

    Enemy death state machine.....in progress. Not sure why the damn ball disappears a frame after its created. Its not hitting nothing. to cause it to be destroyed....but I did code the boom to be...placemeeting(x, y+speed, obj_base_enemy)........


    fucking fuck, the y-axis goes down, not up! I had to do "y-speed"

    But that still doesn't explain why.....fuck it, I only used speed, direction, and drag and drop to get myself to an alpha stage. Should recode those anyway.

    Cornucopiist
  • CornucopiistCornucopiist Registered User regular
    .
    fucking fuck, the y-axis goes down, not up! I had to do "y-speed"
    Can't tell you how much time I wasted in Unity 'get mousedown' before I realized their screen y-axis goes up instead of down. Which, am I the only one who thinks it should go down? Or is it everyone with a Photoshop background? And let's not get into the whole 360° = 0° thing...

  • RoyceSraphimRoyceSraphim Registered User regular
    Where does unity's 0 begin? 12 o' cock or 3?

  • GlalGlal Registered User regular
    (0,0) being in the upper left corner is pretty much the norm on hardware level, so many (most?) engines will use the same logic. I think most of us are used to it being in the lower left corner because that's where it is with graphs.

  • RoyceSraphimRoyceSraphim Registered User regular
    Sorry, I meant 0 degrees.

    Although starting in the upper left was still troublesome to get used to.

  • CornucopiistCornucopiist Registered User regular
    Sorry, I meant 0 degrees.

    Although starting in the upper left was still troublesome to get used to.

    I only use 3D... The problem is more that if you are in the 'negative' you are really in the high positive range. So I can turn positive with a check to stop at below 180°, but if I then turn back counterclock I need to check I'm still above 180° on the other side even though I'm below running through 170°, 160°,... until I hit 0° at which point I'm 360° and actually above 180°... So as long as I'm above 180° I have to check that I'm above 180° and when I'm below 180° I have to check that I'm below 180°. Easy peasy.

    *takes out pipe.
    Of course that was before they changed it all to radians.

  • GlalGlal Registered User regular
    With relative rotations I imagine your best bet is to use a rotational matrix, that way you don't need to worry about checking for 0s and other fiddly bits you hit when doing stuff manually.

    I've started messing about with Godot, mainly because its scripting language syntax is like 90% Python, which is perfect for me. Not bumped into too many "this limit exists because we said so" yet, but the week is still young.

  • PhyphorPhyphor Building Planet Busters Tasting FruitRegistered User regular
    edited October 28
    .
    fucking fuck, the y-axis goes down, not up! I had to do "y-speed"
    Can't tell you how much time I wasted in Unity 'get mousedown' before I realized their screen y-axis goes up instead of down. Which, am I the only one who thinks it should go down? Or is it everyone with a Photoshop background? And let's not get into the whole 360° = 0° thing...

    It depends entirely upon your background

    Graphics hardware draws the first pixel in the upper left, row by row so
    YX-->
    |
    |
    v

    Math backgrounds see the screen as the upper-right quadrant of the XY axis like so
    ^
    |
    |
    YX-->
    With 0,0 in the bottom left and increasing Y coordinates going up. This is why in GL your textures are sometimes flipped, 0,0 is the bottom-left texel

    3D math sees the screen like so
         1
         ^
         |
    -1<--YX-->1
         |
         v
        -1
    

    Whether your system is left handed (DX) or right handed (GL*) determined whether Z is in or out

    *GL is nominally left-handed at rasterization but the canonical 1.x transforms the user builds are all right-handed

    Phyphor on
    Magic Box
    Academician Prokhor "Phyphor" Zakharov, Chief Scientist of China, Provost of the University of Planet - SE++ Megagame
    RendCornucopiist
  • RoyceSraphimRoyceSraphim Registered User regular
    Now I have to dig out that tracking bullet code I cribbed from someone's turret example code

  • GlalGlal Registered User regular
    Glal wrote: »
    I've started messing about with Godot, mainly because its scripting language syntax is like 90% Python, which is perfect for me. Not bumped into too many "this limit exists because we said so" yet, but the week is still young.
    "This time I won't spend two weeks just making my main sprite. There, placeholder frames, that's all I need."
    ~Three hours later~
    "So I'm building this vector rig made out of volumes in order to represent limbs to do the skeletal animation and then using Illustrator to paint over the finished rig to get the final sprite..."

    dipuc4lifeRoyceSraphimElvenshae
  • RoyceSraphimRoyceSraphim Registered User regular
    edited October 31
    I am rather surprised i could not find more call of duty demakes for reference.

    RoyceSraphim on
Sign In or Register to comment.