• she/her

Gamedev w Slug Human.
evil milf 🐾🏳️‍⚧️🦝💕

posts from @schera tagged #game dev

also: #gamedev, #gamedevelopment, #game development, ##gamedev

They have their place to describe certain things, but I find myself increasingly using different terminology when thinking about game design -

unpolished ► unfinished

Finishing and polishing are extremely different activities. As every gamedev knows, polishing something is usually the opposite of finishing it. Many of the best games have unpolished features which work just fine and in no way make the experience worse. I find that talking about a feature as unfinished (or unbalanced, or badly implemented) does a better job of communicating the actual problem and what's needed.

During playtesting, every game inevitably gets feedback telling them to scope creep, add detail, sand the corners, etc. Requests for polish are usually not helpful. What are useful are requests to finish unfinished things, fix mistakes, or adjust things which are not working as intended. It will make it easier for us to communciate and give feedback if we separate these two things in language, and stop using 'polish' as a catch all for 'work'.

juice ► gamefeel

Juice is so narrow I feel like it misses the point... We've clearly moved past the screenshake era of indie games, and many of us have discovered how limiting juice-oriented game design can be. Retro games often have very little juice, but still serve up strong gamefeel which devs today are still trying to reproduce.

Just like polish, juice is usually either (A) a thing you try to slap on at the end to make the game seem adequately loved, or (B) a thing you get unnecessarily mired in at the expense of real progress.

Gamefeel isn't something you add, it's something you hone or nurture. Gamefeel comes out of the way core things are implemented just as much as it comes from the vfx and animation. It's the product of a vision for how each piece should handle and interact -- choices which are always informed by the technical, tooling, and labor constraints of the game.

flavor

Every game has gamefeel in a certain sense, but they have different flavors, and some are much tastier. Tbh I think flavor is probably the most useful way to talk about it. Some flavors are familiar and grounding, like a home cooked meal. Some flavors are factory-made, market tested and mass produced to appeal to a broad demographic. Other flavors are acquired tastes, imparting a strong impression which repels unfamiliar palettes.

Personally, I want to make the game which is, like... some really weird spicy fermented stuff you've never had before, which you dont rly love at first, but your friend keeps saying it's the best shit, so you try it and think it's OK, but then the next day you are just craving that flavor, and you start eating it all the time until it eventually becomes a comfort food and you learn how to make your own ferment at home because you need that salty musty taste which made you scrunch your nose the first time you smelled it.



You can usually guess the source of performance issues without even profiling, just by how things look.

First off, u need to be able to tell spikes from slowdown.

Spikes ~ hanging on a single frame while others run normally
Slowdown ~ low frame rate across a stretch of frames

A patch of frequent spikes looks slightly different from a patch of slowdown bc the framerate is more jittery and choppy. But at times it can be hard to tell. Ofc you can have spikes and slowdown at the same time...

So, if ur experiencing spikes, there are a couple likely culprits.

If your spikes are happening at the exact moment that something occurs, its likely tied to either asset loading or object creation/destruction/activation.

Activating an object for the first time comes w a small performance spike, and creating or destroying and object comes with a larger one. Preloading or pooling gameobjects can help. Also, asset loading can be vastly improved by tuning the assets' import settings.

If your spikes are happening at seemingly-random moments, the Garbage Collector is probably the reason. The GC isn't as bad as it used to be, but can still ruin your performance. Luckily there are still tons of tutorials explaining how to optimize for GC from back when it was the Unity-game-ruiner.

Anyways, if you're experiencing slowdown and not spikes, you should first figure out if the framerate corresponds to where the camera is pointed. If it does, you probably have too many renderers in view. Transparent renderers especially. Maybe it could be poly count, but probably not unless youre using models that arent meant for games. Otherwise, scripts that use OnWillRender() could be contributing.

If the camera orientation doesnt much change consistent slowdown, this leaves us with the sort of "everything else" of optimization. Ive seen this happen for all kinds of reasons, and you will definitely need to use the profiler to be sure.

This is where scripts with expensive Update()/FixedUpdate() will take their toll. So pretty much all the stuff people usually think of as optimization. It's not just inefficient code tho; if you have enough objects, even a tiny update function can take a huge toll too. Recently our biggest framerate-drain was from having hundreds of objects which just rotated at a constant rate...

Anyways, hope this was helpful or interesting. Obviously im not against using the profiler, its just useful and speedy to be able to eyeball things.

Also, it makes you feel like a badass when you guess correctly idk ☆♡