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
al-azad
May 28, 2009



Helldivers was my favorite one-of-those, a game that replicates the feeling of Warhammer 40K where you're armed with machine-gun shotguns and the scariest turret to ever exist in a video game that has no friend-or-foe detection but enemies are infinite so it incentivizes always moving. But also you're going to be competing with my memory of Helldivers so good luck lol

If you're looking for inspiration on *juice* Renegade Ops is underrated in that front. It's kind of like a GI Joe take on the Strike series, just a bunch of toy cars shooting missiles and blowing up every building in a tropical island.

Adbot
ADBOT LOVES YOU

al-azad
May 28, 2009



TooMuchAbstraction posted:

Does anyone have any good resources on how to make good-looking smoke/fire/explosions for games? I'm vaguely aware of basically two different approaches: pre-rendered billboards (look great as long as you can't get too close and see that they're 2D) and chunky animated meshes (which is good for 3D-ness, but tends to be very stylized). But sometimes I'll see a game that has super good-looking results and I'm not able to figure out what they're doing. Like, it looks properly 3D. I suppose it could be a raymarched shader doing a bunch of math on the fly, but that seems kind of expensive. I'm sure there's plenty of other possible techniques out there, and I'd love to be pointed at an explainer.

What level of fidelity/aesthetic are you looking for? Realistic explosions or Wind Waker cartoony explosions?

For explosions you can get away with a lot using just a sphere that rapidly expands and collapses with an emissive material that fades in intensity over time then you can cluster several smaller spheres that scatter in random directions with random gravity to simulate smoke. Billboards generally work best for smoke clouds they look hokey with explosions up close.

For smoldering smoke like e.g. left in a crater I find a using a particle line renderer that randomly wobbles left to right is a convincing effect.

Fire actually looks the best as a billboard, you can create a sprite sheet of greyscale animated cloud.

Sorry I can't provide any hard details until I know what style you're aiming for.

al-azad
May 28, 2009



Hammer Bro. posted:

I've had multiple people tell me I should not call Ringword Ringword, but should instead go with Wordtris or Wordtrix.

I come back with either Tetris or Wetrix (a very underappreciated game) would sue me. And I like memorability.

Though I think after a week of tweeting I didn't get a single response, so there's also that.

Luckily I'm making a card game for a game jam right now so I don't have to worry about things like polish or marketing.

Ringword just has the very unfortunate connotation of a particular parasite.

al-azad
May 28, 2009



Gramps posted:

Hey everyone- I am an old goon with a lifetime of experience in Audio and I think I would like to try my hand at some Game audio stuff, maybe professionally if I really take to it. I bought Aaron Marks book and I'm trying to learn UE5, but is there any piece of advice you'd give or any pitfalls I should avoid?

Edit:

Holy poo poo dude these rule

I would say “know your audience.” As the above posters pointed out game music is typically melody driven with short, repeating loops of repetitive phrases but this is only really true of arcadey/action games. Narrative heavy games can run the gamut with some just using popular song composition and the weirder the theme the more eclectic the music tends to be.

Ape Out was inspired by improvisational jazz (it even licensed Pharaoh Sanders’ exceptional You’ve Got to Have Freedom) so the soundtrack is wildly chaotic and every action diegetically adds to the riff with cymbal crashes and horns. Then you’ve got Jet Set Radio which is more like they built the game to fit the soundtrack, JSR Future just has a Cibo Matto song it all sounds like something you’d hear in a club.

Rain World is low-fi and atmospheric, practically a-melodic. It creates a sense of calm amidst a beautifully decrepit and hostile world that evokes its title.

Diablo’s Tristram and Unpacking’s Own Two Feet are just stellar themes that don’t exist to drive the player’s actions but rather set a mood. One is a dark acoustic piece, the other is a pop synth acoustic piece that sounds wistful and nostalgic which represents both games’ central themes. Neither song has a chorus giving them an improvisational feel.

Shoji Meguro’s work toes the line of pop and traditional video game music. Last Surprise is a popular example of something that wouldn’t sound out of place on the radio and is a song with an intro - verse - chorus - verse - chorus - bridge - chorus/outro. The pacing of the intro lines up perfectly with the transition to battle and the chorus drops right when most players have likely setup an all out attack such that the music swells as the flashiest animation occurs.

