Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
Harold Krell
Sep 10, 2011

I truly believe that anyone and everyone is capable of making their dreams come true.

:unsmigghh:
A game for streamers:

https://twitter.com/harold_krell/status/1261740921323843585

Adbot
ADBOT LOVES YOU

abraham linksys
Sep 6, 2010

:darksouls:

baby puzzle posted:

I am polishing up graphics and stuff on some new content. I think this is a lovely screenshot.



once again, i have made the mistake of opening the gamedev thread while starting to dip my toe into trying to make something, and saw something so impressive-looking that i am immediately intimidated :v:

I've been trying to build some kind of procedural track-based game in Godot and found it pretty difficult so far. i managed to create a random descending path using godot's curve3d (which is a bezier curve thing) and this algorithm for generating curve control points to fit randomly-generated points. trying to make it twist, with banked turns that are generated from the turning speed, completely maxed out my math knowledge, though.

I thought maybe I could do some poo poo with normals or derivatives or whatever to figure out how to "bank" a point along the curve correctly, but couldn't figure out the math for it at all, and google turned up very little practical stuff in terms of generating or automatically this. i think, like, if i were building a track manually, i would just create a second spline that had the desired normals for each banked turn (e.g. a vector sticking out sideways if i want a 90 degree turn), and then I could interpolate along that when generating my mesh. trying to figure out an algorithm to do this for a randomly-generated curve has got me stumped, though

i might just build some simpler track-followin' game (right now I'm down to just doing a little thing with stuff traveling along a half-circle "over the horizon"). i will say the programmatic 3d rendering tools in godot are pretty awesome as someone who has no idea what the gently caress i'm doing, since you can just render wireframe lines real quick (as long as you don't, uh, need actual face culling for your environment to make sense). it's a neat lil engine for something you can grab off itch.io and download in three seconds!

Ranzear
Jul 25, 2013

Shoehead posted:

And it almost always makes the pixels look muddy and desaturated, like babbies first photoshop pixelart that's all various shades of black with hints of colour.

Still some good takeaways from the first two videos. Unity actually has a depth-to-normalmap conversion built in, which could simplify art pipeline a lot, but those really cover why it doesn't work very well below a certain size threshold, and even still the Unity conversion has a very vague slider for how much it smooths the result. Cardinal shadows is just a way better method even above pixel art resolutions. I only linked the third video because that's the game he mentioned.

Also the mistake is not normal mapping pixel art, but trying to use smooth lighting. Threshold that poo poo for some hard shadows and get some fresnel edge lighting on it too to make stuff pop. It's not bad to light sprites, they're just too often lit badly.

Hell, normal-map lighting but then per-pixel clamp to a color palette. Would look fuckin' magical.

Ranzear fucked around with this message at 01:58 on May 17, 2020

baby puzzle
Jun 3, 2011

I'll Sequence your Storm.

abraham linksys posted:

once again, i have made the mistake of opening the gamedev thread while starting to dip my toe into trying to make something, and saw something so impressive-looking that i am immediately intimidated :v:

I've been trying to build some kind of procedural track-based game in Godot and found it pretty difficult so far. i managed to create a random descending path using godot's curve3d (which is a bezier curve thing) and this algorithm for generating curve control points to fit randomly-generated points. trying to make it twist, with banked turns that are generated from the turning speed, completely maxed out my math knowledge, though.

I thought maybe I could do some poo poo with normals or derivatives or whatever to figure out how to "bank" a point along the curve correctly, but couldn't figure out the math for it at all, and google turned up very little practical stuff in terms of generating or automatically this. i think, like, if i were building a track manually, i would just create a second spline that had the desired normals for each banked turn (e.g. a vector sticking out sideways if i want a 90 degree turn), and then I could interpolate along that when generating my mesh. trying to figure out an algorithm to do this for a randomly-generated curve has got me stumped, though

i might just build some simpler track-followin' game (right now I'm down to just doing a little thing with stuff traveling along a half-circle "over the horizon"). i will say the programmatic 3d rendering tools in godot are pretty awesome as someone who has no idea what the gently caress i'm doing, since you can just render wireframe lines real quick (as long as you don't, uh, need actual face culling for your environment to make sense). it's a neat lil engine for something you can grab off itch.io and download in three seconds!

Each of my spline points has both a position vector and a normal vector. So it’s a 6 dimension spline. Don’t get caught up I thinking that a spline only has 3 dimensions. Although whatever Godot provides probably doesn’t give you that out of the box. I don’t remember what spline library I’m using and I’m away from my pc. I author the banking and stuff manually everywhere. Edit: of course I built my own editor as well where you are maybe using something built for generic use.

