14 ms·
Lets say I am not a Ruby dev, what would compel me to learn this over Unity, Unreal, React Native game engine, or one of the other (thousand) game engines out t
by monkmartinez 6y ago
Lets say I am not a Ruby dev, what would compel me to learn this over Unity, Unreal, React Native game engine, or one of the other (thousand) game engines out there? Are there enough Ruby devs to sustain this?
I remember Ruby Motion was a thing, then it wasn't... then it was again? I started learning web dev with RoR and quickly moved to Python as the ecosystem was so much bigger. I could transfer my Python knowledge into so many different domains. I remember at the time, I really wanted a "Ruby Motion" for Python... still do actually.
I have come full circle and now think JS is eating the world and I am playing in that garden... we'll see where that ends up I suppose. In any case, GOOD LUCK... I hope for the best!
- tomlin 6y agoAgree. I don't know if the Ruby interpreter is what I'd look to for performance in a game.
- pansa2 6y agoIt doesn’t use the standard Ruby interpreter (MRI), but a custom implementation that includes a compiler. I don’t know if it’s AOT compilation or JIT.
- amirrajan 6y agoUnity’s implementation of C# is subpar to say the least. Watch the YouTube video, it demonstrates DragonRuby’s speed vs Unity. We can render twice as many sprites and are 1/8th the size. We also expose C Extensions to the end user if they what blinding fast performance for critical paths.
- wokwokwok 6y agoHm... I'm more concerned about running user-land scripts and shaders than sprites. If I wanted raw pixel-blits per second I could just use SDL. Do you have any concrete numbers on compute (ie. scripts)? Do you support shaders? eg. How would you do this in DragonRuby? --> https://github.com/keijiro/StableFluids https://github.com/keijiro/StableFluids Ie. a compute buffer that renders a fluid simulation in real time?
- amirrajan 6y agoThere’s quite a few samples of people doing crazy things with Cuda. Not sure if you can access this demonstration: https://discord.com/channels/608064116111966245/674410581326823446/828899164812607499 https://discord.com/channels/608064116111966245/674410581326... These are other demonstrations of DRGTK’s performance capabilities: - https://twitter.com/Groteskly/status/1373668110482427906 https://twitter.com/Groteskly/status/1373668110482427906 - https://twitter.com/amirrajan/status/1361640855589842951 https://twitter.com/amirrajan/status/1361640855589842951 - https://twitter.com/amirrajan/status/1339575630187425792 https://twitter.com/amirrajan/status/1339575630187425792
- Impossible 6y agoHuh, number of sprites per frame has little to do with the speed of C# in Unity. If anything it shows that Unity's default sprite renderer is inefficient.
- jbluepolarbear 6y agoYou have any data to back up that claim? Unity C# is very fast; especially, if compiled to IL2CPP. Your video doesn’t prove anything. Make a lot of moving transform hierarchies and see how they compare. Unity sucks at this, but I bet it will still outperform In your tests.
- dosshell 6y agoUnity does also support C extensions... But due to cross platform mess it is not so popular (i guess). > double the amount of sprites It sounds a bit low? My experience is that with instancing and 2d array textures (2d games usally uses spritesheets) can be much much faster then 2x. I would guess 20x-200x faster than unity.
- kevingadd 6y agoUnity rendering sprites has nothing to do with C#. A big portion of their engine and rendering stack are implemented in C/C++.
- jchw 6y agoThe irony is that Ruby was actually designed for this kind of thing. And in fact, RPG Maker XP’s Ruby Game Scripting System, a commercial usage of Ruby as an embedded scripting language for game dev, was released at least a few months prior to the first Ruby on Rails release if memory serves correct.
- kamranjon 6y agoDo you have a source for the claim that ruby was designed for game development? I'm not saying it's wrong, I just have never heard that before.
- jchw 6y agoNot necessarily game dev, but rather as an embeddable scripting language. There’s also mruby which is even more portable and designed to be more embeddable. My understanding is that in Japan, Ruby is often used as an embedded scripting language the way people might use Lua. (I don’t have an exact source for this, it’s something that seems to come up periodically when talking about Ruby. Matz mentions it briefly when introducing mruby. I also don’t necessarily think it was conceived for this reason, but rather that over time, it fell into the niche and became influenced by it. But I’m not sure about that, either.)
- castwide 6y agoI can vouch for Ruby's practicality as an embedded scripting language. The first time I used it was in a game engine (which, IIRC, also predated Rails) with a C++ core. Writing the high-level game logic in Ruby was pleasant, and hooking into C++ functions that did the heavy lifting kept it performant.
- mega-tux 6y agoThis is mRuby, not Ruby. Different things. Think in mRuby as Lua and MRI Ruby as Python
- amirrajan 6y ago> Are there enough Ruby devs to sustain this? So far so good. We’ve been in business for nearly a decade now (with the game engine going onto year 3). > Unity, Unreal, React Native game engine, or one of the other (thousand) game engines out there? Well our ability to deploy to console eliminates most engines as competitors/options. Unreal is a fantastic engine for 3D games. Unity is... well... not that great to be honest. Other differentiators are on the site.
- tomlin 6y agoWait, you're suggesting Ruby is better than Unity? This has to be a joke.
- kfischer_okarin 6y agoPutting the purely technical aspects aside for a moment. From my experience so far one big point in favor of DragonRuby is that its philosophy focuses on developer productivity, for example - an iterative immediate feedback style of development using hot reloading - (in the latest version) direct source code editing and updating via a HTTP Developer interface (think updating your smartphone game at runtime without re-deploying) - Producing builds for all Desktop platforms in usually less than a minute (mobile and consoles probably take longer considering the surrounding tasks of signing apps, registering in stores etc) - offering a centralized interface for persistent game state which is automatically dumped for error analysis in case of failure and able to be recorded/replayed/rewinded out of the box during dev - Abstracting away File Systems/Storage mechanisms out of the box so you don't have to care about where you save on a Switch, PC or iPhone and probably lots of other stuff I'm not quite aware of atm. Another big plus point is the lively and encouraging Discord community
- jbluepolarbear 6y agoGodot, unity, and unreal do all that too. I’m not seeing the advantage other than it’s ruby. Seems like a niche product.
- kfischer_okarin 6y agoI can only speak for Unity until versions till maybe 2019 - and I never developed a full commercial title with it - just a few game jam games - so maybe I'm not the best authority on that... But I think it's quite far away in many of those features Sure you can try out your game immediately in the editor, by pressing the play button - but can you edit Source code and it will be immediately applied without restarting and without losing the current game state? You can edit and adjust scene objects in the inspector during play mode but those changes are usually thrown away after quitting play mode. I never did serious mobile dev with unity but I same as above... updating and editing your game source persistently at runtime during playing doesn't seem possible, since it's completely compiling everything into an Android package right? Building for all desktop platforms under a minute - this is 100% not true..... Almost all of the last hours of game jams where I used unity where spent in worry waiting for a long build process not being sure everything works all right afterwards - and that was always for just _one_ platform at a time...... DragonRuby builds your games into fully functional Windows, Mac, Linux, HTML5 and FWIW Raspberry Pi builds in under a minute in total for all those platforms. I don't know of any other Engine (except maybe LÖVE2D which is interpreted in its basic nature and doesn't need building) which can do anything close to that speed Persistent flexibly modifiable game state? - maybe there's something in the asset store - but out of the box? Cross-platform File storage is the only thing where I can see that that is probably a well solved problem in Unity.... I cannot speak for the other game engines. But in general it would be nice if you back up your claims.....
- neolog 6y agoEVE Online is written in Python
- hu3 6y agoThis post tells me the heavy lifting is done in C++ including 3D rendering, network communication and input handling: https://forums.eveonline.com/t/how-is-the-eve-online-client-written/60555/5 https://forums.eveonline.com/t/how-is-the-eve-online-client-...
- neolog 6y agoThe quote is > As far as we know, the EVE client is written in C++ and Python. C++ handles all the low-level stuff like 3D rendering, network communication, input handling and such. (Stackless) Python is used for everything else, which includes the user interface and even the management of graphic resources (you can see this in the debug window by pressing ctrl+alt+shift+m). This technology mix is quite unique, so I’d suggest CCP implemented the EVE GUI in-house, not using a (open source) widget library. I’ve been playing EVE for many years now, and the GUI has evolved a lot since the days I first tried EVE (around 2005). This also strongly suggests that the code was written by CCP.
- hu3 6y agoYep, C++ where performance matters.
- neolog 6y agoSurprising they'd go C++ for networking. Python's had top-notch async for nearly 20 years.
- kevingadd 6y agoEVE has a history of incredibly bad performance issues, in part due to their extensive use of python for networking, simulation, etc. They seem to struggle with it on an ongoing basis, so it makes sense that in some cases they would move logic from python to C++. Their networking stack was at least at one point heavily Python. Some engagements in EVE will literally involve thousands of players in the same system all interacting with each other in big groups, so it becomes extremely important to be able to push a truckload of packets and events and process them with low latencies.
- gfxgirl 6y agoI had this discussion with a AAA game studio recently. They have a hit game will millions of players and it's been a hit for many years. It uses a custom engine. They've been releasing new games. Those new games are in both Unity and Unreal. You can see all the reasons 1. Their custom engine doesn't have all the features of either of those other engines. Their artists in particular are pushing to switch to get those features. 2. Their custom engine doesn't have have amount of tooling those other engines have (likely no blueprints, no shader graph, no state machine editor, no animation editor, etc..., etc..., etc...) 3. Their custom engine doesn't have tens of thousands of potential hires that already have experience with them. 4. Their custom engine doesn't have 1/1000th the amount of docs, tutorials, youtube videos, etc on how to use it so the team that maintains that engine has to provide that knowledge to every new hire The result of the above is it limits their growth. If they want to start a new team for a new game, if they stuck with their custom engine they'd basically have to take a significant number of people off the existing game and move them to the new game otherwise no one on the new game would have any easy way to know how to use it.
- AlchemistCamp 6y agoThe needs of AAA game studios and solo/small-team indie devs are very, very different.
- vidarh 6y agoThe target for this is not AAA studios, but indie developers. For my part, I don't have enough spare time to learn one of the big engines. They're too complex, and this is a hobby. DragonRuby on the other hand is simple enough that you can start doing stuff immediately if you know even basic Ruby. That is the appeal to me. Whether or not it would work for a large team is totally irrelevant for that kind of use, because I have no interest in starting a studio. It seems a lot of the people criticizing DragonRuby in this thread forgets that game dev spans from hobby development by individuals who might toy with it a few hours a week to multi year projects by major companies, and they have different needs and interests. E.g. I value having fun over ever completing a publishable game. DragonRuby is fun. That I could release something with it is a bonus, but to me even that is secondary.
- AlchemistCamp 6y ago> Lets say I am not a Ruby dev, what would compel me to learn this over Unity, Unreal, React Native game engine, or one of the other (thousand) game engines out there? A good reason would be that RoR is still a competitive advantage for indie web devs and small startup teams working on non performance-constrained domains. It's amazing how many successes In see in the IH world using Ruby despite far larger numbers of people building everything in JS or maybe Python. Dev experience matters and there are some durable advantages the Ruby ecosystem has maintained despite others growing more quickly in popularity. Building DSLs is one.
- ksec 6y ago> and now think JS is eating the world It will via asm.js, except no one will be coding in JS anymore since everything will compile to asm, and you will have asm compiler in your kernel.
- nrjames 6y agoUnity is a giant download and very complicated. Something like DragonRuby, Renpy, Python Arcade, or LOVE2D are far smaller and suitable for many small games. Even Godot is significantly smaller and offers many of the features of Unity.