Uematsu was also a master of this. The early Final Fantasy battle theme intro of Am - G is timed with the transition to combat such that when the first verse hits the first ATB bar is filled. Final Fantasy VII’s main theme is like a 7 minute song with no traditional structure that goes through like 3 movements and non-typical to rpg songs it doesn’t reset when you exit battle.

Chrono Trigger fits into a happy middle ground. In the early 90s RPG music tended to be like a 60 looping melody but most CT songs have two distinct verses and an outro before they loop. Tyrano Lair (which is pretty obviously inspired by Mr. Crowley) has a 50 second intro that isn’t part of the loop it loving rules lol.

If you’re not familiar with video game music outside of like one genre or whatever games you personally play definitely do some deep dives. I’ve been poisoned collecting vinyl releases, I have more records from games I haven’t played than games I have because their soundtracks are so good.

E: uhh this is assuming your lifelong experience in audio is music related and not like “foley engineer” in which case I would tell you to familiarize yourself with fmod, spatial audio, and audio compression settings! https://medium.com/@made-indrayana/understanding-audio-compression-settings-in-unity-e879a821023f

al-azad fucked around with this message at 19:37 on Mar 20, 2023

al-azad
May 28, 2009



Polo-Rican posted:

Couldn't agree more... There are trillions of games where NPCs and enemies just kinda stand around and nobody cares if the game is good. For example, I'd bet not a single person while playing Hades was distracted by the NPCs being in fixed locations. The only time it might matter would be if you're going for ultrarealism or sim behavior: e.g. it would be funny if deer were just standing around in fixed locations in a hunting sim

I was actually upset the NPCs in Hades moved around! Where is snake-head maid, I need to date her oh guess I just need to die in the dungeon again.

al-azad
May 28, 2009



Margritt from Elden Ring immediately comes to mind as a boss specifically designed to test the player's ability to judge dodge/parry windows, especially since it's easier to dodge into him because his reach is like 4 consecutive dodge roll lengths.

It's really cathartic reaching Morgot and despite having a wider list of moves he's piss easy.

al-azad
May 28, 2009



TMP makes it easy to change fonts which alone is enough to never use the default text.

al-azad
May 28, 2009



TooMuchAbstraction posted:

Getting input glyphs into your text is certainly doable, but it takes a fair amount of setup, especially if you want to be able to support a wide range of input devices instead of e.g. just Xbox gamepad glyphs. I did it for Waves of Steel, and took notes because it was way more work than I expected, going in. The big problem boils down to that when Unity auto-slices a sprite sheet into individual sprites, it doesn't give those sprites sensible names, and I didn't want to have to manually rename every sprite (especially if I anticipated adding support for more controllers in the future). So I needed a way to automatically name the sprites with sensible names, so that I could use those names when inserting image tags into my TextMeshPro text objects.

Here's what I wrote down at the time, extracted from a readme file I left for myself. It relies on Free Texture Packer, Git Bash, ImageMagick, Perl, and Python, so you'll need all of those installed.

