I’m going to add my perspective here as they seem to all be ganging up on you Simon.
He is right. The game has changed. We can now refactor using an agent and have it done by morning. The cost of architectural mistakes is minimal and if it gets out of hand, you refactor and take a nap anyway.
What’s interesting is now it’s about intent. The prompts and specs you write, the documents you keep that outline your intended solution, and you let the agent go. You do research. Agent does code. I’ve seen this at scale.
I want events to occur while I'm down in the dungeon. Maybe a neighboring village got attacked and now it's in ashes and down trodden. Maybe a castle is being besieged. I want a "play your own adventure" where the story just kind of happens. No main plot other than maybe certain events happening at a specific time. Games today are too linear. Even "open world" games. They zone it out so there's a progression, go to this area to xp, then go to this area, then this area.
For once I would like a Skyrim experience but where you're given free roam to unfold the story as you see fit. Crafting your unique story in the process.
I also don't think games should cater to safety or make towns "safe" from other players. I think the games should allow crime but also have punishment for it if caught by the NPC police or Players. Some of my best memories are from a public execution of a murderer on Ultima Online back in 1999. We had like 100 people gather (on a server that supported maybe 2000 tops).
Check out the games by Jeff Vogel [1] of Spiderweb Software [2]. His games may not be pretty to look at but they feature worlds that are full of life and rich with detail. Monsters attack and damage towns, destroy buildings, leave citizens homeless and shopkeepers jobless, and may eventually wipe towns off the map.
Meanwhile, the world is also full of outside areas to explore and dungeons to plunder. However, no town is safe. Spend too much time delving dungeons and you may return to a smoking ruin instead of a town. Or you may arrive in the middle of a monster attack on the town and get to participate in its defence!
Of course, the townsfolk aren't helpless either. They have town guards, soldiers, and even imperial wizards who arrive to help out. The wizards even create magical barriers to patch up the holes in the town wall!
As for how the games play, they're very reminiscent of old school Ultima games such as Ultima IV: Quest of the Avatar. As a fan of UO, you may really enjoy some Spiderweb Software games. No multiplayer though, these are strictly single-player turn-based affairs.
I have commented on Todd's failure to deliver on such promises in skyrim before.
But this is definitely where generative ai will be a boon to games, once it's stabilised enough to trust.
I'd love exactly the same; the game should still tell a story or have a point (unless it's a complete sandbox), so key plot points can be included but otherwise it's a simulation and the player can do things with their agency, but so can the npcs.
Would be cool to come back to a village, and now the leader has changed because the previous one insulted someone at the tavern, who killed the leader in a fit of rage. The village then chose a replacement leader, the assailant was publicly executed for their crimes. But the villagers decided this was too brutal a punishment so they removed the leader, who resisted but got driven out of town. The ousted leader wants control of the village back so they've been planning to enter with a crew of mercenaries.
When you get to the village you get given a quest to go take care of the problem, based on the hearsay. Hell, when you get to whatever hideout they're holed up in maybe the npc has even decided to just give up and move somewhere else.
So many opportunities for awesome narratives. I've done experiments with this stuff in text, but not in engine with an actual game.
Shadow of Mordor (and the sequel) had something called the "Nemesis" system where some of the Orcs you kill (and the ones who kill you) survive off screen and get stronger and come back with scars and buffs and new nicknames. It didn't do the village/town stuff you are talking about. They talked about doing it in future games but never did.
I haven’t played it, but my understanding is that Kingdom Come Deliverance 2 works this way. Meet a person who tells you something’s happening tonight, and you better get there tonight if you want to see/do it. Maybe someone who’s played the game can chime in.
It’s a great game, much like its predecessor. However, it’s still linear in most ways. You miss out on those small side quests but that was true of the first game too.
I’d love for a game to set the stage like: “Bad person/thing does bad stuff to good town” like intro, then it’s just you in a field by a small village where you live that is now in ashes due to bad event that happened while you weren’t there. Game On…
From there, don’t give a single hint until a player did something that could actually do something if they do it right.
An example would be early days of Minecraft before notch sold his soul, you wouldn’t have a guide or achievements or anything to help you. There were no wikis, only a small forum of people asking why are people punching trees?
Games need to feel more exploratory without giving everyone GPS direct to the next XP machine.
You might want to check out "Depth of Peril".
kind of a cluncky diablo 1 like game. I liked it because of that dynamism.
Graphics and gameplay are now dated, but if you talk fondly about ultima, you might enjoy it.
Din's Curse and Din's Legacy (by the same developer as Depths of Peril) are other entries worth a look. They have a dynamic evolving world as you go about your business:
https://www.soldak.com/Dins-Curse/Overview.html
The Government can't put the genie back in the bottle. UBI won't work because economics. Taxes fund the government but what use is a government that cannot govern? What happens when AI is used as employees at all these companies? Is everyone a CEO now? Where does the value come from?
Once you peel back the onion, all you get is tears.
UBI can cause recipients to survive well. Paid for by taxpayers on a very very small scale.
There is no model for funding UBI on a large scale. From what?
Henry Cavill would have words with you. There are some extremely die-hard fans in the U.K. just like there are die hard fans of Star Wars here in the US.
Why aren’t you mocking your dependencies? I should be able to run a microservice without 3rd party and it still work. If it doesn’t, it’s a distributed monolith.
For databases, if you can’t see a connection string in env vars, use sqlite://:memory and make a test db like you do for unit testing.
For redis, provide a mock impl that gets/sets keys in a hash table or dictionary.
What higher fidelity do you get with a real postgres over a SQLite in memory or even pglite or whatever.
The point isn’t you shouldn’t have a database, the point is what are your concerns? For me and my teams, we care about our code, the performance of that code, the correctness of that code, and don’t test against a live database so that we understand the separation of concerns between our app and its storage. We expect a database to be there. We expect it to have such and such schema. We don’t expect it to live at a certain address or a certain configuration as that is the databases concern.
We tell our app at startup where that address is or we don’t. The app should only care whether we did or not, if not, it will need to make one to work.
This is the same logic with unit testing. If you’re unit testing against a real database, that isn’t unit testing, that’s an integration test.
If you do care about the speed of your database and how your app scales, you aren’t going to be doing that on your local machine.
There is your idealization, and there is reality. Mocks are to be avoided. I reserve them for external dependencies.
> What higher fidelity do you get with a real postgres over a SQLite in memory or even pglite or whatever
You want them to have the same syntax and features, to the extent that you use them, or you'll have one code path for testing and another for production. For example, sqlite does not support ARRAYs or UUIDs natively, so you'll have to write a separate implementation. This is a vector for bugs.
You're right that sqlite doesn't support array's or uuid's natively. SQLite was only a suggestion on how one might go about separating your database engine concerns with your data layer concerns.
If you fail to understand why this separation is important, you'll fail to reason with why you'd do it in the first place so continue building apps like it's 1999, tightly coupled and you need the whole stack to run your thing. God forbid you expand beyond just 1 team.
The alternative is the mouse wheel and keybinds. Flight Simulators got this right. Roll up on the wheel to increase the value, roll back on the wheel to decrease the value. Left click to push, right click to pop (or context menu, left click to push it again to turn off).
In fact, if it was all MIDI controlled, it's just a matter of mapping the mouse scroll wheel to a midi channel.
I don't really see how that would be precise enough, the mouse wheel has a DPI of like 10 vs 400-800 for a mouse. A mouse wheel has like 25 notches in a full rotation and even MIDI CC values go from 0-127, that's 5 full rotations, that doesn't sound practical as it would be far too slow. And many parameters require much more precise control than 127 steps.
I don't play flight sims but I imagine most flight surfaces require small adjustments and the effect of those adjustments on the aircraft is naturally smoothed out by the dynamics of the plane (you're adjusting an acceleration).
I imagine the scroll wheel is not suitable for dogfighting.
I would assume the better programs implement some velocity control, turning it quickly will cause it to increment in larger steps, turning it slowly will increment single steps. This is how I have done it in the past when I have used the scroll ring on my trackball in PureData.
I would also assume there are detent free mousewheels with a far greater number of steps, there used to be. The scroll ring on my trackball is detent free and quite fine but it is also ~2" in diameter, considerably larger than the wheel on any mouse.
I only use logic now but used FLStudio in the past. I’m by no means an expert or anything, just an audiophile ex-musician turned software guy and find that it’s similar between flight simulator and logic. With FLStudio I did everything with midi controllers so I never used the mouse that way.
Oh man, that first paragraph. “Such problems don’t exist…” what a gaslighting response to a publication submittal. The least they could do is ask where this problem emerges and you can hand wavy your answer without revealing business IP.
Also, we, as an industry of software engineers, need to re-examine these hard defaults we thought could never be achieved. Such as the .text limits.
What I understood is that the author is hoarding them for the future - not because there is any need for it right now. You could argue that it's too much RAM even at end of server's useful lifetime. But who knows? What if he end up running a few dozen services on it at that time?
Honestly, the problem that they're preparing for, isn't any of our fault. This is inflicted upon the world by some very twisted business models, incentives and priorities. It's hard to predict how it will all end up. Perhaps the market will be flooded with tons of RAM that will have to be transplanted onto proper DIMM modules. Or perhaps we might be scavenging the e-waste junkyard for every last RAM IC we can find - in which case, his choice would be correct.
When we were space constrained, we built smaller. When we were block constrained, we build ssd’s. When we were graphics constrained, we built gpu’s. Now that we’re memory constrained, we’ll see some advancements in this area as well. 1TB ram chips are right around the corner.
The problem is the economic incentive. In all the prior cases you mentioned, their commercial interests aligned with our own - at least in part. This time however, I'm worried that they aren't concerned about burning down the world economy, at least in part, since their bottom line won't suffer for it.
For example, Micron didn't think about any alternatives for the consumer retail market. They just dumped it entirely.
The economics behind this isn't rocket science. Micron left the retail market because it is more profitable for them to supply exclusively to the hyperscalers. Not because they can't supply the retail market or because it wasn't profitable. What makes you think that any other manufacturer is going to take a different decision? Why would they choose a market that offers less than the biggest bidder?
Someone will fill the void. Another company will sell ram to the retail market if the big players won't. More manufacturing abilities will open up. It's not like ram is becoming extinct. Someone will tool up and produce them for the retail market just as other brands have done in other sectors when the market shows a void.
Last I checked I could still buy Crucial RAM chips. In time, maybe it's Kingston. Or maybe Gigastone.
Yup, and if you need something powerful by today’s standards you can grab a mini pc like this (1) one. Install arch or whatever, and go.
Install k8s. Run a cluster of 16 nodes on this one little machine.
He is right. The game has changed. We can now refactor using an agent and have it done by morning. The cost of architectural mistakes is minimal and if it gets out of hand, you refactor and take a nap anyway.
What’s interesting is now it’s about intent. The prompts and specs you write, the documents you keep that outline your intended solution, and you let the agent go. You do research. Agent does code. I’ve seen this at scale.
reply