Live data from Hacker News

Accidentally making a language, for an engine, for a game

verdagon.dev

181–190 of 232 posts

Re: Accidentally making a language, for an engine, for a game

#181

Earlier quoted context omitted.

Sure, and then deal with leaky abstractions and fighting the engine wherever its abstractions don't give you what you want. > adding a level editor, asset loading, character animations, scalable UI, collision detection, networking, state management, serialization,gamepad support, multiplatform support, store/platform integrations None of these are nearly as hard as cult-of-always-use-an-engine makes them out to be. A…

> None of these are nearly as hard as cult-of-always-use-an-engine makes them out to be. I never said they were _hard_, but they take time. Time that can be spent on your game. > You don't have to wait for Unity to support a new platform, or fix a bug that's blocking you, or implement a feature you want, you just do that yourself. Every system has bugs. You're always going to have to make tradeoffs when building proj…

> Blow has shipped two games in 20 years

You say that like it is a bad thing. By (nearly) all accounts Braid and The Witness are lovingly and expertly crafted, unconventional, and brilliant games. He's not making the annual Madden or Call of Battlefield here.

> Casey Muratori, who started handmade hero almost 8 years ago, and is nowhere even close to a game

Be fair to Casey, Handmade Hero is primarily an educational project and he only devotes a few hours to it each week. Though admittedly he has allowed the scope to creep quite a bit from the original goals.

> The post we're commenting on here is entitled "Accidentally Making a Language, for an Engine, for a Game". If your take away from those things is that "you'll spend more time fighting the engine" then I don't really know what else to say.

My point is more that I'm kind of sick of people being so down on the concept of building your own engine even for relatively simple 2D games. Yes, I agree that it takes time, but so does learning the ins and outs of an existing engine and the time you invest in the latter nets you less generalizable skills than the former and leaves you with less control over the end product. It is a tradeoff, and like all tradeoffs there are good reasons to go one way or another.

Re: Accidentally making a language, for an engine, for a game

#182

I don't know what it is about game development that really brings out the yak shaving in people. One time, about 8 years ago, I backed a game called Nowhere[1] by a very talented programmer. The original premise was an alien life simulator. Well, it's been eight years, and development is still going strong! The developer is currently working on the String implementation for the programming language he invented[2], wh…

Game development methodology has fascinated me recently. With the Battlefield 2042 debacle, its interesting to compare it to what I know (financial trading platforms). With trading platforms, they last for years, decades maybe. They're created with some ideas around how to manage performance and to support evolving requirements. Developers know this thing is going to be around for a long time, so its treated as such.…

The days where AAA games dumped the engine between releases are long gone (like Playstation 1 long gone).

For franchise games there will be incremental improvements to engine systems; some to support new gameplay features, some to help with development tooling/pain-points, and some to improve visual fidelity. The trick is choosing the correct number of upgrades/refactors that fit the release schedule while remaining relevant and not dooming your next franchise release with insurmountable feature debt.

In my experience the biggest engine changes come with new hardware platform support, typically a console generation jump. More power requires a toolchain that can handle more complex assets (and more of them), new graphical features and expectations, different optimizations, new API, different storage types or capabilities etc. Bigger franchises may use a new console generation as an opportunity to gut an existing engine and rework to the strengths of the new hardware generation (and remove the support for older hardware, such as removing 32bit pointer support, DirectX9, Windows7 etc).

Historically where game engines get in trouble is when a codebase is written to one franchise and then forced on to a team making a fundamentally different game with fundamentally different requirements (open world vs compact maps, physics heavy vs platformer, single player vs MMO). At the executive level it makes total sense, they spent x million$ on a game engine and are told by everyone how great an investment it was... why not spin up a new game using that amazing (and paid for) technology?

The flip-side has also sunk numerous game engine efforts, which are often buried without ever becoming public. Doing everything all at once is impossible, you can either do many things generically but with restricted performance and capabilities. Or you can do 'everything' required by a specific game and slowly introduce features that support other games and make things more generic.

Re: Accidentally making a language, for an engine, for a game

#183

Earlier quoted context omitted.

For me, at least, I like to write my own engines to get the end-user experience I want. Every game engine comes with a million little decisions about how games should work by default, and writing my own engine lets me make those decisions for myself. In the same way, every React app eventually starts to look and act like the Reddit redesign, but many web developers consider that more of a benefit than a drawback.