OK, for posterity's sake, here's my complete process.
  • Download button prompts asset pack.
  • In Git Bash, run find . -name "*png" | perl -ne 'chomp; `magick.exe convert "$_" -fill "#00000001" -opaque "#00000000" "$_"`' to make fully-transparent pixels instead be very very slightly non-transparent (requires ImageMagick). If you don't do this then Unity's auto-slicer will chop up some sprites into multiple sub-sprites because they contain multiple disconnected components.
  • Use Free Texture Packer to make a couple of atlases (the images don't all fit into a single 2048x2048 atlas, and larger ones may not work on all systems). Make sure to set the padding to 1, or at any rate, something bigger than 0. Advise manually adding each folder instead of adding the entire "Button prompts" directory, so that the exported JSON file has shorter paths.
  • In Unity, import the atlases. Change their texture type to "Sprite (2D and UI)" and their sprite mode to "Multiple". Click the "Sprite Editor" button, go to Slice, use the default automatic settings. Click "Slice", then "Apply" in the top right.
  • In Git Bash, run this Python script to update the Unity .meta file for each atlas file. For example, ~/Anaconda/python.exe yamlparse.py atlas-0.png.meta atlas-0.json. It changes the sprite's name based on the JSON output by Free Texture Packer.
  • In Unity, select an atlas file, right click -> Create -> TextMesh Pro -> Sprite Asset.
  • If you have multiple atlases, choose one as the primary, and add the others to its "Fallback Sprite Assets" section.
  • In Unity in the project view, find TextMesh Pro/TMP Settings, go to Default Sprite Asset, set it to that primary atlas.

NB I also trimmed the icons prior to replacing transparent. And I had to set the padding in Free Texture Packer to 2, not 1.

NOTE: you can't just recreate a Sprite Asset on top of the existing one. Delete it, make a new one, then set the new one as the default in TMP's settings asset.

We may someday want to look into this:
https://gist.github.com/MattRix/2dd0d0f79bdd6a60541ea9387c803f59
but would need to track down the author to get licensing info first. Twitter?

brain_shortcircuit

I think i'm just going to make a series of generic Joycon sprites and call it a day. Everybody knows the bottom button of a diamond is A or X or B whatever

al-azad
May 28, 2009



Have you seen this package: https://github.com/mob-sakai/ParticleEffectForUGUI

al-azad
May 28, 2009



The only thing I worry about when doing fancy UI effects is performance because it seems like animating anything in canvas tanks harder than having a million polys on screen.

al-azad
May 28, 2009



LoboFlex posted:

I haven't posted anything in a while since I've mostly been shoulder-deep in technical debt and miserable UI rework. I did get some help with audio essentials though; hopefully it's enough for a steam trailer and demo somewhere down the road.

https://i.imgur.com/aE5WU93.mp4
It shouldn't be a surprise, but having more and better sounds really does add a ton to the general feel of the game.

Have you come up with a name for the triangles? Because I just got memory-implanted that someone at some point called them nachos.

al-azad
May 28, 2009



death cob for cutie posted:

Out of curiosity, for those here that have/have tried to get into making games without knowing much about code: how do you feel about your skills as a programmer? Do you think you get tripped up when trying to think about how to write new features, do you think your code is hard to work with, do you think you don't have a great understanding of how to code?

I've been following along with this Python/TCOD roguelike tutorial on and off for a bit, mostly as a quick overview of how TCOD works (the documentation is better than it used to be, but it's not great). The "About" page suggests that this tutorial is primarily aimed at people who already know how to code/use Python, and it definitely glosses over some of the "why" of how some of this is implemented - I have a feeling there's a non-zero number of people who have gone into this without any familiarity with programming at all. As someone who teaches people how to code, I really wish more time was spent elaborating on why certain things are written the way they are. This is another problem with a lot of code tutorials, I feel - it can be easy to follow a tutorial to come up with a working result, but it can be hard to start modifying that result to create what you're envisioning.

I'm thinking about spending some time writing my own version of this tutorial that has a greater focus on learning how to code - breaking new material down step by step to explain it instead of just presenting big pasteable code blocks, taking some time to explain what certain syntax means and why we use it, talking about theory rather than just chasing a result. Do you think that's something you would have been interested in as a newbie? Or does that sound too overwhelming for someone who really just wants that first dopamine hit of making things move around on screen?

I got into game making using finite state machines (RPG maker 2000 scripting) and I'll die doing most of the work with finite state machines. I'm a visual guy and I can follow visual implementations much more naturally than text. But that doesn't mean I don't know how to "code" because the two approaches aren't wholly different. At its core programming is just writing tasks and whether you use blueprints or write scripts it's all about performing operations as simply and efficiently as possible then going back and writing it again even simpler and more efficient.

I feel like most people will instantly have a solid grasp of simple logic but lose it at the specific vernacular that's inherent in CS and nowhere else. Personally I get hung up imagining the order of things, like writing text is a linear input but the logic doesn't necessarily happen in linear order. By the time you get to declaring values and instatiating and inheritance you've completely lost me, give me a flowchart and show how the arrows connect.

al-azad
May 28, 2009