baby puzzle fucked around with this message at 22:30 on May 17, 2020

abraham linksys
Sep 6, 2010

:darksouls:

baby puzzle posted:

Each of my spline points has both a position vector and a normal vector. So it’s a 6 dimension spline. Don’t get caught up I thinking that a spline only has 3 dimensions. Although whatever Godot provides probably doesn’t give you that out of the box. I don’t remember what spline library I’m using and I’m away from my pc. I author the banking and stuff manually everywhere. Edit: of course I built my own editor as well where you are maybe using something built for generic use.

godot has a built-in "Curve3D" node type that is, theoretically, something you could use to build a spline with, but the editor tools are really poor and it doesn't seem to give you any control over setting normals on the curve (in the editor or in code). that said, I think it'd be reasonable to make a second curve that has the normals, since you can just interpolate over the normals in the same way you interpolate over the positions, I guess? wouldn't be able to visualize it in the godot editor out of the box, but could be fine existing in code if I'm doing programmatic generation anyways...

I do wonder if you could have an algorithm generate "banked" splines automatically. Godot actually has a "PathFollower" Node that tries to rotate and tilt based on the curve, but it's really fuckin' busted, which makes me think it's not an easy problem.

probably a more reasonable compromise here would be to generate a spline by gluing "prefab" segments together, assuming you can make the start/end points match up. I think this is what (Super) Impossible Road does, something like "generate a spline for a curve segment that will turn 45 degrees over X, Y, and Z displacement, and add a random facing-in normal in the middle of the curve to make it bank." in fact, in impossible road, I think the pieces are "joined" at the checkpoints, which I suspect is why they appear to always be unbanked, since that makes it easier to glue them together

abraham linksys fucked around with this message at 22:52 on May 17, 2020

Hammer Bro.
Jul 7, 2007

THUNDERDOME LOSER

One thing I like about Godot is that it's pretty easy, with one or two gotcha moments, to write code that runs inside the editor the same as (or different to) what happens in-game. More than once I've had stuff draw to the editor so I could visualize the boundaries of game logic which aren't even represented at runtime.

Of course I have 0 experience with 3D anything so I can't do much more than point you in the direction of tool mode and maybe warn you to start small.

baby puzzle
Jun 3, 2011

I'll Sequence your Storm.

abraham linksys posted:

godot has a built-in "Curve3D" node type that is, theoretically, something you could use to build a spline with, but the editor tools are really poor and it doesn't seem to give you any control over setting normals on the curve (in the editor or in code). that said, I think it'd be reasonable to make a second curve that has the normals, since you can just interpolate over the normals in the same way you interpolate over the positions, I guess? wouldn't be able to visualize it in the godot editor out of the box, but could be fine existing in code if I'm doing programmatic generation anyways...

I do wonder if you could have an algorithm generate "banked" splines automatically. Godot actually has a "PathFollower" Node that tries to rotate and tilt based on the curve, but it's really fuckin' busted, which makes me think it's not an easy problem.

probably a more reasonable compromise here would be to generate a spline by gluing "prefab" segments together, assuming you can make the start/end points match up. I think this is what (Super) Impossible Road does, something like "generate a spline for a curve segment that will turn 45 degrees over X, Y, and Z displacement, and add a random facing-in normal in the middle of the curve to make it bank." in fact, in impossible road, I think the pieces are "joined" at the checkpoints, which I suspect is why they appear to always be unbanked, since that makes it easier to glue them together

If you are trying to generate randomized tracks, then using pre-made sections is going to be much easier. edit: oh, you said as much originally.

I wonder if I could take all of my existing tracks and markov-chain new tracks from them?

I don't know anything about "Curve3D" but you might have trouble getting two separate curves to "sync up"? Curves can be very problematic... where some sections of a curve are "longer" than others. It depends on what kind of curve it is. It was big issue for me to solve.

baby puzzle fucked around with this message at 02:29 on May 18, 2020

TooMuchAbstraction
Oct 14, 2012

I spent four years making
Waves of Steel
Hell yes I'm going to turn my avatar into an ad for it.
Fun Shoe
I've started working on my next boss concept, a flying train. Because how else are you going to get the Dora Gun anyplace useful? Figuring out how a flying train ought to work was a bit tricky. I didn't want to just slap jets and wings on the train engine because that felt, well, cheap. So instead I've been working out how to have tracks fly into place in front of the train and then recycle themselves afterwards.

https://i.imgur.com/DHlkdb5.mp4

The way this works under the covers is that there's a CinemachineSmoothPath following the train around, and the train tracks map themselves to positions on the path. Every frame, I update the waypoints on the path based on the train's current position and forward vector, then place the track segments with positions based on each segment's index and how far the train itself has moved (so that the tracks cycle positions underneath the train instead of maintaining fixed positions relative to it).