> every React app eventually starts to look and act like the Reddit redesign, Not every unreal engine game starts to look and behave like gears of war. If you drop a bunch of asset packs from the store it's going to look like every other asset flip out there, but so will your game engine if you use the same assets. > , I like to write my own engines to get the end-user experience I want. My day job is working in unre…

I don't think anything is impossible in big commercial engines. I mean, IIRC Unreal Engine gives you a Visual Studio project containing all of the engine's C++ code, so theoretically if you use Unreal your game could be any legal C++ program.

But as a practical matter, using Unreal turns every decision you make from "what behavior do I want" into "what behavior do I want and is it worth fighting Unreal on this", so Unreal games are a lot more Unreal-y than they otherwise would be. (This is especially true on PC, where things like "how are the game assets organized on disk" are visible to end-users.)

Particularly on the 2D hobbyist stuff that I do, writing my own engine is less work than becoming an expert in an engine I don't really like so I can change most of it.

Re: Accidentally making a language, for an engine, for a game

#184

I don't know what it is about game development that really brings out the yak shaving in people. One time, about 8 years ago, I backed a game called Nowhere[1] by a very talented programmer. The original premise was an alien life simulator. Well, it's been eight years, and development is still going strong! The developer is currently working on the String implementation for the programming language he invented[2], wh…

Truth is developing the engines is a lot more fun than developing finished products. Game engines are like virtual machines purpose built for interactive audiovisual program execution. The games themselves aren't that interesting. Operating systems are fun, the applications running on them are boring. Browsers are fun, the web sites are boring.

Re: Accidentally making a language, for an engine, for a game

#185

Earlier quoted context omitted.

> every React app eventually starts to look and act like the Reddit redesign, Not every unreal engine game starts to look and behave like gears of war. If you drop a bunch of asset packs from the store it's going to look like every other asset flip out there, but so will your game engine if you use the same assets. > , I like to write my own engines to get the end-user experience I want. My day job is working in unre…

I don't think anything is impossible in big commercial engines. I mean, IIRC Unreal Engine gives you a Visual Studio project containing all of the engine's C++ code, so theoretically if you use Unreal your game could be any legal C++ program. But as a practical matter, using Unreal turns every decision you make from "what behavior do I want" into "what behavior do I want and is it worth fighting Unreal on this", so U…

> But as a practical matter, using Unreal turns every decision you make from "what behavior do I want" into "what behavior do I want and is it worth fighting Unreal on this",

I don't agree with this at all - Unreal gives you defaults that can be easily replaced. The decision is "do I use what unreal gives me or do I write my own" for most systems, compared to "do I write my own or do without" if you're starting from scratch.

> so theoretically if you use Unreal your game could be any legal C++ program.

That's a bit reductionist, and not really fair. All of the "behavioural" parts of the engine are exposed in very customisable ways. As an example if you're not happy with the collision detection behaviour/triggers, they are designed to be modified and changed around. If you're not happy with character movement, you provide your own character movement definitions.

> (This is especially true on PC, where things like "how are the game assets organized on disk" are visible to end-users

If your definition of end user experience of a game is file layout on disk, then so be it. Knowing that something is made with unreal engine doesn't immediately turn it into another copycat unreal engine project. Besides looking at the disk layout, you could also just see the splash screen that you're legally required to use when licensing the engine. Also, you have source code to the engine, to the automation process, and the pak tools. If you want a different layout on disk, go ahead and change it.

> Particularly on the 2D hobbyist stuff that I do

If you want to do hobbyist engine development work, _that's_ a great reason to write game engines. Not "liking" an engine and wanting things done differently isn't the same as wanting something that's incompatible with a game engine's design and architecture. If you want a lock step multiplayer game with rollback then sure, you're probably not going to find it. But if you want "less floaty" character physics, or a different camera perspective, a different startup flow/implemention, you can _definitely make that within the bounds of Unity and Unreal

> writing my own engine is less work than becoming an expert in an engine I don't really like so I can change most of it.

You definitely don't _need_ to be an expert in an engine to use it, any more than you need to be an expert in python to start writing some scripts. Also, how can you know how much of the engine you need to throw out before you actually know how to use it?

Re: Accidentally making a language, for an engine, for a game

#186
post #177

Earlier quoted context omitted.

Nothing wrong with having a nice yak wool coat

Hey, all I want to do is shave yaks, and now you want a coat? That will involve sorting, carding/combing, spinning, weaving/knitting, and all sorts of other stuff that doesn’t involve razor blades and yaks.

I never thought about the implication that shaving a yak is the most fun thing you want to do all day. It's so great you would rather shun all your other responsibilities to shave some yaks. I guess I'd better try it.

Re: Accidentally making a language, for an engine, for a game

#187
post #177

Earlier quoted context omitted.

Nothing wrong with having a nice yak wool coat

Hey, all I want to do is shave yaks, and now you want a coat? That will involve sorting, carding/combing, spinning, weaving/knitting, and all sorts of other stuff that doesn’t involve razor blades and yaks.

Sometimes all you have to do is shave the yak and give the wool away, and a nice yak-wool coat will come back to you. :)