I don't know about other platforms but Unity has very good audio compression. For one of my projects I had 10 cd quality tracks and a hundred audio files equating to well over a gigabyte of sound alone and the final filesize was ~100mb.

al-azad
May 28, 2009



SerthVarnee posted:

For me, the medium strength one was just an incredible experience of my entire face relaxing as the world suddenly fell into place and all was calm and blissful.
Adding an option in the accessibility menu, to simply apply such a color filter to the entire game would probably work wonders.

How would you propose balancing for contrast? Would a "high contrast" mode negate the benefits of screen tinting?

I've already implemented dyslexic font options in my game, an adjustable filter post processing is trivial but I have a lot of dark scenes that just wouldn't read as well without also adding contrast sliders.

al-azad
May 28, 2009



dhamster posted:

So, I forgot if I've brought this up before, but as I add more new hand drawn sprites to my game, the filesize of my main 'versus' scene gets bigger and bigger, requiring more RAM and longer load times, probably other performance impacts. Some users are saying the game appears to stop responding when loading this scene for the first time, though after it's in memory they don't see the issue any more, and it responds again after loading the sprites. I'm using Unity, and I think this is because each character has an animator object attached to it that contains basically every combat animation in the game for every character. Is there a way to pre-load this is in an earlier scene and/or break it up into smaller pieces and only load each character's animations when the scene begins? I'm also not sure if the latter would cause the characters to 'pop in' only after the main scene loads.

You should look into creating a single "master" animator that just controls the parameters of a dummy unit and then using animator overrides which let you remap animations on an individual basis. This way you can avoid what I can only imagine is the spaghetti mess of a single animator controlling every single animation.

Then as TMA said create a Resources folder where you drop all your prefabs. Create a "fighter controller" or something that instantiates the prefabs only when called and destroys them when no longer needed.

Also look into audio optimization which can cause memory problems. IIRC "preload audio data" is a default import setting which causes the scene to delay loading until all audio is loaded. Only check "preload audio data" for audio that needs to be played ASAP, everything else can load in background or stream. Default audio import is also decompress on load which is more memory intensive.

al-azad fucked around with this message at 17:06 on Jun 21, 2023

al-azad
May 28, 2009



dhamster posted:

So right now I have a 'master' animator for the template character, and each character exists as an animation override layer within that animator. Is there a way I can have that controller talk to a second controller in a prefab instead of a different layer within the same animator?

Per TMA's comment, I get that the way I'm doing it kinda sucks, but I'm just not sure how to selectively load only one character at a time if I'm doing frame by frame sprites in an animation controller.

So each character is on a separate layer within that template character or are you using the actual unity asset animator override controller? If it's the latter then you're good on that front otherwise yeah you're loading potentially hundreds of sprites for that one controller.

e: You should also atlas your sprites to load them in bulk instead of one at a time. I think Texture Packer is one of the best deals for the money but I think there's some good free alternatives on itch

al-azad fucked around with this message at 21:25 on Jun 21, 2023

al-azad
May 28, 2009



I'm a firm believer in never reinventing the wheel. You know Unity, make a Unity project, it's not like you're at a level where this has to be production ready and stable for release you're just making something fun.

But it sounds like you've already made your mind up with Godot and I'm also a strong believer in just following your heart and it's not like you're doing this to put food in your stomach either.

Adbot
ADBOT LOVES YOU

al-azad
May 28, 2009



Unity has one of the best compression methods I've seen and I've never had a final build over ~150mb unzipped which kind of makes me side-eye any really big Unity project. I had to have a seasoned technical artist explain to me how to remove unnecessary modules from Unreal 4 and it was still 4x larger than it should've been.

The problem I see with Unity as a platform is that it's like playing in a sandbox but you forgot your toys so you have to bum hand-me-downs from other kids. I never had an issue with it until I wanted to make interactable grass that I could paint using their terrain tools. But the terrain system is so arcane my only recourse was either using polybrush (which I wasn't going to hand paint several square kilometers of terrain!) or scour the internet for the tech wizard who found a cheaty hack that let me place my custom grass using the terrain's splat map system which was only possible via a 2022 update so I had to upgrade anyway! Unity is fine until you run into a very specific issue then you need a dedicated software engineer or crowdsource a solution.

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