The green path is what the tracks follow, and it moves every frame. I had to add some extra waypoints near the train, to make sure the tracks were straight in the train's vicinity; otherwise the path would "overshoot" to maintain smoothness. The blue track is just how I'm moving the train right now; once in-game it'll have more freedom of movement. So in essence the train goes where it pleases, and the tracks move to ensure the train remains supported.

I'm quite happy with this use of CinemachineSmoothPaths. I've often found myself wanting to have spline-like curves but whenever I've tried to implement them myself the math has deterred me. It's nice that there's an existing solution. Sure it's technically intended to be used with cameras, but nothing stops you from using it yourself. If you do try this, you'll probably want to make use of CinemachineSmoothPath.EvaluatePositionAtUnit, which allows you to pass in a number from 0 to 1 to get a position anywhere along the course of the path. The default behavior with paths is that the range [0,1] is between the first two waypoints, the range [1,2] is between the second two, etc. which means that you'll speed up or slow down depending on how tightly-spaced the waypoints are.

Call Your Grandma
Jan 17, 2010

Shoehead posted:

I'm laying the groundwork for the real boss of dungeon 1

https://twitter.com/Shoehead_art/status/1261651160999636993?s=20

It would be funnier if instead of a boss fight it just followed this .gif and you kept on following King Kobold through doors while he taunted you and then finally he tells you he admires your persistence and lets you know where the dog is.

al-azad
May 28, 2009



TooMuchAbstraction posted:

I've started working on my next boss concept, a flying train. Because how else are you going to get the Dora Gun anyplace useful?

I suddenly understand why Metal Gear Rex was so terrifying. Much more surreptitious and less vulnerable than flying tracks.

That could end up being one of the most visually interesting vehicle fights I've seen in a video game since the waterwraith rear end motorcycle boss in Binary Domain.

TooMuchAbstraction
Oct 14, 2012

I spent four years making
Waves of Steel
Hell yes I'm going to turn my avatar into an ad for it.
Fun Shoe

al-azad posted:

I suddenly understand why Metal Gear Rex was so terrifying. Much more surreptitious and less vulnerable than flying tracks.

That could end up being one of the most visually interesting vehicle fights I've seen in a video game since the waterwraith rear end motorcycle boss in Binary Domain.

I'm really hoping that I can do it justice, but this game is pretty categorically my (artistic) reach exceeding my grasp. Leaning pretty heavily on the player buying into the concepts more than the aesthetic execution, at least when it comes to boss ideas and story beats.

Do you have a link to that Binary Domain boss? I'd like to see it but the only thing I could find was a >hour-long video of all the Binary Domain bosses, and I couldn't pick out that one from your description and the timeline thumbnails.

kirbysuperstar
Nov 11, 2012

Let the fools who stand before us be destroyed by the power you and I possess.

TooMuchAbstraction posted:

I'm really hoping that I can do it justice, but this game is pretty categorically my (artistic) reach exceeding my grasp. Leaning pretty heavily on the player buying into the concepts more than the aesthetic execution, at least when it comes to boss ideas and story beats.

Do you have a link to that Binary Domain boss? I'd like to see it but the only thing I could find was a >hour-long video of all the Binary Domain bosses, and I couldn't pick out that one from your description and the timeline thumbnails.

That'd be the Tsar Runner here: https://www.youtube.com/watch?v=NhgDsd_fDRQ&t=2000s

al-azad
May 28, 2009



TooMuchAbstraction posted:

I'm really hoping that I can do it justice, but this game is pretty categorically my (artistic) reach exceeding my grasp. Leaning pretty heavily on the player buying into the concepts more than the aesthetic execution, at least when it comes to boss ideas and story beats.

Do you have a link to that Binary Domain boss? I'd like to see it but the only thing I could find was a >hour-long video of all the Binary Domain bosses, and I couldn't pick out that one from your description and the timeline thumbnails.

The Tsar Runner. The actual fight is just an extended turret sequence but the boss' conceptual design is fun. Videogame robots tend to be humanoid or built purely for function which means lots of guns and armor, maybe you'll get a killer robot that looks like an animal, but here's a transformer with building sized wheels that exists solely to run you off the road. A helicopter or an armored vehicle would serve a better purpose but nah it's a transforming motorcycle.

TooMuchAbstraction
Oct 14, 2012

