Someone ran a poll on X, asking players if they would prefer "all games on Steam made by humans" or "all games on Epic made by AI".
139,568 people voted, with just 1.6% voting for AI and Epic.
Faith in humanity restored!
Teaser why I wanted to get the time to show the initial loading screen down as far as possible!
My game is set in a world of magic, so the portal you see takes you right into the game (not shown in the video).
All assets (~2.5GB) are loaded during that screen.
#gamedev#indiedev
Live++ 2.11.5 out now!
liveplusplus.tech/releases.html
Added support for /libpath, fixed "main-file-name" for Clang and fixed a nasty bug that could result in the dreaded "Patch was loaded outside 2GB range" error.
Thanks to everybody for reporting these issues.
Enjoy!
#cpp
Radical Pie handles equations brilliantly but still needs Word for a document's main text. That comes with annoying problems that will never be fixed. For years, I've dreamt of writing the whole word processor with the same level of craftmanship, and now that is going to happen.
Had one more yak to shave.
I don't believe it can be made any faster than that.
The first loading screen of the game comes up in less than 8ms now. It feels truly instant when starting the game from Windows Explorer.
#ScreenshotSaturday#indiedev
It's happening, Enshrouded 1.0 just released on PC and PlayStation 5! 🎉 We can't wait to see how much you all enjoy it!
And we've got the perfect thing to tide you over while it downloads. Check out the update highlights below! 👇️
www.youtube.com/watch?v=3McX...
Absolutely jawdropping to see Epic, once renowned for their engine prowess, literally opening a PR announcement with "Programming is hard. So, instead of doing that, we vibe coded a new Epic Games Launcher"
Especially given the dearth of features in the EGS compared to Steam.
absolutely disgusting to shamelessly gloat about vibecoding your product as you're charging ahead to devalue an entire industry and several art forms with copious amounts of AI confetti hyperslop, depriving real artists and developers of oxygen
"We vibe coded a new Epic Games Launcher" because "programming is hard", announce company we're somehow supposed to see as a serious Steam competitor https://bit.ly/4hMHbi5
So, this happened last week - I received the GCAP Legacy Award! I love the Aussie/NZ Gamedev industry and to be recognised for helping in my own small way was glorious. Thanks IGEA/GCAP for continuing to organise my favourite conference and to my peers for having beers and cheers with me after.
the 2020s are full of grief eh. from genocide to climate emergency to entire professions imploding / at best transforming; and on and on! yet were also in the least empathetic culture i can remember. 'you so cooked bro'. sure, yes, we probably are, can you just, not be such a dick about it?
ive said it before, i'll say it again: make your game/app/thing/toy boot up into *exactly* the state it was in when you last quit, by default. feel free to layer fun features like snapshots/replays on top of this, but start there. you can thank me later.
"AI lets you focus on the higher level ideas!!"
because we all grew up dreaming of becoming managers and CEOs
we all know the real artists at the very highest level are the shareholders, famously full of amazing ideas
Since a dev shared his game concept last month, Steam has been flooded with vibe-coded slop clones.
This is what "democratising creativity" actually looks like. Even with AI, your ideas are worthless as long as they can be plagiarised at scale. Gen AI was designed for plagiarism, NOT creativity.
We're stoked to introduce the 'No Gen AI' seal for indie games!
Indie devs can use it on their game's store page to assure potential players that their game was made without the use of Generative AI.
You can grab it from the Polygon Treehouse website:-
www.polygon-treehouse.com/no-gen-ai-seal
Absolutely not a good look, OpenAI.
Imagine you're a trillion dollar valued company and can't afford to pay for NYTimes. Instead, it's "ah nice" when you're getting behind their paywall.
Also great to read about the "fair use" argument.
Eye popping. Court just unsealed Summary Judgment motions in New York Times v OpenAI / Microsoft.
Easy to see why the AI companies had so many redactions (pink). Their own people wrote the lede for NYT, the "largest theft of labor in human history"... "more and more substitutive..." /1
Rant time: the fact that std::initializer_list in C++ is a partial language construct with special syntax, a compiler-generated array with special lifetime, yet needs a header and an std::initializer_list to provide a type is BONKERS.
Looks like any other std type, yet it's not.
I did a somewhat deep dive into the recent OpenAI and Anthropic "hacks" for an upcoming interview.
IMO, the AI companies are better off running with the "rogue AI" story because the real story is actually pretty embarrassing.
Like making your Wi-Fi password "wifi" embarrassing. 🧵
A group of 25 Fields Medalists, including myself, have made a joint declaration on Math and AI: mathandai.org . We welcome additional signatories. See also this article in the Economist announcing the declaration: www.economist.com/science-and-...
I rewrote the PVS computation.
It now works in quadrants, making use of the fact that all occluders are the same size and on a grid.
Angles are now sorted using the wedge product, so there's no floating-point math or radix sort anywhere.
This is much faster and bit exact now!
Revisited radix sort today for computing exact region-to-region visibility for a PVS.
The PVS stores occluded cells, so an empty PVS simply does not cull anything. When computing the PVS in the background, you can "see" it working by draw calls going down and perf. going up :).
EA could sell "dormant IPs" like Ultima and Wing Commander after Saudi acquisition, former manager says: "There are plenty of IPs like that at EA that nobody cares about at this moment" www.gamesradar.com/games/rpg/ea...
There's a pattern that keeps coming up and I don't know if it has a name, but I wanted to share:
Nothing fancy really, just a way of shoving arbitrary funcs (including capturing lambdas) into ordinary func pointers without needing any inheritance or allocation.
E.g. ThreadPool:
it does! thankyou for taking the time to walk me through it. it sounds like a sequence of steps id probably cock up, but it hilights how you sort of look at code differently once you can incrementally live modify it. i remember having imgui finally click as 'not just cute' when i saw omar add a ...
introspection of complex state. imgui + hot reload just blew my mind iow :) so yeah... mindset changes once you have these hot reload tools, as you know. cheers!
I was working on something today that made me realise just how profoundly different working with hot-reload for *everything* (assets & all code) is.
I often hear people say "my compile times are short, I don't need it" and I think they're missing the point.
Thread:
Finally, I go into the .hlsl file and add a new member to the constant buffer:
Hit save, hot-reload the shader.
Change the shader to use that member, done.
All of that took me about 2 minutes.
Changed the data layout, saved files in the new layout on disk, added new things to the editor, the backend, and to the shader code.
I can do this all day without ever closing the game.
It's profound, really.
I was working on something today that made me realise just how profoundly different working with hot-reload for *everything* (assets & all code) is.
I often hear people say "my compile times are short, I don't need it" and I think they're missing the point.
Thread:
This is a change in a header file, but Live++ nicely supports that. It recompiles all affected files, I hit save in the editor, the data on disk is now in the new format.
I then add a line to the property editor and save the .cpp, get's reloaded automatically:
Half a second later, the edit field appears live in the editor. I fill in the value that I had in the shader.
Go over to the backend, add a new parameter to the function updating the material constants:
Hit save, hot-reload. The compiler tells me all call sites which I fix.
I was working on something today that made me realise just how profoundly different working with hot-reload for *everything* (assets & all code) is.
I often hear people say "my compile times are short, I don't need it" and I think they're missing the point.
Thread:
I wanted to expose the height scale used by the Parallax Occlusion Mapping shader in the editor for materials today.
First change: add a member to the material struct.
Add the member, serialize it.
Note how I do not have any versioning code in my serialization. Why?
Because I start the game, everything gets serialized into memory with layout A. I change to layout B via hot-reload, save all files in the editor, and it's now layout B on disk.
Trivial, no supporting old stuff.
I was working on something today that made me realise just how profoundly different working with hot-reload for *everything* (assets & all code) is.
I often hear people say "my compile times are short, I don't need it" and I think they're missing the point.
Thread:
For the record:
My full rebuild is <2s.
Loading into the game takes a bit more than one second in a debug build from hitting F5 in Visual Studio.
If you've never experienced what hot-reload brings to the table, you don't know what you're missing out on.
Sometimes you have to profile debug builds, and as always
@superluminal.eu is perfect for that.
My matrix multiplication was using variables on the stack, which caused a lot of stack checks.
Rewrote the code, debug performance went from 23ms to 6ms.
Live++ 2.11.4 out now!
liveplusplus.tech/releases.html
Added full support for network paths, improved sorting of compilands having an "N/A" entry, and fixed an edge case with "external vague" dynamic initializers in static libraries.
Thanks to everybody for reporting issues!
#cpp