Which is to say: sometimes, if you build a low-level library/infrastructure service and release it, someone else will take advantage of it to write the high-level thing you were originally aiming to create.

I'm speaking from experience — my company's DBaaS is built on the premise of just building a really good database domain-model to hold a certain type of large, public-available datasets, for efficient, flexible querying of them; loading those datasets into it; and then giving people access to it (through SQL or various use-case-shaped APIs.) It's a really thorough yak-shave of the DB+ETL layer of what was originally planned to be a higher-level B2C product.

But it turns out I have a pretty unique view of what should be considered "fun", because my yak-shave was everyone else's schlep. Everyone turned out to be dying to get their hands on this thing, because they wanted to spend all their time on a product, rather than getting good data to feed their product. Once we realized that, we stopped trying to build a B2C product at all, and just started selling the yak wool directly.

Re: Accidentally making a language, for an engine, for a game

#188
post #150

Earlier quoted context omitted.

>I don't know what it is about game development that really brings out the yak shaving in people. People get into game development because they want to have fun programming. Getting projects done involves a lot of things that are not fun, so it usually goes nowhere because the incentives are misaligned. I've noticed this in many hobby professions - eg. hobby woodworkers spending more time on creating workbenches/tool…

> People get into game development because they want to have fun programming Totally agree. I think the only real issue here is expectations. If the project mentioned was crowdfunded specifically and only with the goal to deliver a game, then I think people would be right to be a little bit irked that the developer is instead tinkering with their own programming language rather than the game, after eight full years.…

I don't know about other backers, but I'm happy with how this has turned out myself. I think backing anything comes with a level of risk, and the fact that they're working on something publicly, eight years later, is more than a lot of campaigns manage.

Re: Accidentally making a language, for an engine, for a game

#189

I don't know what it is about game development that really brings out the yak shaving in people. One time, about 8 years ago, I backed a game called Nowhere[1] by a very talented programmer. The original premise was an alien life simulator. Well, it's been eight years, and development is still going strong! The developer is currently working on the String implementation for the programming language he invented[2], wh…

Wait, that's the game by Leonard Ritter, aka paniq! I loved his (demoscene) demo Masagin[1] way back when, and have the SVGs of the geometric shapes somewhere, with a vague idea of bleaching them onto t-shirts (speaking of old projects that never come to fruition...) Frankly, I can't say I'm surprised that's where he's at with Nowhere. Well, I'm glad he's having fun. [1] https://www.pouet.net/prod.php?which=50131

I'm a huge fan of masagin - it was one of the first demos I saw that really spoke to me about the expressive power of graphical programming.

I'm glad he's having fun, too :)

Re: Accidentally making a language, for an engine, for a game

#190

Earlier quoted context omitted.

I would hazard that game engines are an order of magnitude more complex than web frameworks. A better analogy may be game engine vs db engine or web framework+runtime(ex: Erlang/Elixir+Phoenix). If you have performance issues with a web framework you can scale it horizontally to a degree(depending on downstream dependencies like your DB). Games are built to run against resource constrained hardware and so they optimi…

I’d go an order of complexity above again. The real comparison is to the browser, particularly for general purpose engines like Unreal and Unity. I’d hazard most game engine teams are bigger than most browser teams.

I’d go an order of complexity above again.

Not when you start. While UE5 is no doubt orders of magnitude more complex than any web framework, no one sets out to write UE5. In fact most people start writing their own game engine because they want something a lot less complex and more tailored than what is available.

If you have the right background knocking out a very simple game engine isn't hard. Many people do it as part of a university course. The problem is that your 'simple' game engine ends up being not that simple very quickly once you start adding features.

Post reply on HN