I spent four years making
Waves of Steel
Hell yes I'm going to turn my avatar into an ad for it.
Fun Shoe
Oh yeah, that's badass. It reminds me a bit of the boss from the minecart section in Final Fantasy 6, but animated and rolling all over the place instead of just a sprite. The gradual deconstruction of the boss also reminds me of Einhander, which used that technique extensively to change up boss patterns over the course of the fight without having the dumb "it's mad now so it starts fighting for real" thing that was pretty common for awhile. I remember one boss in particular you could shoot off all of its weapons and eventually get it to where the only way it could attack you was to try to shoulder tackle you.

Coming up with good boss ideas is hard. Like, I'm honestly unsure of how the flying train boss will actually feel different from fighting normal enemies. Obviously you should be able to attack the tracks and have that do something (probably paralyze the boss for a bit as it can't start moving until the tracks are restored), but I wouldn't want that kind of thing to be obligatory, lest it become a pattern boss (do X to make it vulnerable, than do Y to damage it). And of course its big gun should be a serious threat, maybe two-shotting the player if they let themselves get hit by it, but that mostly devolves into "when the boss is lining up their shot you need to prioritize evasion". Maybe I need to set up some secondary targets so the boss acts as a stage hazard for the first half of the mission, or something along those lines. Add some track supply depots, additional enemy ships, air bases, that kind of thing.

al-azad
May 28, 2009



Yeah, in execution there's no difference between your train that can move at will and a VTOL style vehicle. I think the track being the actual primary weapon is what you should do. The actual purpose of the vehicle is to fly low and surround ships. The tracks are electrified and drop mines which naturally herds the player through an obstacle course as the train moves. The train-cannon takes a while to load and aim but get hit and you're hurting. The tracks can't be permanently destroyed but you can damage them individually preventing that single piece from electrifying and dropping mines until it self repairs after X time. If the train passes over a damaged track you pause its reload/aiming timer as it wobbles out of control, maybe do some light damage to the train so skilled players can focus fire on the train while avoiding mines while most players will probably split fire between train, tracks, and mines.

al-azad fucked around with this message at 05:57 on May 18, 2020

kaffo
Jun 20, 2017

If it's broken, it's probably my fault

TooMuchAbstraction posted:

Oh yeah, that's badass. It reminds me a bit of the boss from the minecart section in Final Fantasy 6, but animated and rolling all over the place instead of just a sprite. The gradual deconstruction of the boss also reminds me of Einhander, which used that technique extensively to change up boss patterns over the course of the fight without having the dumb "it's mad now so it starts fighting for real" thing that was pretty common for awhile. I remember one boss in particular you could shoot off all of its weapons and eventually get it to where the only way it could attack you was to try to shoulder tackle you.

Coming up with good boss ideas is hard. Like, I'm honestly unsure of how the flying train boss will actually feel different from fighting normal enemies. Obviously you should be able to attack the tracks and have that do something (probably paralyze the boss for a bit as it can't start moving until the tracks are restored), but I wouldn't want that kind of thing to be obligatory, lest it become a pattern boss (do X to make it vulnerable, than do Y to damage it). And of course its big gun should be a serious threat, maybe two-shotting the player if they let themselves get hit by it, but that mostly devolves into "when the boss is lining up their shot you need to prioritize evasion". Maybe I need to set up some secondary targets so the boss acts as a stage hazard for the first half of the mission, or something along those lines. Add some track supply depots, additional enemy ships, air bases, that kind of thing.

Railway guns were built for levelling forts 30km away. So personally I'd have it run away from you, during which you can damage it, but it should always be faster than the player so eventually it gets far enough away to start it's next phase where it stops on the tracks and deploys its main gun. During this phase it will attempt to lock and shoot the player with huge AOE and decent damage (more damage in the middle of the AOE?), but the shots are telegraphed so you can avoid them. Once the player gets close enough again to the boss, it's too close for the boss to fire and it's got to pack the gun up again before moving to range, allowing the player to get some free shots off before it moves. If scaled right then it should be a 1-3 cycle fight depending on player loadout/skill.

That's just off the top of my head, I've never made a boss fight before but I really like railway guns :v:

Omi no Kami
Feb 19, 2014


For some reason this discussion is reminding me of that thing WWII battlships would do where they'd intentionally flood part of the ship to make it list on one side, raising the guns beyond their mechanical limits and extending their range.

Surprise T Rex
Apr 9, 2008

Dinosaur Gum
Made a little robot dude with an idle animation! The animation here is a little fast I think but that's easily adjusted. Quite happy with this given that I'm no artist.

OneEightHundred
Feb 28, 2008

Soon, we will be unstoppable!

Elentor posted:

TLDR: I'm extremely suspicious of demos that are basically half a dozen models instanced ad nauseum. We've been through two decades of that never having any real application.
Based on some earlier work by Karis, it sounds like it's probably something based on geometry images, i.e. grid of vertex positions stored in a texture instead of an arbitrarily-connected mesh.

