As was foretold, we've added advertisements to the forums! If you have questions, or if you encounter any bugs, please visit this thread: https://forums.penny-arcade.com/discussion/240191/forum-advertisement-faq-and-reports-thread/

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

1515254565792

Posts

  • templewulftemplewulf The Team Chump USARegistered User regular
    edited January 2019
    Lilnoobs wrote: »
    templewulf wrote: »
    Lilnoobs wrote: »
    Why do you want such collision precision during animation in a 2d game?

    Typically, I separate the renderer and collider components. Collider on the parent GO, renderer on some child. If it's animated I even go a child deeper, so parent -> empty child -> renderer. In this way, I'm pretty sure things can be animated independently, not 100%, but like, 94%.

    Because it's typical for action games to have long move lists with different hit boxes and hurt boxes on each move. As one of the primary ways to distinguishing between multiple moves for mechanical value, it's important for them to be both precise and easily adjustable by a designer.

    I imagined the case might be for a fighter, but didn't know for sure. The system would be overkill for something like an action platformer or top down action adventure.

    Unity is definitely better equipped for those out of the box. (But their support for multiple colliders is not what I'd call robust.)

    Ideally, the collider system would be flexible enough to accommodate multiple, animated colliders without overwhelming beginner use cases.

    templewulf on
    Twitch.tv/FiercePunchStudios | PSN | Steam | Discord | SFV CFN: templewulf
  • ElvenshaeElvenshae Registered User regular
    Khavall wrote: »
    I think my game idea would be better off prototyped as a board game, actually...

    This is super good practice anyways. It won't always transfer over 1:1 (e.g. if the core gameplay loop involves aiming and shooting it can be pretty difficult to prototype as a board game), but it's really good for defining a lot of the important parts of the game. New XCOM was basically prototyped by Sid Meier and Jake Kaufmann trading back board games until they reached a point of complexity and completeness where they agreed to start programming something.

    Board games allow you to really rapidly run through a bunch of iterations to make sure that your core loop a: works, and b: is fun before you start getting lost in having to code it, even if you're comfortable in a development environment.

    Sorry, but did you just misspell the name of JAKE SOLOMON, GENTLEMAN ADVENTURER?

  • RoyceSraphimRoyceSraphim Registered User regular
    Lilnoobs wrote: »
    templewulf wrote: »
    Lilnoobs wrote: »
    Why do you want such collision precision during animation in a 2d game?

    Typically, I separate the renderer and collider components. Collider on the parent GO, renderer on some child. If it's animated I even go a child deeper, so parent -> empty child -> renderer. In this way, I'm pretty sure things can be animated independently, not 100%, but like, 94%.

    Because it's typical for action games to have long move lists with different hit boxes and hurt boxes on each move. As one of the primary ways to distinguishing between multiple moves for mechanical value, it's important for them to be both precise and easily adjustable by a designer.

    I imagined the case might be for a fighter, but didn't know for sure. The system would be overkill for something like an action platformer or top down action adventure.

    Hmm, some of the special attacks might work better as boxes with crowd mechanics.

  • DisruptedCapitalistDisruptedCapitalist I swear! Registered User regular
    edited January 2019
    Hey guys help me out here. I'm trying to explain an idea I'm pitching to someone about a game mechanic where you play a matching game similar to Simon. The idea is that the game asks you to repeat a pattern, when you successfully repeat the pattern, it displays some kind of success UI and plays a happy sound. As you progress through the story line you encounter these puzzles and have to repeat them in increasing difficulty. Can any of you think of examples where this has been used in the past? I know there are some out there but all I can think of are the "song" games like Aquaria or Wandersong where the pattern matching is part of the song mechanic.

    There's gotta be something as simple as the game popping up and saying "Press LEFT-RIGHT-LEFT-LEFT!" during a quick time event perhaps?

    EDIT: NEVER MIND! Posting this made me think of some places I could look, so I managed to find some examples in the Unreal Marketplace showing the mechanic I had in mind with a simple UI:

    https://www.youtube.com/watch?v=E3SZFY-4RTU

    DisruptedCapitalist on
    "Simple, real stupidity beats artificial intelligence every time." -Mustrum Ridcully in Terry Pratchett's Hogfather p. 142 (HarperPrism 1996)
  • KupiKupi Registered User regular
    Kupi's Weekly Friday Status Report

    ... is coming back in 2019. Every Friday, vaguely around 7:00 PM EST, regardless of whether I have real progress to report or not. If I come here four weeks in a row and say "I'm sorry, I didn't get anything done", well maybe I should have spent those four weeks making sure I had something report, eh?

    Anyway, here's the news on the ground.

    I am still in the process of building my collision detection library. I had a few major design revisions, like getting rid of an entire type of collision volume and coming up with an entirely new kind to replace it.

    Right now, my library includes the following types of collision volumes:

    - Point: A single two-dimensional point.
    - Circle: A two-dimensional point and a radius around it. Technically speaking, a point could be implemented as a Circle with 0 radius, but the logic works out differently enough that it isn't worth collapsing them into the same type.
    - Arc: A series of line segments, each one sharing an endpoint with the next one. Collisions can occur on either "side" of the volume.
    - Surface: Like an Arc in all respects except that collisions can only occur contrary to their surface normal. I anticipate using this one as a means of implementing semi-solid platforms, to use the Super Mario Maker term for it.
    - Polygon: Like an Arc, but the last point wraps around to the first point, and the interior of the polygon counts for collisions.

    There are two layers to the collision test: an overlap test to catch cases where a collision volume starts the frame already colliding with another volume, and a shape-cast that detects if one collision volume's movement will cause it to collide with the other during that frame. (If both collision volumes are moving, you can do a frame-of-reference trick by subtracting the velocity of the second from the velocity of the first.) Right now I have the overlap tests completely written except for when Surfaces are involved, because Surfaces are the type of collision volume I just made up in the past 24 hours. There are also unit-tests for the overlap-checking functions, which helpfully identified several significant implementation failures. Unit tests are great things, folks. The shape-cast collision functions are also written except for the ones involving Surfaces, but by contrast they have no unit-testing and therefore still contain several significant implementation failures. That's next on my list to do.

    AGDQ is going to sap a lot of my attention this week, but implementing overlap and collision tests for Surfaces and getting the unit tests written for the shape-cast functions is an entirely reasonable expectation.

    My favorite musical instrument is the air-raid siren.
  • UselesswarriorUselesswarrior Registered User regular
    edited January 2019
    agoaj wrote: »
    kaceyp wrote: »
    Has anyone here used xml or json files to store dialogue for a game? I'm having trouble wrapping my head around exactly to make/structure the files themselves. I've looked up the topic and it feels like almost every tutorial about it focuses on reading the file (in Unity, in this case) and totally glosses over how to go about setting up the file itself.

    Basically, I'm working on a 2D story-heavy adventure game. It's more or less linear and there isn't really any branching in the conversations, they just proceed from beginning to end. Can anyone give me some direction on this? I'm sure it's actually very easy, but of all the things I've had to learn in the last few years, I think this is the first thing I've actually had to ask a question about.

    If it's linear then you should be able to just have a dictionary of conversations, and a conversation is just an array of message data.
    here's how branching might work.
    "Conversation1" : [
        {
            "Speaker" : "Old Man",
            "Text" : "Do you have any Strawberries?",
            "Type" : "Choice",
            "Choices" : ["Yes", "No"]
            "Branches" : {
                "Yes" : [
                {
                    "Speaker" : "Old Man",
                    "Text" : "Lovely!"]
                }
                "No" : [{ "Speaker" : "Old Man", "Text" : "You have made a great enemy this day!"}]
            }
        },
    ],
    

    It is kind of up to you as the dev to figure out how to group your data in way that makes sense for your game.

    This StackExchange post may help, How do dialog trees work?

    Some more theoretical stuff, I've been kind of reading up on Lisp so this may be a little esoteric:

    Representing Game Dialogue as Expressions in First-Order Logic

    This is a great video (has some Lisp in it, sorry!) with indie dev contrasting two different approaches to dialogue systems:
    https://www.youtube.com/watch?v=lql2yFXzKUs

    Uselesswarrior on
    Hey I made a game, check it out @ http://ifallingrobot.com/. (Or don't, your call)
  • UselesswarriorUselesswarrior Registered User regular
    Wow the notch is a nightmare in terms of backwards compatibility for apps. I really surprised Apple didn't just make older apps run with letter boxing.

    I had to go and design a UI with elements on the top, so fuck me I guess.

    Hey I made a game, check it out @ http://ifallingrobot.com/. (Or don't, your call)
  • templewulftemplewulf The Team Chump USARegistered User regular
    ...the fuck? Do I have the Unity collider / otherCollider distinction backwards?

    I did a test with two objects in a new project, like so:
    parent (RigidBody2D, TestScript)
        | child (SpriteRenderer)
            | grandchild (BoxCollider2D)
    testdummy (SpriteRenderer, BoxCollider2D)
    

    Script attached to `parent` contains:
    private void OnCollisionEnter2D(Collision2D collision)
        {
            Debug.Log($"{this.gameObject.name}.Collision Enter, this: {collision.collider.gameObject.name}, other: {collision.otherCollider.gameObject.name}");
        }
    

    And the console displays:
    parent.Collision Enter, this: testdummy, other: grandchild
    UnityEngine.Debug:Log(Object)
    TestColliderReceiver:OnCollisionEnter2D(Collision2D) (at Assets/TestColliderReceiver.cs:25)
    

    With the script and RigidBody2D attached to `parent`, I would expect that to be the `collision.collider` and the other object it collides with refer to something other than the object the script is attached to!

    Did I do something wrong? Can someone explain this conceptualization to me?

    Twitch.tv/FiercePunchStudios | PSN | Steam | Discord | SFV CFN: templewulf
  • agoajagoaj Top Tier One FearRegistered User regular
    Yes you have it backwards. Collision.collider is the collider that the object has hit. Collision.otherCollider tells you the other collider in the collision, one that belongs to the current object.

    ujav5b9gwj1s.png
  • templewulftemplewulf The Team Chump USARegistered User regular
    agoaj wrote: »
    Yes you have it backwards. Collision.collider is the collider that the object has hit. Collision.otherCollider tells you the other collider in the collision, one that belongs to the current object.

    Thank you for confirming.

    Is there some conceptualization that makes "otherCollider" == "collider attached to this object" sensible? I know I'm going to forget this at some point, because it makes no sense to me.

    (Incidentally, I set up this test, because my kinematic Rigidbody2D was not generating collisions. It turns out, the Physics setting "Contact Pairs Mode" doesn't apply to the 2D components, and there's no equivalent setting in the Phsyics2D section. You have to check the box "Use Full Kinematic Contacts" on the Rigidbody2D component itself!)

    Twitch.tv/FiercePunchStudios | PSN | Steam | Discord | SFV CFN: templewulf
  • RendRend Registered User regular
    IIRC, collision in this case represents the OTHER object colliding with THIS object. Thus, the collider attached to the collision is the incoming one, not the one which is currently processing the collision.

    "This collision hit me. Tell me what collider is associated with it, with collision.collider"

  • agoajagoaj Top Tier One FearRegistered User regular
    They probably didn't have .otherCollider in the first version of unity and had to add it later.

    ujav5b9gwj1s.png
  • GSMGSM Registered User regular
    Does a gameobject listen for collision events of colliders attached to its child gameobjects? If that's the case, then otherCollider could be something other than the current gameobject's collider.

    We'll get back there someday.
  • templewulftemplewulf The Team Chump USARegistered User regular
    GSM wrote: »
    Does a gameobject listen for collision events of colliders attached to its child gameobjects? If that's the case, then otherCollider could be something other than the current gameobject's collider.

    It does listen to child (and grandchild!) colliders, but that still would be less "other" than a collider on a gameObject from a different hierarchy.

    What makes this even more baffling is that the OnTrigger series of events provides only one collider, that of the object not attached to the MonoBehaviour, and it is named `other` in the documentation!

    Anyway, I was just hoping to visualize the mental model that lead to the names, but I don't want to clog up the thread with naming quibbles.

    Twitch.tv/FiercePunchStudios | PSN | Steam | Discord | SFV CFN: templewulf
  • CornucopiistCornucopiist Registered User regular
    Re: otherCollider
    This would be useful when using multiple primitive colliders on a single object rather than child objects.
    Example a collider for the soft bits of a car, and a collider for the undeformable spaceframe of a car, where you want to check if you dent or bounce...

  • GSMGSM Registered User regular
    Oh, the weirdness is "other" meaning "one of mine". I guess it's because the collider most collision events are interested in is the collider that isn't yours, so that's the one that gets the default name "collider". It's purpose driven. "What did I hit" is the foremost question in a collision event, instead of "which part of me just hit something".

    We'll get back there someday.
  • UselesswarriorUselesswarrior Registered User regular
    I was goofing around with Godot as it keeps popping up in my feeds and the idea of open source Unity is appealing to me.

    Does this thing have one of the worst UI's ever put together or is it just me?

    Hey I made a game, check it out @ http://ifallingrobot.com/. (Or don't, your call)
  • CornucopiistCornucopiist Registered User regular
    So, this is not really a post mortem of my Moonshot_RPG, but I need to put some thoughts together and decided I'd do it here.

    18jl3ef9l078.png

    THE BAD NEWS

    -first of all, the project has really run up against my limited abstract reasoning power. Which, I'm not that dumb, even specifically in that field, but I AM a 40 year old with serious fatigue, a job, two kids and whatnot. I just haven't been able to crack imagining how you move along mesh nodes while trying to jump between a corresponding 2D array, as derived from a simple List.
    Which means that when I switched from creating groups of meshes using every node in the 2D array to meshes using only every other node, I was wallowing and reduced to trial and error.

    -ECS! May it arrive tomorrow in a useable (on mobile) form. I think most of the issues I've cracked so far will carry over in a Unity 2019 project started from scratch. But I'm on the fence for a little while longer, and if I were to keep working, I'd probably end up having less to 'carry over'.

    -Fully procedural meshes vs combined tile. Adding water to the procedurally generated mesh made it clear that it'll never look good enough AND be generated on mobile. It's more complicated than that; because it seems that both the generating code AND the subsequent instancing of objects run much earlier in the loading of a scene than I programmed them to- or at least they hog memory already at that point.

    -I've not yet gotten into the murky waters of object placement on these meshes, which would have involved... Trigonometry!

    DIAGNOSIS?

    -All of these together determine where I'll be going with the game (well, middleware?). Tiles! I now have to figure out ways to make tiled procedural terrain with as few tile types as possible, without that being obvious...

    OUTLOOK

    A few things I did learn on this project that do carry over:

    -proper managing of lists! (okay, maybe I could have done with fewer lists)

    -navigating and listing subsections of a 2D array (well, not perfectly)

    -procedural generation of heightmaps, towns, areas, and (not very good) rivers!

    -procedural texture generation from all of the above!

    So, all in all, it was a lot of fun, really hard, and incredibly frustrating at times. I learned A LOT. I'm looking forward to ticking off enough of my to do list that I can start on my next attempt- I did call it a moonshot, and so I will keep trying.

    In the meantime, I have marketing to perfect, a game to finish and repolish, and a very tightly scoped game that I can play around with on the side... Fun!

  • UselesswarriorUselesswarrior Registered User regular
    It is super hard to balance a job and gamedev, I can't even imagine it with two kids.

    Hey I made a game, check it out @ http://ifallingrobot.com/. (Or don't, your call)
  • UselesswarriorUselesswarrior Registered User regular
    edited January 2019
    This is a long shot, but I found a video not too long ago where this guy was showing off his game jam winning game that he was live editing in the browser. It was either in JavaScript or ClojureScript and had a military rts theme with a cartoony art style. I am almost 100% sure it was on Youtube.

    I saw this and said, "neat" and intended to watch the entire thing later. I can not, for the life of me, find this video. After a lot of history and Google searching I've come up with bumpkis. Anyone have any inkling of where I may find this video?

    Big thing I want to dive into is live editing a game in a browser while maintaining game state, ie, no restarts as the code changes.

    Uselesswarrior on
    Hey I made a game, check it out @ http://ifallingrobot.com/. (Or don't, your call)
  • DisruptedCapitalistDisruptedCapitalist I swear! Registered User regular
    I was goofing around with Godot as it keeps popping up in my feeds and the idea of open source Unity is appealing to me.

    Does this thing have one of the worst UI's ever put together or is it just me?

    Yeah I dabbled in it a few months ago but then realized I had actual work to do and gave up on it. At the time I thought it was just my unwillingness to start with new software

    "Simple, real stupidity beats artificial intelligence every time." -Mustrum Ridcully in Terry Pratchett's Hogfather p. 142 (HarperPrism 1996)
  • HandkorHandkor Registered User regular
    It is super hard to balance a job and gamedev, I can't even imagine it with two kids.

    That's what I've been doing for a while with 2 kids but I recently changed jobs to something closer to gamedev and now instead of different work/hobby compartments in my head it's more like trying to organize/plan two similar project at the same time.
    My old jobs was in the chemical regulation industry and my mind was free to do gamedev for evening and weekends. My new work involves 3d stuff and now the same parts of my brain that I use in my hobby I use at work so it's been hard to put time in finishing something. I've also been putting more hours in since new job and all but also when you're working on something and you get it to work, it's easy to want to keep going. My old job had moved our teams to a legacy project from a merger that needed more developer and forced the lot of use to essentially forget a decade of expertise to fix bugs in VB6 to meet deadlines for those projects. The new management came from manufacturing and saw developers as resources that could just be moved around to any projects as needs arose completely ignoring how long it takes before you can be productive on a new project. I was the 7th dev to leave that project in a year and this was not a ploy to get the more expensive senior devs to leave so they can hire juniors, just bad management. The kind of bad management that also fired all of QA to outsource overseas before realizing that the QA required needs years of knowledge in the chemical regulation industry to be able to tell if the software output actually matches the local and international laws of most countries, not something that can easily be scripted away.

    tl:dr rant about my old job and why I quit

    Anyway the new job is great, I get to do cool stuff that I can't talk about but I have less time or energy (due to the same parts of my brain getting used) for gamedev. Should pick back up once I'm passed the initial new job rush though.

  • cravipatcravipat CFKPW? Registered User regular
    I was goofing around with Godot as it keeps popping up in my feeds and the idea of open source Unity is appealing to me.

    Does this thing have one of the worst UI's ever put together or is it just me?

    Yeah I dabbled in it a few months ago but then realized I had actual work to do and gave up on it. At the time I thought it was just my unwillingness to start with new software

    It reminds me a lot of Blender. You spend a bunch of time just to figure out where things are. Eventually you get used to it and forget how oddly designed it is.

    nw1m8qQ.pngwNA4DEe.png6W3X2nk.png
    Super Mario Maker ID: DBB-1RH-JJG
  • KupiKupi Registered User regular
    Kupi's Weekly Friday Status Report
    comes early this week because I've been on vacation

    I wrapped up the implementation and unit-testing of overlap detection for Surfaces (which, as a reminder, are series of line segments that only have collision on them in one direction). After that, I threw together another screen saver demonstrating how all my collision volumes work:

    https://www.youtube.com/watch?v=UMmwP5_sOAM&

    Putting together a moving visualization of the overlap tests revealed a couple problems with my fixed-point math struct, namely that it's really easy to overflow the thing, and a lot of my mathematically-precise functions (like determining the intersection point(s) between a line segment and a circle or finding the center of a polygon) had to be replaced with less computationally-efficient but overflow-resistant methods.

    I'm not certain where I'm going to go from here. On the one hand, simple overlap tests are sufficient to start producing basic hitbox interactions, which means I could put some work into the sprite animation and character data association side of things and try to make a basic game, or I could continue on my previous planned tack and implement the shape-casting side of the physics system that'll be important for helping keep characters from having wobbly interactions with walls. I am probably going to go with the shape-casting thing, just because it's generally best to get good and done with a single aspect of a system and then become a user of it than to bounce back and forth between implementing different phases, and also most of the shape-cast methods are already written and just need unit testing (followed by re-writing...).

    My favorite musical instrument is the air-raid siren.
  • templewulftemplewulf The Team Chump USARegistered User regular
    cravipat wrote: »
    I was goofing around with Godot as it keeps popping up in my feeds and the idea of open source Unity is appealing to me.

    Does this thing have one of the worst UI's ever put together or is it just me?

    Yeah I dabbled in it a few months ago but then realized I had actual work to do and gave up on it. At the time I thought it was just my unwillingness to start with new software

    It reminds me a lot of Blender. You spend a bunch of time just to figure out where things are. Eventually you get used to it and forget how oddly designed it is.

    I've been hearing that complaint about Godot a lot, but I already think most productivity software is obtuse as hell. I've never used Photoshop or Unity or Maya and thought "Aha! Obviously the tool I want is in this sub-sub-sub-menu."

    What puts Godot on the next level?

    Twitch.tv/FiercePunchStudios | PSN | Steam | Discord | SFV CFN: templewulf
  • AntinumericAntinumeric Registered User regular
    I finally dusted off this roguelike game prototype I built 4 years ago. The code is surprisingly good. There are some questionable design decisions (string based messages everywhere!) that I can code out. But it was really easy to add a simple sword attack with animation:

    E6TpoRR.gif

    In this moment, I am euphoric. Not because of any phony god’s blessing. But because, I am enlightened by my intelligence.
  • AntinumericAntinumeric Registered User regular
    -All of these together determine where I'll be going with the game (well, middleware?). Tiles! I now have to figure out ways to make tiled procedural terrain with as few tile types as possible, without that being obvious...

    Have you looked into Wavefunction Collapse?. It's a really cool algo for generating procedural tilemaps that look good. It's really similar to Wang tiles.

    In this moment, I am euphoric. Not because of any phony god’s blessing. But because, I am enlightened by my intelligence.
  • UselesswarriorUselesswarrior Registered User regular
    edited January 2019
    This is a long shot, but I found a video not too long ago where this guy was showing off his game jam winning game that he was live editing in the browser. It was either in JavaScript or ClojureScript and had a military rts theme with a cartoony art style. I am almost 100% sure it was on Youtube.

    I saw this and said, "neat" and intended to watch the entire thing later. I can not, for the life of me, find this video. After a lot of history and Google searching I've come up with bumpkis. Anyone have any inkling of where I may find this video?

    Big thing I want to dive into is live editing a game in a browser while maintaining game state, ie, no restarts as the code changes.

    Fucking found it.

    https://youtu.be/Qqy9Gqgw6WY

    Such a great minor victory in my life. Even if the video isn’t as in depth as I remembered.

    Game is exo_encounter https://technomancy.itch.io/exo-encounter-667.

    Uselesswarrior on
    Hey I made a game, check it out @ http://ifallingrobot.com/. (Or don't, your call)
  • CornucopiistCornucopiist Registered User regular
    -All of these together determine where I'll be going with the game (well, middleware?). Tiles! I now have to figure out ways to make tiled procedural terrain with as few tile types as possible, without that being obvious...

    Have you looked into Wavefunction Collapse?. It's a really cool algo for generating procedural tilemaps that look good. It's really similar to Wang tiles.

    Thanks! I think there's probably something in the listed mods I could use, for sure a city generator would be handy...

  • DodgeBlanDodgeBlan PSN: dodgeblanRegistered User regular
    Hey game devs,

    I've got a question for anyone who's been trying to make games in the casual space

    I've been working on a casual iOS spelling game for a while, and I'm pretty happy with the core gameplay loop.

    The part that's really bad is the metagame structure. The levels, the scoring, the menus and such.

    Does anyone have any suggestions for casual iOS games that have
    a) a well structured metagame that uses levels
    b) that's simple (not something with a really complicated structure with a million currencies and such)
    c) intuitive

    A lot of the really big games have a really complicated structure that is really well monetized, but I don't think I have the bandwidth to build 'ideal' monetization. I'm looking for something that gets the job done that isn't six months of work.

    Thanks!

    Read my blog about AMERICA and THE BAY AREA

    https://medium.com/@alascii
  • CornucopiistCornucopiist Registered User regular
    re: monetization... I don't mean this as a putdown, but as a conversation starter: I'm not really into monetization.

    Now, given that this is my side job and I see it as a long process of growth, I'm in a luxury position. At one point I'll have to tackle it.

    ( I'll be focusing on marketing this year; for example by installing Vlambeers presskit, and polishing that a bit (yay CSS) as well as updating my site and logo. So it's not that I think marketing and commerce are dirty!)

    But, the options for monetization that work, are less than ideal if you care about user experience.

    I'm really into 'flow', and I want to give users, especially kids, a nice, long, soothing experience. You can't interrupt people who are into *flow* to bill them if they want to keep going. Of course, you can sell them an even better experience, but that comes down to Nerfing the base experience.

    So far what I've done (on Android) is to have a version of my train game which is missing levels, and a version which is paid and complete.
    On iOS I only offer the paid version. (Needless to say, Android sales are way down compared to iOS sales, even with 4300 installs of the free version)

    I'm confident I can bump the iOS sales with a marketing campaign aimed at review sites. By the way, you really really really want to have such a campaign AT LAUNCH. Visibility at launch is orders of magnitude higher than at any other point in the game's life.

    But it's probably interesting to integrate the 'pay for extra levels' as a store (though not, at current volume, for Android sorry/not sorry).

    So that is something I'd like to look at for my upcoming game, too.

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

    Last week, I said I had a bit of confusion as to what my next step was going to be, but favored implementing the shape-casting side of my collision library. In the end, I did wind up going with the shape-casting library, since it was already mostly implemented, just not well-tested.

    Ironically, I got less work done this week after GDQ than I did during GDQ week itself, mostly because GDQ VoDs don't have commercial breaks to do coding in. I did, however, get to the point where I could rig up a simple demonstration:

    https://www.youtube.com/watch?v=4ejXWQl8UgI

    So, in addition to being able to test points, circles, arcs, surfaces, and polygons for overlap, my collision volumes can test for collision against other moving volumes. The collision is reported with its time of collision, an impact position in 2D space, and the surface normal of the collision as observed from both participating volumes. Naturally, it's unlikely to have any object moving 300 to 400 pixels in a single frame (my testing indicated that an object moving 16 pixels per frame already appears to be moving terrifically fast), but being able to judge where collisions occur on a sub-frame basis is a useful trick to have up your sleeve.

    My plans from here are to keep working toward having a fully-implemented collision detection system. I've laid out three phases to getting there:

    1) Unconditional collision testing between all objects. Entails implementing the logic to clean up collision data based on position, rotation, etc. data between physics ticks, the "low resolution collision grid" system I've drawn up for broad-phase collision detection, which I'll explain later, and the system that reports collision events to outside observers.
    2) Division of collision volumes into layers, allowing for further reduction in unnecessary collision tests. (Painful hurtboxes don't need to test against terrain.)
    3) Implementation of variable reactions to collisions within the physics system itself, along the lines of Unreal Engine's "Ignore, Trigger, Block" physics interactions.

    I have no idea how far I'm going to get into that progression, so we'll play it conservatively and say that the goal is just phase 1 by next Friday.

    My favorite musical instrument is the air-raid siren.
  • UselesswarriorUselesswarrior Registered User regular
    DodgeBlan wrote: »
    Hey game devs,

    I've got a question for anyone who's been trying to make games in the casual space

    I've been working on a casual iOS spelling game for a while, and I'm pretty happy with the core gameplay loop.

    The part that's really bad is the metagame structure. The levels, the scoring, the menus and such.

    Does anyone have any suggestions for casual iOS games that have
    a) a well structured metagame that uses levels
    b) that's simple (not something with a really complicated structure with a million currencies and such)
    c) intuitive

    A lot of the really big games have a really complicated structure that is really well monetized, but I don't think I have the bandwidth to build 'ideal' monetization. I'm looking for something that gets the job done that isn't six months of work.

    Thanks!

    As someone who built a lot of metagame into my game my advice would be, don’t. At least at first, get a simpler version in front of users and see how they respond. I also spent awhile building engagement and monitization feature and they barely got used and didn’t make me any money. My advice would be to see if you have a game that is engaging to people first and then spend the time building out monetization features.

    Hey I made a game, check it out @ http://ifallingrobot.com/. (Or don't, your call)
  • RoyceSraphimRoyceSraphim Registered User regular
    First project i will publish called, A Bad Day

    After researching a day on the moon, next published project will be called 1 long night.

    Research is fun, the art will kill me.

  • DisruptedCapitalistDisruptedCapitalist I swear! Registered User regular
    I was curious yesterday to see what kind of gaming frameworks there were for Javascript HTML5 out there cuz I was thinking it might be a cool exercise to try to design my own. Turns out there are.... A TON. I mean I figured there'd be a few mainstream ones, but I've found dozens. Of course a lot of lists include WebGL frameworks like three.js which is not exactly a gaming framework, but there are a lot of github project that can be added on with three.js for game functions. A bunch are listed here: https://html5gameengine.com/, but this is not a complete list as I found many others on GitHub like Platypus and Springroll that were made for PBS-Kids.

    My first thought is who the hell has time to design all these engines, but then it occurred to me that many of them could have started by people like me who were looking to update their portfolio, or others like Springroll which were made for a corporation.



    "Simple, real stupidity beats artificial intelligence every time." -Mustrum Ridcully in Terry Pratchett's Hogfather p. 142 (HarperPrism 1996)
  • KupiKupi Registered User regular
    Kupi's Weekly Friday Status Report

    Last week I said I would only commit to a first phase of my collision detection engine which would be based on numerous simplifying assumptions, and it's a good thing I did because I didn't even get that far, thanks to a combination of the last dregs of GDQ VoDs and Travis Strikes Again. I managed to write all the code necessary but never actually (re-)wrote my sample application to employ it, so I don't have any nifty Youtube with objects flying around in a field of cornflower blue to show you. My punishment (and yours) is to go into more detail than usual textually.

    This week's goal was to get a naive form of my collision detection system operating. The contract of the collision detection system is that it queries for entities with a Collision Volume (required), Position (optional), and Velocity (optional), and writes back new Collision Volumes with updated collision data and pointers to collision events they participated in during this frame and updates the associated Positions, if any.

    Here are the things that the collision detection system doesn't handle yet, but will eventually:
    - Caching of collision data. Collision Volumes have a base collision data object (e.g. all enemies of the same type have the same hitbox) which is then transformed based on the individual entity's position, rotation, and scale to produce the "real" collision data for the Collision Volume. If neither the base data, nor position, nor rotation, nor scale, nor any other data that might influence an individual entity's collision data has changed since the last time the collision detection system observed them, then we can skip updating the collision data for that entity. Since something like upward of 75% of the collision volumes in play will be associated with non-moving platforms, that's a lot of computing we can not do. For now the collision detection system just updates every entity's collision data unconditionally.
    - Parenting of entities. The whole system doesn't have a concept of parented entities. They are all individual objects so that, for instance, there's no distinction between a body/terrain navigation volume, a hitbox, and a hurtbox.
    - There is no concept of layers. Every single collision volume is tested against every other one. Once the concept of layers exists, we can skip even more processing.
    - In-engine blocking interactions. The collision system can detect when a collision occurs and between which collision volumes, but there is no manual enforcement of one volume's ability to stop another from moving through it.

    The one non-naive processing step I have in is the use of the "low resolution collision grid", or LRCG, which is my own custom-designed broad-phase collision detection system. (Axis sweeping / sweep and prune is better for broad applications, but I have a few specific features of my system that I think make the LRCG preferable.) In essence, the LRCG breaks the 2D game world into buckets, similar to how a quadtree might do it, but without the layering. Instead, everything is stored in a dictionary keyed by a custom tuple type pairing X and Y coordinates. To produce a collision volume's coordinates on the LRCG, the game applies a floor function on whatever the LRCG's interval is. For instance, if the LRCG's grid size is 32 pixels, then the positions 0.000 to 31.999 map to LRCG coordinate 0, 32.000 to 63.999 map to 1, 64.000 to 95.999 map to 2, and so on. The entity gets placed in every LRCG node that it overlaps. For every entity that is already in that LRCG node, the game increments a counter associated with the pair. (These are stored in a dictionary which is keyed by another custom tuple that produces the same hash code no matter what order you provide its constituent members in-- that is, overlapCounts[new SymmetricKey(X, Y)] is the same value as overlapCounts[new SymmetricKey(Y, X)].) To get every pair of collision volumes that might collide this frame, all you have to do is iterate over the keys of overlapCounts (because when an overlap count goes to 0, we remove it from the dictionary).

    The trick is that the collision detection system keeps track of each collision volume's span in terms of LRCG coordinates from frame to frame. Since objects move into new LRCG ranges so infrequently (remember that an object moving at 16 pixels per frame is already perceived as going pretty fast), the amount of bookkeeping the game winds up doing is fairly low. And if some other entity wants to perform a raycast or other collision test outside of the purview of the main movement/collision detection cycle, the collision detection system can very, very quickly eliminate a large number of objects that it knows won't get hit.

    My goal for next week is to finish up what I didn't get done this week, namely making sure that my naive implementation actually doesn't crash, and then appending to it the concept of layers, such that certain objects can only crash into certain other objects.

    My favorite musical instrument is the air-raid siren.
  • CornucopiistCornucopiist Registered User regular
    Kupi wrote: »
    Kupi's Weekly Friday Status Report
    This is very similar to what I'm doing to swap between detailed meshes and low res meshes in my BlockyWorld. The efficiency gain is astounding.
    But, what I like even more is that I can depend tons of other functions from it.
    For example, I can simulate general npc/monster behaviour as a function of density, then collapse that into defined entities as the player comes closer.
    Ideally, this can be tied into other functions too. So you could have a Conway Game of Life wave of predators sweeping over a map in low resolution, and have a similar sweep of desperation/heroism. So as you travel you'd find quiet areas, dangerous areas, and NPCs who are standing up to or hiding from the predators.

    Im implementing that right after I fix up world peace.

  • KupiKupi Registered User regular
    An addendum to my previous post:

    One further motivation for using the LRCG rather than axis-sweeping is the specific shape of my data. My target is a Sega Genesis / 16-bit-like aesthetic and level structure, so many, many of the objects are going to be on the edges of the grid, aligned with one another, and roughly sized to a single grid unit. So whereas a single-axis view of a 3D game might look something like this:
    |--------------------A------------------|
         |--B--|
             |--C--|
                             |----D----|
    

    My levels look something more like this:
    |--A--|
    |--B--|
    |--C--|
    |--D--|
        |--E--|
    

    Consequently, anything moving past the stack of platform blocks is going to cause dozens of swaps in the structure that keeps track of overlaps on that axis, most of which aren't actually going to result in a collision (because the moving object doesn't overlap the platforms on the other axis). Basically, axis-sweeping is great for the 99% case of modern game dev where objects have a large range of sizes and inexact positions. My objects have very regular sizes and strongly-aligned positions.

    My favorite musical instrument is the air-raid siren.
  • rembrandtqeinsteinrembrandtqeinstein Registered User regular
    some resources I came across while working on my hex based Warlords clone

    awesome analysis and algorithms for handling hex based anything: https://www.redblobgames.com/grids/hexagons/#basics
    bezier curve tool for Unity: https://github.com/SebLague/Path-Creator (wish I found this one before I made my own)

    screenshot of proof of concept (which I broke to work on the level editor)
    de9tqxnuok81.png

    currently original square based proof of concept took about 4 hours, spent another 21 converting to hexes and adding a bit of polish and some architecture work, then about 14 hours on a level editor that is still only half done

    but I'm recording my time here to both give myself credit and to help me plan future projects better https://docs.google.com/spreadsheets/d/1-U1EwQJQbucXois9ZukRYjELU7SAQACjCwOSHQCI-II/edit?usp=sharing

    game is still unplayable until I finalize the level format and re-write the in-game loader to use the new one


  • ZekZek Registered User regular
    Does anybody else find themselves somewhat paralyzed by unrealistic standards for a hobby project? I want to get back into game dev as a hobby again, but I find it hard to motivate myself when I compare what I can achieve by myself to all the indie games that already exist on Steam etc. I don't intend to do this for a living or anything, but I can't shake the feeling that it's not worth creating something that nobody really wants to play because there are so many better games out there.

    Realistically I know that's not a productive train of thought, and I should be doing it just for the joy of creating something - and who knows, maybe someday I'll have a great idea and be experienced enough to pull it off. The nagging self-doubt is still hard to shake though. What do you guys do to stay motivated?

Sign In or Register to comment.