5 ms·
"Why not Rust?" is a question I ask about game development a lot these days. I'm an engineer with a decade of experience as a web services engineer, and 5 year
by ambientqtns 4y ago
"Why not Rust?" is a question I ask about game development a lot these days.
I'm an engineer with a decade of experience as a web services engineer, and 5 years of game development engineering. Rust seems like the right direction for game developers -- safer code, faster compile times, more portable binaries.
Ambient looks very cool, but I had some questions --
1) WebAssembly, but no native web player? One of the most powerful things a game dev can do is provide a link to a game and just let people play it on itch or other space. Having a binary you have to download to play is a major turn off for small time games. It looks like it's on the roadmap, but without a clear target?
2) No editor/tooling yet? What's the plan for a unity-like editor interface? How do non-developers (designers, artists, audio folks) interact with a game made with ambient? Is that in the plans for the future? Could you expand on it a bit more?
3) Sustainability? A five person crew working on a free product, how do you plan on monetizing it?
4) Single executable? One concern that jumps out right away is the single executable for server and client. Often in multiplayer games you want to avoid shipping server binaries (for cheat protection, for instance, or to avoid the cost of deploying a large client to a headless server environment). Are there plans to provide the ability to separate client and server builds?
5) HTML for front end? Games are increasingly moving to HTML to power their UI. Given you are already using WebAssembly, it seems like it wouldn't be that far off to enable an interface so that UI could be handled in JS/HTML. (Yes, this is performant enough for games. Yes, it's being done in AAA games. No, you aren't the first commenter who thinks that UI shouldn't be done in HTML. No, I'm not interested in hearing complaints about it.)
Nevertheless, this looks neat,
- aww_dang 4y ago>1) WebAssembly, but no native web player? One of the most powerful things a game dev can do is provide a link to a game and just let people play it on itch or other space. Having a binary you have to download to play is a major turn off for small time games. It looks like it's on the roadmap, but without a clear target? Appstores, antiviruses and gatekeepers of every sort. Employees want to play games without installing. >HTML... The problem is with CSS and the ever evolving HTML standard. Feels a bit heavy and the implemented features will always be incomplete.
- krapp 4y agoSteam and the app stores seem to be doing just fine. Maybe there's a popular indie title only released for browsers but I can't think of it.
- tormeh 4y agoThere's this small one called Farmville. Though granted I don't know if it's still printing cash the way it used to. It's possible smartphones killed that sort of game.
- nickstinemates 4y agoMy wife has been playing the same farmville farm for 12 years, since I met her. Hasn't spent a penny, but they release updates all of the time. I'm amazed at her dedication and theirs to this game.
- squeaky-clean 4y agoWasn't Farmville shut down in 2020? It was flash based. The versions I can find now are all mobile apps in the app store.
- prophesi 4y agoThe trick is to use itch for an easily accessible early build, then transition to Steam / mobile stores once you have monetization in place.
- sarchertech 4y agoRust faster compile time? Faster than what? The terrible compile time is a big reason why I avoid rust for game dev.
- vvanders 4y agoLast game engine(C++) I worked on was a full hour to build if you touched a core header, and that was with Incredibuild that farmed out the compile across the studio. If you care about compile/iteration times you can get them down to a reasonable level, Bevy does a good job splitting the heavy lift part into a section that is linked dynamically[1] which leads to pretty reasonable compile times even in something Rust based. That said most of the high-churn areas I've seen drop to some scripting language(ex: Lua or others) for both hot-reload and avoiding compile times. Usually the heavy compute pieces are out in native with orchestration in scripting or something more flexible. [1] https://bevyengine.org/learn/book/getting-started/setup/#enable-fast-compiles-optional https://bevyengine.org/learn/book/getting-started/setup/#ena...
- pjmlp 4y agoThat is why we now have incremental linking, hot-code reloading and for the lucky ones on VC++, modules. This toy application https://github.com/pjmlp/gwc-rs https://github.com/pjmlp/gwc-rs takes about 15 minutes to compile from scratch on a humble Asus 1215B, whereas the C++ original (thanks to having Gtkmm available as binary), takes about 2 minutes.
- echelon 4y ago> The terrible compile time is a big reason why I avoid rust for game dev. Compile times are the least of your worry. The big problem is lack of tools and libraries in Rust gamedev. You can't even achieve PS2-era graphics with Rust right now. Neither Bevy nor FyRox support blend shapes / morph targets, and that's a two decades old and absolutely essential animation tool. Rust for gamedev is going to take a decade to really get going.
- shmerl 4y ago
- chillfox 4y ago"Why not Rust?" Well, if you have got access to a language designed for making games like Jai, then that would presumably be better than Rust.
- spicyusername 4y agoIs there a road map for when Jai might be available.
- chillfox 4y agoNot as far as I am aware
- jalbertoni 4y ago> Yes, this is performant enough for games. Yes, it's being done in AAA games. Every time someone says something mildly controversial about weird technology being used for UI in games, I like to point out Skyrim used Flash for its UI. Bunch of .swf files inside the packed data file. It used some weird non-100%-standard player, but it was still Flash.
- msk-lywenn 4y agoProbably used scaleform. It was used by many games. It was a massive headache for engine programmers. The thing really had very very poor performance... I think it was always heavily hacked so that it could run decently, both the actionscript side and the scaleform side. At least that's what a programmer did for a year to get something decent. I can't believe it could have ended up anywhere else with that tech. Still, it was amazing for artists.
- deleted 4y ago[deleted]
- pjmlp 4y agoMost likely Skyrim used Scaleform, https://en.wikipedia.org/wiki/Scaleform_GFx https://en.wikipedia.org/wiki/Scaleform_GFx. Arena Wars was one of the first games using .NET already in 2004, years before Managed Direct X or XNA came to be, with direct bindings to OpenGL. [0] Then we have quite a few sucessful ones in XNA, some of them them ending up as quite relevant IP franchises. Minecraft being a success, regardless of being written in Java. Runescape, a plain Java applet that kept legions of gamers occupied. Or for that matter the 1990's game development literature trying to move the ecosystem from raw Assembly to C, and how long C++ needed to gain traction over C in most studios. Even today many of them rather code in "C with C++ compiler" style. Which shows that even C++ had quite an uphill being adopted by the industry. Tech doesn't matter if game design and IP is compeling enough to make people enjoy the game. A great engine, with a top language and bad game design, doesn't go far. [0] -- https://en.wikipedia.org/wiki/Arena_Wars https://en.wikipedia.org/wiki/Arena_Wars
- FredrikNoren 4y agoHi, Ambient CPTO here. 1) Yes, we're currently working on this and progress is good, so stay tuned for that! 2) We actually built a collaborative editor for this, which we've been using in-house for a year now. We choose to not release it right now, as there's still some things we need to work out with it, but it's coming too! 3) We plan to monetize services around this, such as game server hosting and tools for people to monetize what they create. 4) So the runtime is completely open source, so anyone can look into the code anyway. If you build something on top of this, you will also be able to choose if your own code should live on the server, client or both. If it's server only it won't be sent to the clients. 5) We've experimented with partial html UIs, but support for it on Rust native isn't great yet. We do have a fairly decent UI implementation (see examples here: https://github.com/AmbientRun/Ambient/tree/main/crates/ui/examples https://github.com/AmbientRun/Ambient/tree/main/crates/ui/ex...) though it's not exposed to user code yet, but yeah I hear you that there's a lot of people who know html based UI tech. We'll see exactly where we end up there, but most likely the first step will be to expose the UI library we've built already to users. Thanks!