TooMuchAbstraction
Oct 14, 2012

I spent four years making
Waves of Steel
Hell yes I'm going to turn my avatar into an ad for it.
Fun Shoe

al-azad posted:

Yeah, in execution there's no difference between your train that can move at will and a VTOL style vehicle. I think the track being the actual primary weapon is what you should do. The actual purpose of the vehicle is to fly low and surround ships. The tracks are electrified and drop mines which naturally herds the player through an obstacle course as the train moves. The train-cannon takes a while to load and aim but get hit and you're hurting. The tracks can't be permanently destroyed but you can damage them individually preventing that single piece from electrifying and dropping mines until it self repairs after X time. If the train passes over a damaged track you pause its reload/aiming timer as it wobbles out of control, maybe do some light damage to the train so skilled players can focus fire on the train while avoiding mines while most players will probably split fire between train, tracks, and mines.

There's definitely something to that, that is, having the big gun be the eye-catching threat you want to avoid if at all possible, but some secondary threat be what is doing all the damage in practice (assuming you are successfully shutting down / avoiding the big gun). I had thought of putting some weapons on the undersides of the tracks...hadn't considered mines, but that could work. Maybe I can have individual track segments make attack runs on the player, where they fly in front of your current heading and drop some mines.

The moment-to-moment gameplay in normal levels is all about getting the player to rapidly consider multiple threats, prioritize targets, and avoid big attacks while weathering small ones. It'd be neat if I could package all of that up into a single boss.

kaffo posted:

Railway guns were built for levelling forts 30km away. So personally I'd have it run away from you, during which you can damage it, but it should always be faster than the player so eventually it gets far enough away to start it's next phase where it stops on the tracks and deploys its main gun. During this phase it will attempt to lock and shoot the player with huge AOE and decent damage (more damage in the middle of the AOE?), but the shots are telegraphed so you can avoid them. Once the player gets close enough again to the boss, it's too close for the boss to fire and it's got to pack the gun up again before moving to range, allowing the player to get some free shots off before it moves. If scaled right then it should be a 1-3 cycle fight depending on player loadout/skill.

That's just off the top of my head, I've never made a boss fight before but I really like railway guns :v:

My concern with a boss that runs away from you is that I've always loathed bosses that play keepaway. Either they're faster than you, so you spent most of the battle trekking back and forth across the arena, getting a few hits in at each end, and then watching frustrated as they zip back to the other end...or they're slower than you, in which case they have a totally ineffectual combat plan as you just harry them from behind while they try to get away.

My first boss, the flying battleship, had a similar issue -- its guns can't hit you if you're too close to it. What I did there was have it paradrop PT boats, which of course can attack you from close-in and also provide a set of secondary targets. I still need to improve its AI so that its big guns can actually be relevant beyond the very opening of the fight, but I think it's in a reasonable place conceptually at least. I don't want to re-use gimmicks, and of course the tracks are already an obvious source of secondary targets, but I do need some other way to harry the player beyond just the big gun, that much seems clear.

The original thinking for putting the Dora gun on a flying train was literally "this gun kinda sucked for anything but some very specific purposes because it could only fire in directions aligned with the tracks, how can we fix that"? Well, if the tracks had a lot more flexibility in the directions they could point in, that'd do it. A flying train doing a strafing run on a battleship is certainly an evocative mental image.

OneEightHundred
Feb 28, 2008

Soon, we will be unstoppable!
Clearly if it has a gigantic gun it should be shooting gigantic shells that detonate below the water, forcing you to then dodge the gigantic steam bubble.

TooMuchAbstraction
Oct 14, 2012

I spent four years making
Waves of Steel
Hell yes I'm going to turn my avatar into an ad for it.
Fun Shoe
What the hell, crossposting from my dev.log thread, since it's still relevant to the conversation.

TooMuchAbstraction posted:

I spent today modeling, and now my brain is mush. Have a jet-powered train engine and a gun.





Gonna have to tweak the materials on the engine...I was in a different mindset when I set those up vs. with the gun, and they don't really fit together right now.

The engine is based on the "Black Beetle", an American testbed engine that in 1966 set a land speed record which still holds today...in America, because we don't build modern high-speed passenger rail. And the gun of course is the Dora Gun, a.k.a. Schwerer Gustav, the largest gun ever used in war.

The gun model comes to 17394 triangles, making it handily the single most detailed model in the game, though a decent-sized ship could still rival it by stuffing the deck full of parts.

Hammer Bro.
Jul 7, 2007

THUNDERDOME LOSER

