|
I appreciate watching the dumb mario 64 optimizations that Kaze does on youtube but I personally have no interest in finding the shortest number of opcodes for a good sine or removing branch instructions because modifying the code in memory is faster. Just let the compiler handle it, I am doing a 2d game I probably can get away with things which are ludicrously inefficient, let alone "not perfecrly optimized"
|
# ? Apr 28, 2024 20:58 |
|
|
# ? May 4, 2024 11:30 |
|
TooMuchAbstraction posted:- having trees on the terrain As an environment artist I think we should all come together as a profession and all agree that we don't need trees in any game.
|
# ? Apr 28, 2024 21:40 |
|
friendship ended with POINTER now FIRST CLASS FUNCTION is my best friend
|
# ? Apr 28, 2024 21:42 |
|
Chillmatic posted:This touches on why a lot of younger/less experienced devs either hate or are super reluctant to use C++. It requires you to understand and think about the hardware you’re working with. nah it's because c++ is a bloated nightmare language
|
# ? Apr 28, 2024 22:32 |
|
Name a more iconic duo than Template functions and esotericly vague compiler errors.
|
# ? Apr 28, 2024 22:54 |
|
roomforthetuna posted:I wonder if this is a recurring pattern, "well everyone knows [thing the previous generation all knows] so we don't need to teach that", and boom, a generation who can't cook / can't wrangle money / can't repair clothes / can't make a safe fire / etc. KillHour posted:"Stop writing bad code" is not a realistic answer. People will continue to write bad code and that code will go into more important poo poo than video games. There is a reason so many big companies are going hard into Rust and similar languages. The compiler should handle memory safety. Grum posted:I think everyone can get the concept of a pointer as an index into memory pretty quickly but how that interacts with the syntax of a given language, especially if you are still trying to figure out what you want the computer to do/what it can do and the tools you have to do that, is the real hurdle. Especially C, where you've got your declaration-follows-use syntax that is used literally no where else and is not explained in the K&R book. Earliest reference to that I could find was in a retrospective from the 80s which approximately nobody has read and if the last several decades of C have taught us anything it's that nobody can figure it out themselves All this because they wanted to make the variable declaration syntax look like the use of the variable in the expression even though there are loads of situations where that doesn't work. Is there any other language that does this nonsense of putting type declaration material on both sides of a variable name? And now we have R-value references, which involve some of the most wildly counterintuitive behavior ever too. OneEightHundred fucked around with this message at 00:15 on Apr 29, 2024 |
# ? Apr 29, 2024 00:06 |
|
Buffulo buffulo buffulo buffulo but for const.
|
# ? Apr 29, 2024 00:13 |
|
TooMuchAbstraction posted:As someone who actually shipped a pretty large game in C# on Unity, "thinking about performance" and micro-managing memory are absolutely not the same thing. You want to know what was murdering my performance in the game? It was poo poo like: Have you tried putting your game on console? I've worked on two ports of Unity games to console, and literally 75% of the engineering effort has been spent on memory management, because GC is murder for a realtime application, and the original devs just don't think about it at all, because "it's managed, you don't have to worry about it"
|
# ? Apr 29, 2024 01:50 |
|
OneEightHundred posted:C pointer syntax is especially unfriendly because the pointer type qualifier character is the same as the dereference operator character
|
# ? Apr 29, 2024 01:50 |
|
more falafel please posted:Have you tried putting your game on console? I've worked on two ports of Unity games to console, and literally 75% of the engineering effort has been spent on memory management, because GC is murder for a realtime application, and the original devs just don't think about it at all, because "it's managed, you don't have to worry about it" There's a fundamental difference between using "memory management" to refer to "Creating and destroying a new array every frame is inefficient" and "You need to keep track of where this pointer goes or you could end up dereferencing to somewhere you're not supposed to be and crash the application in the best case."
|
# ? Apr 29, 2024 02:14 |
|
KillHour posted:There's a fundamental difference between using "memory management" to refer to "Creating and destroying a new array every frame is inefficient" and "You need to keep track of where this pointer goes or you could end up dereferencing to somewhere you're not supposed to be and crash the application in the best case." It takes more work to fight against a managed environment, especially for stuff like string allocations, than it does to just do it correctly. I don't know how to say this any clearer: nearly every memory management pitfall in C/C++ is also a problem in managed environments, and it's more difficult to solve them in a managed environment. But please, make your AAA game in Unity and then try to put it on console, us contractors need work.
|
# ? Apr 29, 2024 05:09 |
|
more falafel please posted:Have you tried putting your game on console? I've worked on two ports of Unity games to console, and literally 75% of the engineering effort has been spent on memory management, because GC is murder for a realtime application, and the original devs just don't think about it at all, because "it's managed, you don't have to worry about it" The game didn't do well enough to justify a console push, unfortunately. That said, part of my optimization pass was getting allocations down to the 1-3kB/frame range (once mission loading is done). Those remaining allocations would be super hard to fix. IIRC they're mostly GetComponent calls that can't realistically be cached, string constructions, and one or two container (list/dict) creations that would require a serious overhaul to avoid. In any event, the porting houses I spoke to didn't think that it would be a problem. They were more worried about the number of cameras I had in my scenes, but most of them are virtual and the ones that do render are rendering at low resolution and not every frame (see earlier comments about radars).
|
# ? Apr 29, 2024 12:01 |
|
TooMuchAbstraction posted:The game didn't do well enough to justify a console push, unfortunately. That said, part of my optimization pass was getting allocations down to the 1-3kB/frame range (once mission loading is done). Those remaining allocations would be super hard to fix. IIRC they're mostly GetComponent calls that can't realistically be cached, string constructions, and one or two container (list/dict) creations that would require a serious overhaul to avoid. In any event, the porting houses I spoke to didn't think that it would be a problem. They were more worried about the number of cameras I had in my scenes, but most of them are virtual and the ones that do render are rendering at low resolution and not every frame (see earlier comments about radars). i have some friends whose games did around an order of magnitude better on switch than on steam. it really depends on the game; its not the same market.
|
# ? Apr 29, 2024 14:12 |
|
I imagine the Switch/mobile does really well because a lot more people these days who can't justify a gaming pc or aren't interested probably have a Switch or phone. I'm surprised how well Honkai Star Rail does on my phone (albeit I have a Samsung S24 Ultra) so it might be one of those things worth considering for indies, esp. in the JRPG or adjacent space.
|
# ? Apr 29, 2024 16:11 |
|
Yeah, the challenge with the Switch port is that I could not convince Nintendo to let me get a Switch devkit. This is my first commercial game, I have no past credits, and their application process doesn't really let me say "hey these other big indies are willing to vouch for me" or "your representatives at GDC thought this game would do well". So I'd have to go through a porting house, which costs a lot of money. And that's hard to justify when the PC release is still $10k in the hole 1 year after release. And to be clear, that's $10k of direct costs, it doesn't count my cost of living for the 3.5 years it took me to make the thing, during which time I did not have a regular job. I do believe that the game could do well on Switch, I just don't see a realistic path to getting it there. As for mobile, that's out largely because the game's control scheme is too complicated. I use every button on an Xbox controller. I could simplify it a lot by making all of your weapons use autofire only, but that'd be a substantially different play experience. Also, we'd be looking at a "premium" game here (ad-supported free-to-play isn't realistic IMO, let alone doing in-app purchases), which I understand tend to underperform on mobile.
|
# ? Apr 29, 2024 16:26 |
|
What about virtual buttons/taking advantage of tap/touch screen controls? Kinda like turning some of the mechanics into something more QTE adjacent? Maybe something like movement gets handed to the AI according to some Battle Plan like your playing Star Trek Bridge Commander or Artemis? Progression could then take advantage of this by unlocking more complex and skillfull AI control/plans/maneuvers? Or firing patterns/timing?
|
# ? Apr 29, 2024 16:35 |
|
You're talking about substantially overhauling how the game plays. Sure, it might be possible, but we're talking months of work to get it dialed in and re-test the missions, it's no longer the game I wanted to make, and it doesn't address the whole "premium mobile game" problem.
|
# ? Apr 29, 2024 16:47 |
|
TooMuchAbstraction posted:You're talking about substantially overhauling how the game plays. Sure, it might be possible, but we're talking months of work to get it dialed in and re-test the missions, it's no longer the game I wanted to make, and it doesn't address the whole "premium mobile game" problem. Yeah that's fair, my suggestions are more like thought experiments then "Have you tried this?" to be clear.
|
# ? Apr 29, 2024 17:46 |
|
TooMuchAbstraction posted:You're talking about substantially overhauling how the game plays. Sure, it might be possible, but we're talking months of work to get it dialed in and re-test the missions, it's no longer the game I wanted to make, and it doesn't address the whole "premium mobile game" problem. If there was a lot of competition I think premium mobile games would definitely struggle, but the market for that kind of thing is so underserved (because of the "common knowledge" that you have to go freemium bullshit to succeed on mobile) that IMO a decent game will probably do okay. Like it won't do "milking whales for life" money like a successful freemium game does, but there've been several games I've played recently on Steam where the game already felt like a mobile game, like the interface design was intended for it, and I would have preferred it on mobile because it was an incredibly long game with bite-sized play-segments (deckbuilder/turn-based-strategy both seem like a good genre for it in general, and many puzzle games too), but they didn't publish that way. This is not disagreeing with you that your particular game wouldn't be worth it, my point is more that those games where the port would be easy because they were made with unity and the interface already feels mobile would probably be worth making the *small* effort to port to mobile, and I think the "you can't do premium-on-mobile" myth is overblown, probably having evolved like "the real big money is in exploitative freemium" -> "it is not worth it to us, some dickheads, as a business to make things that aren't exploitative freemium" -> "everyone knows premium can't make money". But yeah, making a big effort and ruining an ill-suited game obviously is probably not worth it.
|
# ? Apr 30, 2024 00:24 |
|
roomforthetuna posted:I tend to think that a premium mobile game isn't as doomed as people think - it's more that when someone makes a regular lovely mobile game and tries to premium it, *that's* a flop. But Slay the Spire, for example, I believe did well on mobile, without trying to change the whole thing into a freemium piece of crap. premium mobile games vastly underperform f2p in revenue. which is not to say thay they cant do well or be profitable. it more says how completely mental the f2p max spend is.
|
# ? Apr 30, 2024 02:43 |
|
I genuinely can't imagine how anyone actually plays mobile games. My wife has some random match three style game she likes and it's 2 minutes of play time with 1 minute of ads for other mobile games. Just endless pin pulling and knot untangling bullshit. If the developers are getting paid hey no fault to them, get that paycheck. But it blows my mind that people tolerate that poo poo.
|
# ? Apr 30, 2024 03:24 |
There are a lot of freemium mobile games that aren't like that. Take a look at Fire Emblem: Heroes, which is a very content rich yet free game, with no ads, but can still rake in truckloads from whales that are willing to spend to get their perfect anime waifus.
|
|
# ? Apr 30, 2024 03:41 |
|
gacha delenda est
|
# ? Apr 30, 2024 03:46 |
|
I bought Zookeeper DX for 70p in 2011 and it remains the only game on my phone. Monument Valley was good too in fairness.
|
# ? Apr 30, 2024 12:53 |
|
I am designing my next game to be mobile-capable, mind you. It's a roguelike puzzle game, or will be when it's done. I'm not pinning my existence on it doing well on mobile, but I do think it's worth attempting.
|
# ? Apr 30, 2024 13:23 |
|
TooMuchAbstraction posted:I am designing my next game to be mobile-capable, mind you. It's a roguelike puzzle game, or will be when it's done. I'm not pinning my existence on it doing well on mobile, but I do think it's worth attempting.
|
# ? Apr 30, 2024 13:32 |
|
TooMuchAbstraction posted:I am designing my next game to be mobile-capable, mind you. It's a roguelike puzzle game, or will be when it's done. I'm not pinning my existence on it doing well on mobile, but I do think it's worth attempting. Noice, can't wait to come across your updates/WIP!
|
# ? Apr 30, 2024 14:39 |
|
roomforthetuna posted:That's definitely a genre I would buy one of on mobile. Though roguelike puzzle game is a bit of a weird thing to say these days now that Roguelike more often means "semipermadeath and procedural generation" than "moving turn-based on a grid". Are you aiming more for Deadly Rooms of Death or Desktop Dungeons? It started out as "Puzzle Quest but you can play it in under an hour" and has gradually morphed into "small tactical combat where you spend turns on match-3 to charge your spells". So the "puzzle" is that it uses puzzle game match-3 mechanics, but there's also a tactical grid for combat purposes. It's not a puzzle game in the sense of sudoku or even Hoplite, where there's a "correct" way to solve each fight.
|
# ? Apr 30, 2024 18:35 |
|
TooMuchAbstraction posted:It started out as "Puzzle Quest but you can play it in under an hour" and has gradually morphed into "small tactical combat where you spend turns on match-3 to charge your spells". So the "puzzle" is that it uses puzzle game match-3 mechanics, but there's also a tactical grid for combat purposes. It's not a puzzle game in the sense of sudoku or even Hoplite, where there's a "correct" way to solve each fight.
|
# ? May 1, 2024 02:28 |
|
roomforthetuna posted:Puzzle Quest genre is always a decent core. Is "can play in under an hour" like you play a whole run and that's it you start another, or is it like "you can do a round in under an hour and it unlocks more stuff and more difficulty levels so you keep advancing the overall 'story'", Slay the Spire style? It'd be "you start from the beginning and play through to the 'final boss' or until you die, then get some story beats and maybe some metaprogression, and can start a new run if you want." Standard "modern roguelike" structure, in other words. The funny thing about Puzzle Quest in particular is that I replayed it before starting work, and while it's fun, holy poo poo is it also flawed. Basically the only things you do that have really positive brainfeels are when you cast your big spells or luck into a big chain. But: - Casting big spells requires lots of mana (generally 3-5 matches' worth at minimum), which means lots of time spent making small and/or pointless moves - Because the enemy also uses the board to make their moves, you sometimes set them up for a big chain, which feels terrible - Oftentimes your selection of moves is greatly limited because almost all of the options on the board have been used up - If the board runs out of moves entirely, the board reset also drains everyones' mana reserves back to zero, which feels terrible - Enemy spell resistance is just a bad mechanic ("Oh, you cast a spell? No, you didn't, and also you lost your mana, and your turn") So I got rid of the "shared puzzle board" system, changed how the player interacts with it (Instead of Bejeweled-style "swap two tokens", you can make any number of swaps starting with a particular token, and when you put that token down, the matches happen), and added the tactical board so that you have to consider positioning and spell AoEs. Here's a video of the prototype in action: https://i.imgur.com/hLY1Rx8.mp4 If you don't like your board state, you can simply move, because the board is "overlaid" on the tactical space. Moving can also sometimes make matches happen, which earns you "free" mana. You have a short-ranged teleport that doesn't cost anything but has a cooldown. In exchange, you have to deal with far, far more enemies. And while they're predictable, that doesn't mean it's necessarily easy to avoid their attacks. Not that I'm playing optimally here.
|
# ? May 1, 2024 12:02 |
|
TooMuchAbstraction posted:It'd be "you start from the beginning and play through to the 'final boss' or until you die, then get some story beats and maybe some metaprogression, and can start a new run if you want." Standard "modern roguelike" structure, in other words. puzzle + dragons mechanic is good
|
# ? May 1, 2024 13:59 |
|
posting this here in case anyone's interested https://twitter.com/WistfulHopes/status/1786373045470613673?t=zkDI7KSUKqj9AcXI4i9BWQ&s=19
|
# ? May 3, 2024 14:23 |
|
Holy molly this was frustrating, apparently your Pawn blueprint object/actor when spawned in the world will get "bumped" from the PlayerStart actor position you set, IF it overlaps some sort of other actor with some sort of collision enabled, EVEN WHEN IT IS EXPLICITLY TOLD TO IGNORE COLLISION ON SPAWN. So my Start despite being set to 0,0,100; would end up spawning at 0,0,0! Until I just went into the collision presets and turned it all off. God I hate Unreal sometimes, and specifically hate the way its mainly meant for certain kinds of game genres and workflows and as a result has all of this extra fluff that just gets in my way.
|
# ? May 3, 2024 19:18 |
|
Raenir Salazar posted:God I hate Unreal sometimes, and specifically hate the way its mainly meant for certain kinds of game genres and workflows and as a result has all of this extra fluff that just gets in my way. I mean maybe Unreal just isn't for you? You're Sideshow Bob stepping on a million rakes, you can either learn where all Unreal's rakes are or you can go to another engine (which still has rakes, but they're in different places). Raenir Salazar posted:EVEN WHEN IT IS EXPLICITLY TOLD TO IGNORE COLLISION ON SPAWN. Intended behaviour - this doesn't mean "spawn my Pawn and let it coexist peacefully inside this cube", it means "if there would be a collision once spawned, spawn anyway". Then physics takes over and solves the collision.
|
# ? May 4, 2024 01:59 |
|
jizzy sillage posted:I mean maybe Unreal just isn't for you? You're Sideshow Bob stepping on a million rakes, you can either learn where all Unreal's rakes are or you can go to another engine (which still has rakes, but they're in different places). I have said that this is my day job? I don't think I can go to my manager and suggest switching engines. And my personal projects already use Unity3D, and both have their issues. But even if it weren't the case I don't believe this would still be productive or helpful thing to say; frustrations are a normal part of using a proprietary tool, and people don't always have the choice of just switching an entire game project to another engine which will certainly have its own quirks and rakes to step on; just having complaints doesn't make it "not for you", sometimes people just want to vent at wasted time over a problem that ended up being trivial and wish it would've been clearer ahead of time. And the fact is there are legitimate criticisms people have of Epic/Unreal and its approaches to its architecture and documentation, and certain there will be criticisms of other engines and their own issues.
|
# ? May 4, 2024 03:05 |
|
I ended up having to write a new node system completely from scratch. Partly because the old one was hacked together to work during runtime and too tightly coupled to the old way I was processing the graph, but mostly because the Unity node editor is under the reference-only license, so I can't actually ship anything with it. Right now, I only have loading graphs from the serialized file and moving nodes around working - you can't actually edit the graph or save it out in any meaningful way. But I'm still happy I got this far because it really sucks to pour a bunch of time into framework code you aren't even interested in but can't progress without. Edit: The rendering code supports connecting ports with different types together. I haven't implemented any situations where it would make sense to do so, but I can force it to happen to show what it would look like. KillHour fucked around with this message at 03:45 on May 4, 2024 |
# ? May 4, 2024 03:40 |
|
KillHour posted:I ended up having to write a new node system completely from scratch. Partly because the old one was hacked together to work during runtime and too tightly coupled to the old way I was processing the graph, but mostly because the Unity node editor is under the reference-only license, so I can't actually ship anything with it. Looks rad, congrats!
|
# ? May 4, 2024 04:45 |
|
Raenir Salazar posted:I have said that this is my day job? I don't think I can go to my manager and suggest switching engines. Though I do also kind of appreciate "maybe the engine is not for you", not in that particular context but just in general because I have come to the conclusion that no engine is for me. I really hate all the rakes, and I find that doing stuff on the bare metal is always so easy by comparison to figure out what's wrong and fix it. My personal project at the moment is a web based game project, which I have redone several times because I keep being fooled into thinking some framework or tooling will be better, and I'm now on the third time migrating back to "actually just bare typescript is better". Flutter's webrtc library was buggy as gently caress and its supposed cross-platform widgets also weren't actually consistent. React is the absolute worst thing ever and I have no idea why anyone would use it (I didn't do that for my personal project I did it for a work thing, and what the gently caress the APIs apparently change completely with every major version so searching for "how to" documentation has a 70% chance of referencing functions that no longer exist, or don't exist yet, depending what version you picked). I thought Svelte was good, it's much closer to my philosophy of things, but it turned out when I tried to use viewTransitions the way Svelte works actively gets in the way of that working properly. There's probably a workaround, but it pisses me off so much to have to do workarounds for things that shouldn't need it, so I migrated back to naked typescript, which took me a few days. So now I'm on just typescript and custom elements and it's *so easy*. It was actually useful to have tried Svelte because I learned a bunch of more modern html capabilities that I wasn't previously aware of (custom elements and templates, and structuring things through custom elements makes overall organization much easier than my previous iteration), but now that I know about those things, using them is much easier without the framework. To be fair, there is a little bit more repetitive boilerplate doing it manually versus Svelte. But calling back to the previous rant, React is somehow more boilerplate than writing everything yourself, and then injects a loving giant library dependency to download too. I guess React Native might be a thing that could potentially make it worth using for some people? I suppose I don't totally hate Godot, especially now that it has a low-power mode such that it's properly viable for making a mobile game that doesn't eat the battery. Apparently it even has webrtc libraries. But at this point I'm not migrating to another frameworky tool only to get burned again.
|
# ? May 4, 2024 05:42 |
|
|
# ? May 4, 2024 11:30 |
|
Raenir Salazar posted:But even if it weren't the case I don't believe this would still be productive or helpful thing to say. Okay yeah, my bad, I forgot that this is for your job. I did mean this as "no matter where you look, rakes everywhere", but I can understand wanting to vent about something without being criticised for it; I'm sorry.
|
# ? May 4, 2024 06:45 |