9 ms·
Brian Bucklew Porting Caves of Qud from Unity to Godot
- a1o 3y agohttps://nitter.net/unormal/status/1703163364229161236 https://nitter.net/unormal/status/1703163364229161236
- ShamelessC 3y agoDoesn’t load. God damn it Elon. Twitter is so fucking annoying to deal with now.
- consumer451 3y agoThey block some VPN users in the .net TLD, but that’s not the case this time. When this happens, substitute .nl or .cz https://nitter.cz/unormal/status/1703163364229161236 https://nitter.cz/unormal/status/1703163364229161236
- robertlagrant 3y agoIs Nitter from Twitter? I've never heard of it.
- ShamelessC 3y agoSorry, I was complaining about Twitter not Nitter. Twitter isn't involved with Nitter. Nitter crawls twitter in order to function as an (unofficial) mirror for the site. I appreciate the effort although it is not guaranteed to stick around forever given it undermines Twitter's business model. Your confusion is understandable... I was simply replying to a nitter link to vent my frustrations about Twitter as many use the Nitter to get around Twitter's many new limitations since Elon took over.
- robertlagrant 3y agoOh! Gotcha. I tried replacing nitter with Twitter in the URL and it loaded fine. Did it time out for you?
- troupo 3y agoOr the unroll: https://threadreaderapp.com/thread/1703163364229161236.html https://threadreaderapp.com/thread/1703163364229161236.html
- doublepg23 3y agoWow this is super cool, love seeing the play-by-play of this - and in such a reasonable amount of time too!
- georgeecollins 3y agoGodot is much less featured but extremely easy to learn imo.
- monkeydreams 3y ago> Godot is much less featured but extremely easy to learn imo. Also, for 2D, it is sooooo much easier to implement. No messing around with orthographical cameras, no tilemaps appearing with random lines, colours, etc. And 2D performance exceeds Unity's.
- Glyptodon 3y agoDoes Unity have a true 2-D vector graphic engine or system of some kind? That seems like the main thing that doesn't look obvious to me as a total non-expert looking at Godot. (Mostly curious. I don't make games, but I hate the pixel-art 2-D style.)
- Karliss 3y agoUnity has an svg package which has been stuck in experimental state for years like many other unity features. I wouldn't call it true vector graphic engine. It can be configured to either generate bitmap sprite at build time (minor convenience over converting svg to bitmap manually) or it can generate triangle mesh (from what I understand also done at build time). In the second case once you start zooming it doesn't necessarily look very great either. Once you zoom out lines look bad since they are formed by thin strip of triangles which doesn't work too good for few pixel thin lines . And when you zoom in you start to see that its made from triangles instead of round curves since the generated triangle mesh is fixed. With both approaches svg benefits are largely lost compared to true vector graphic rendering engines. I haven't seen any true 2d vector graphic engine suitable for games after flash beside the software made to be alternative flash players. Yes there are a bunch of games that still use that art style but in many cases they might be drawn as vector graphics, but then converted to bitmap for the game engine, maybe with some runtime shaders on top for sharper look. SVG is just way too different from how game graphic APIs works. Just making a non real time SVG renderer is hard enough already. Even programs like Inkscape whose only task is drawing and manipulating are sometimes struggling with it. Open a more complex SVG and zoom in/out move around and you will see as Inkscape tries to keep up updating and caching the rendered image in chunks. It might be possible to do something using browser svg support although I am not how good the performance would be with the kind of dynamic content games need. There are also a couple of UI frameworks which support SVG. For something like that it can be acceptable to use slower but higher quality svg renderer and then caching result. For the most part UI elements are either static or at most move around due to scroll views and zoom rarely changing so caching works very well.
- deleted 3y ago[deleted]
- TazeTSchnitzel 3y agoI think this game uses almost entirely its own engine and Unity is just used as a HAL and porting harness, so this is sort of a best case scenario for ease of porting. There's a surprisingly large number of games like this, though they're not representative of most Unity titles of course.
- steeleduncan 3y agoYes, in some interview he mentioned that Qud at the time was running as if it were a console app inside Unity. I don't know if that is still true after their UI overhaul, but if so it always seemed odd not to port it to MonoGame instead and save paying the fees.
- VectorLock 3y agoCOQ applies a while bunch of stylistic appliques to the "console" look that may not be possible or at least easy in other game engines.
- rootlocus 3y agoThat's commonly implemented with shaders. Support for shaders is guaranteed in virtually any game engine.
- philipov 3y agoIf Unity has some fancy prebuilt shader library he's leveraging to generate the effects, reimplementing that from scratch might be a lot of work.
- jasonjmcghee 3y agoScanlines and vignette are simple to implement and the main stylistic shaders they use. They also use a grayscale one if you trigger a specific situation. There might be others, but again, simple to write. They also use the particles system for candelabras. Could be reproduced in many engines.
- gentleman11 3y agoI don’t have a Twitter account. What’s going on?
- krapp 3y agoBrian Bucklew ported Caves of Qud from Unity to Godot.
- generalpf 3y agoHe didn’t finish, he’s still porting it.
- MrLeap 3y agoSince this post, he got the 500k LoC core of the game running, rendering to the console in godot and responding to input. Astonishing, inspirational work.
- Sponge5 3y agoAstonishing and inspirational is the fact that the game has been in development for 15+ years and still is very well architected and designed to the point that it can be ported with such ease.
- theshrike79 3y agoThey did the smart thing and all of the game core is a separate C# package and they were using Unity mostly for the display bit. Zero game logic was trapped behind unity, so it was mostly just replacing a few idiosyncrasies between Unity and Godot (X vs x in coordinates and colors being floats vs ints)
- lazzlazzlazz 3y agoIf you want more detail you could make a Twitter account.
- chii 3y agoIt seems like because there's so much custom code, rather than editor features, the author might as well use a rendering library instead of the engine.
- xena 3y agoThey do use a rendering library. It's called "Unity".
- evrimoztamur 3y agoWhen you want to build games for many platforms at once, dealing with platform-specific rendering, sound, and input code just becomes tiring. Having an engine at the base gives you these for free (or at a cost, with Unity).
- chii 3y agothat's what a rendering framework does for you. A game engine is much more - it includes systems like physics, game object representations (like unity's sort-of-ECS), save/load, animations etc.
- slikrick 3y agono, a rendering engine just handles rendering, they listed multiple other things. don't conflate your definition to mean more than it actually literally does. using game engine's builtins for the things you don't want to abstract yourself makes complete sense, keep the game to "game logic"
- osener 3y agoThis reminds me of the recent DHH TypeScript kerfuffle. Imagine doing a port like this without static types. Every change you make you have to build, launch, look for a crash. Times like this you are so happy you built things in a more refactorable language and used a good architecture.
- wiktor-k 3y agoFor lazy people like me I think the "kerfuffle" is https://world.hey.com/dhh/turbo-8-is-dropping-typescript-70165c01 https://world.hey.com/dhh/turbo-8-is-dropping-typescript-701...
- edem 3y agoIf you're interested in how Brian thinks take a look at this video: https://www.youtube.com/watch?v=U03XXzcThGU https://www.youtube.com/watch?v=U03XXzcThGU I've learned a lot from this back in the day!