That's interesting because I find art (childish 2D sketches anyway) the one thing I can do while my brain is mush.

Do object-oriented principles still apply when modeling something like that that's both quite cool but has some repeat elements.

TooMuchAbstraction
Oct 14, 2012

I spent four years making
Waves of Steel
Hell yes I'm going to turn my avatar into an ad for it.
Fun Shoe
You definitely want to make use of things like mirror modifiers (make the model symmetric about one or more axes) and linked duplicates (make a copy of this model, and whenever the original changes, the copy does too). Manually performing the same set of operations over and over again is tedious and error-prone. Having said that, I did eventually end up "baking" most of those into the model, turning them into real geometry instead of a copy of geometry somewhere else. All that it has at this point is an X mirror modifier. That will make any future edits more annoying, but hopefully there won't be many of those. I did that so I could consolidate the various components together into a single mesh, which makes my life easier when interacting with Unity.

I'd probably feel less like mush if I were working "freehand", without reference materials. Trying to imitate an existing thing as closely as I reasonably can is fairly painstaking work.

Hammer Bro.
Jul 7, 2007

THUNDERDOME LOSER

Oof. So you can't say model one of those gun "feet" (treads?), save it as a standalone model, and plop it onto the main model four times?

Remind me not to get into 3Dery.

Edit: vvv Oh that's reasonable.

Hammer Bro. fucked around with this message at 18:22 on May 19, 2020

TooMuchAbstraction
Oct 14, 2012

I spent four years making
Waves of Steel
Hell yes I'm going to turn my avatar into an ad for it.
Fun Shoe
You can, absolutely. I won't remotely claim that I'm making the best possible decisions about how to manage my stuff. But I have built up a decent intuition for when I still need that mirroring/linking, so I ditch it as soon as it's more hassle (due to cost of managing the different objects) than benefit (due to ease of editing). But for example, when I do guns on ships, I'm doing basically what you describe -- gun models are plopped on the ship model. I manage those in code though.

If it turned out that I did need to make large-scale edits to some repeated part at this point, what I would do is figure out the positional offsets of the different repetitions, delete all but one of them, recreate them as linked duplicates of the remaining one, and then edit that one. Then I can re-collapse them if I want. Takes maybe a minute or two.

Shoehead
Sep 28, 2005

Wassup, Choom?
Ya need sumthin'?
I got another boss on the way, he's currently figuring out how to dropkick properly!

https://twitter.com/Shoehead_art/status/1262822808037609472?s=20

Lucid Dream
Feb 4, 2003

That boy ain't right.
I'm not sure if it's been brought up in the thread before, but Tilesetter is a great program. Up until now, we've had each tile as an individual sprite with optional variations to try and break up the blockiness, but we always had the issue where our blocks looked.. well, blocky, because of the outlines on the blocks.

This is what it looked like prior to implementing Tilesetter tiles. All of the tiles in this image are simple 32x32 tiles. The pipes look seamless because we hackily removed the outline from 2 sides, but it looks weird if placed on it's own.


And this is what the same location looks like when we just swapped out a few of the old tiles with the new ones:


This is what it looks like to build with it:


This is what the output of Tilesetter looks like with it's 47 (I think) total variations.


One caveat is that it takes up a lot of space on the sprite sheet. We have LOTS of tiles in our game, but not all of them needed the full treatment so we decided to only use it on tiles that would logically be used in a "blob", and things like floors and ceilings that only need to be placed in a line use a subset (just 4 individual sprites each, left, right, center and solo). Tilesetter also didn't have an implementation for MonoGame, but it was fairly easy to roll my own code to render the sprites from Tilesetter's output.

All in all, Tilesetter seems like a solid program (with a bit of a non-standard UI) that can save a ton of manual work.

TooMuchAbstraction
Oct 14, 2012

I spent four years making
Waves of Steel
Hell yes I'm going to turn my avatar into an ad for it.
Fun Shoe
So this is going well:

https://i.imgur.com/opRPmDb.mp4

Obviously I've made the train tracks a secondary target that can also attack on their own. This is pretty important as the big rail gun can't shoot at you very often and, being only one gun, it's pretty easy to avoid. However, it's now borderline impossible to actually hit the big gun without taking out the tracks first -- they clutter up the targeting UI (which only lets you do "select target closest to aiming reticle", "select next target to the left", and "select next target to the right", while left/right are changing rapidly). And of course they're also just physically in the way, as you're shooting up at something that has tracks on the underside. So in practice you're gonna be taking out a lot of tracks.

My plan at the moment is that as you take out tracks, the train is forced to slow down in order to keep rail in front of it. This should make the train easier to hit, while also giving it a harder time lining up shots on the player. I worry that the fight's pacing is going to be off though. Like, the start of the fight is the most hectic, as the gun has no trouble lining up shots and you're constantly dealing with bombing runs, then it gradually tails off as the fight progresses and the enemy runs low on resources. Any thoughts?

A related issue -- my gun-aim logic just cannot predict the train tracks' paths worth a drat as they're constantly turning, and my path prediction is straight-line-only. This means that locking onto the targets (i.e. letting the guns auto-aim, which is how you shoot things 99% of the time) means you can't hit them. It's OK for firing into the swarm because your shots should still hit something, but individual tracks when they do bombing runs are practically invincible unless you aim manually, which I suspect will feel frustrating. Like, intuitively it makes sense that when a single segment peels off, it should be more vulnerable, not less. Any suggestions? I've looked into doing curved path prediction and it's too much for my brain.

Bongo Bill
Jan 17, 2012

At a glance, it's difficult to distinguish the train from the track pieces.

zebedy
Feb 25, 2006
well?

Perpetual Motion posted:

So, I've been toying around with making an adventure game of some sort. Lots of choosing where to go and objects to examine and choices to make, that kind of thing. I can code it just fine, the problem is in the script writing. A simple word processor is not quite up to the task. With the amount of individual descriptions and lines of dialogue and branching choices that can pop up in a very variable order, things get messy and impossible to navigate incredibly quickly in something like Word or Google Docs, and figuring out how to organize it all is nigh-impossible. Anyone have any suggestions for programs to use for writing/organizing a script/collection of smaller documents for that kind of game?

100% use inkle.

Hammer Bro.
Jul 7, 2007

THUNDERDOME LOSER


Many thoughts. I've been watching your progress in passing 'cause you're definitely making achievements on a number of fronts, but this was the first one that actually made me smile. Seeing the silly flying traincars in action (though they are a bit hard to distinguish at present) really communicates the absurdity of what you've been aiming for.

Given that your goal is to take out the core and not really the distractor tracks, would it be reasonable to make the tracks untargettable (but still hittable)?

I like the idea of having to pay very close attention to timing and dodging but keeping your eye on the prize, so to speak.

Then you could just do standard cheap boss logic and have everything move faster as tracks are destroyed so you don't have the current inverse-intensity problem. Early on it's well defended and there's a lot to dodge but it rotates slowly; if you somehow got it down to one track left without destroying the core (which would be hard to do except on purpose if you can't lock on to them) that thing would be spinnin' around like a madman.

TooMuchAbstraction
Oct 14, 2012

I spent four years making
Waves of Steel
Hell yes I'm going to turn my avatar into an ad for it.
Fun Shoe

Hammer Bro. posted:

Many thoughts. I've been watching your progress in passing 'cause you're definitely making achievements on a number of fronts, but this was the first one that actually made me smile. Seeing the silly flying traincars in action (though they are a bit hard to distinguish at present) really communicates the absurdity of what you've been aiming for.
Thanks! And yeah, I'm super-pleased with how this is turning out. I could be happier about the time cost (coming up on a week's worth of work for something that's gonna provide maybe five minutes of playtime, and it's far from done yet), but hopefully it's worth it.

quote:

Given that your goal is to take out the core and not really the distractor tracks, would it be reasonable to make the tracks untargettable (but still hittable)?
What I ended up doing is hack up my target-selection logic to prioritize the gun over anything else as long as it's onscreen. You can switch away from the gun to target other stuff, but if you're looking at the blob then you can easily grab the gun. Hopefully that works out OK.

quote:

Then you could just do standard cheap boss logic and have everything move faster as tracks are destroyed so you don't have the current inverse-intensity problem. Early on it's well defended and there's a lot to dodge but it rotates slowly; if you somehow got it down to one track left without destroying the core (which would be hard to do except on purpose if you can't lock on to them) that thing would be spinnin' around like a madman.

Hm, thanks for the suggestion. You're right that it would more or less keep the pace of the fight up. I guess I'd have to see how it looks to have those tracks flying around like that.

I spent today learning how to use Unity's animation system. This involved a lot of swearing, largely as it is inordinately easy to create a new keyframe rather than edit an existing one. Once I figured out that there's a button to snap the time cursor to the next keyframe, things got better, but by god I can't believe how bad this UI is. I did eventually manage to turn out this thing:

https://i.imgur.com/7SYKgTA.mp4

The way I'm planning to integrate this into missions is that everything in the animation -- terrain, ocean, train, tracks, and all -- is a single prefab. All such animation prefabs will be recorded, with unique names, in an AnimationDB. The mission data files will indicate animations they want to play by name; the mission loader will bring in the relevant animation from the DB at load time, store it at like (0, 1000, 0), and deactivate it. When the mission script says to play the animation, I'll fade to black, activate the animation, switch cameras, and fade in, then reverse the process at the end.

In other words the animations won't exist in the same game world that the missions do. I don't think this is a huge issue; the cutscenes I have planned don't really need to include context. They'll mostly be boss intros and maybe their deaths too.

chiefnewo
May 21, 2007

I love that boss intro. It has that perfect "what the hell" that a flying train track boss needs.

Ranzear
Jul 25, 2013

New game design gripe: Randomly Optimal Enemies

You ever run into that one enemy in a game where you could tell if it just spammed that one single behavior you would lose 100% of the time? Like the only reason you stand a chance against it is because it keeps doing dumb or random things instead?

The Marauder in Doom Eternal is one of these. What a garbage loving enemy. He automatically blocks all shots until he tries to melee attack, but only melee attacks in a narrow window of distance. The problem is he can and does also dash out of that distance and decide to instant-hitscan-shotgun you or just generally gently caress about with ranged attacks and never give you the opportunity. He can be randomly optimal and basically unkillable, dealing free unavoidable damage and taking none. "Wait for the opening" enemies are always the worst, but usually they have the basic loving courtesy to not damage you in the meanwhile. You usually still take damage from the melee hit when you do manage to stun him out of it, too.

Slay the Spire almost does this. Enemies have a script they follow but pick from multiple scripts, so if you get the five slimes on the 'all five attack first turn' script instead of any other it can still gently caress your whole run. If enemies in Slay the Spire followed optimal tactics the game would be unwinnable.

Dead Space 2 had one of these as well, and I had a few other looser examples. There should be a sanity check on this poo poo: If a player took control, could they abuse the gently caress out of some behavior and always win? AI dumbness does not offset that!

kirbysuperstar
Nov 11, 2012

Let the fools who stand before us be destroyed by the power you and I possess.

This is really good.

taqueso
Mar 8, 2004


:911:
:wookie: :thermidor: :wookie:
:dehumanize:

:pirate::hf::tinfoil:
That's a good post ranzear, it should probably be considered a design oversight in those games. Some kind of anti-optimal checker could reject those choices. It might be a sliding scale or optional, in StS for example one of the ascension difficulty enhancers could remove the limit and call it something like "enemies might gang up on you"

taqueso fucked around with this message at 03:03 on May 23, 2020

al-azad
May 28, 2009



Ranzear posted:

New game design gripe: Randomly Optimal Enemies

You ever run into that one enemy in a game where you could tell if it just spammed that one single behavior you would lose 100% of the time? Like the only reason you stand a chance against it is because it keeps doing dumb or random things instead?

The Marauder in Doom Eternal is one of these. What a garbage loving enemy. He automatically blocks all shots until he tries to melee attack, but only melee attacks in a narrow window of distance. The problem is he can and does also dash out of that distance and decide to instant-hitscan-shotgun you or just generally gently caress about with ranged attacks and never give you the opportunity. He can be randomly optimal and basically unkillable, dealing free unavoidable damage and taking none. "Wait for the opening" enemies are always the worst, but usually they have the basic loving courtesy to not damage you in the meanwhile. You usually still take damage from the melee hit when you do manage to stun him out of it, too.

Slay the Spire almost does this. Enemies have a script they follow but pick from multiple scripts, so if you get the five slimes on the 'all five attack first turn' script instead of any other it can still gently caress your whole run. If enemies in Slay the Spire followed optimal tactics the game would be unwinnable.

Dead Space 2 had one of these as well, and I had a few other looser examples. There should be a sanity check on this poo poo: If a player took control, could they abuse the gently caress out of some behavior and always win? AI dumbness does not offset that!

This is why Doom is still secretly one of the best designed games. Enemies have one attack, a cool down timer between attacks, functionally no limitation on their aggression, and a pain threshold that interrupts their attack.

LordSaturn
Aug 12, 2007

sadly unfunny




this, for me, is when you've finally outstripped Warship Gunner. I want donoteat01 to see this, "build a loving train" indeed

Adbot
ADBOT LOVES YOU

Escape Goat
Jan 30, 2009

al-azad posted:

This is why Doom is still secretly one of the best designed games. Enemies have one attack, a cool down timer between attacks, functionally no limitation on their aggression, and a pain threshold that interrupts their attack.

I've been playing a lot of Diablo-like games lately since I'm noodling around with making a Diablo clone, and trying to figure out why some of them feel so bland compared to D1/D2. I think the pain threshold / interrupt is one of the critical ingredients missing from some.

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply