I'm a Dragon Rider, if you will. I have bought the pro license and have used the toolkit to make some demos/experiments. I'm excited by how quickly I can produce a game that works on multiple targets. It's been great as a recreational coder. I have aspirations of figuring out the right game loop and eventually selling it. It's a lot of fun and fits my desired approach. Thanks to everyone working on it!
If I understand correctly (from a quick browse of the docs) this is Ruby _without_ anything remotely like Rails. That makes it interesting.
I did a Rails job once. I kept thinking that I liked the language as a kind of modern OO language in the spirit of Python (and also Lua a bit) but I really disliked the ecosystem around Rails. For instance, the project I worked on had to maintain two separate versions of Ruby because different gems worked with different Ruby versions (it's been a while so I don't remember details).
Another thing that bothered me is that everytime I searched online for help to do something slightly more advanced in Ruby my search results were inundated with "hello world" style posts from aspiring Rails devs eager to advertise their passionf or Rails. I could never find the information I wanted, so I had to do everything the hard way.
Overall I had a horrible experience with Rails though I'm sure it's far from that bad for most. Anyway it's refreshing to see a cool use of Ruby without the Rails.
A friend of mine sat me down and showed me how to work with rails. We ended up programming the entire weekend and worked our way through a few cases of beer in the same time. Working in rails was incredible and the productivity was unlike anything I have ever seen.
I think nowadays there are a lot of people that only built SPAs and never have used a framework such as Rails or Django, and that's a pity. They are missing a perfectly valid and productive way of shipping quality software.
I've had good results with the react-rails gem, basically letting me plop bits of react into a rails view. It's not like, the best the in the world from a pure design standpoint? But it does a really, really good job of not having react step on the toes of all the super nice things that Rails will do for you.
As somebody who loved Ruby, THEN got into Rails, and now really hates Rails, I've made an intentional effort to not to have a meaningful opinion about Ruby itself until I have a good year between me and any rails work. Rails just infects ruby with so many terrible ideas. I suspect going back to pure ruby I won't feel the same way, as I've now reached a point where I see the whole "everything is an object!" design is a huge fail, but that aside I could see rediscovering the fun in the expressiveness of straight ruby code.
But yes, it really is a shame that Rails seems more parasitic on Ruby than not and hasn't lead to a larger general purpose Ruby community.
I have been using ruby professionally for 15 years, and I have not used rails in the last 12. I have not found it difficult to avoid rails stuff when searching for help.
I don't see this mentioned on the website, but, if I remember correctly, they also have materials for teaching kids how to code. I was thinking about running something at my son's school last year before Covid shut everything down.
The "hotloading" is really nice and the community on Discord is excellent.
Instead of DR, I think I'll use Ruby2D as a very first step: it's incredibly limited, having only basic primitives, but it's also much more approachable, in a BASIC/LOGO-like way.
Coincidentally because of that use case I just remembered yesterday that I had a PR open on Ruby2D...
At the risk of hijacking the thread, are you still doing any work on RubyMotion? I always thought RubyMotion was interesting because of how it provided seamless access to the host platform APIs and was even built atop the host platforms' object models. I might have even used it for a product about 5 years ago, if it had supported Windows as a target platform (though I'm not sure how that would have worked).
Lots of typical anti-ruby grumbling in this so I'll just say; this looks awesome and I'm excited to give it a try. I still love programming in Ruby, and there's no reason at all why a game written in Ruby couldn't be performant. Great to see a good use of mRuby too. I've had ideas for games in the past but I know that having to learn an entirely new language, framework, and concept of development will mean that I never finish it. Having an option in my favourite language removes one of those barriers to entry.
Yeah, I mean, modern machines with multi cores that are standard now can simultaneously run multiple databases, IDEs, OS itself, bunch of containers, browser with zillion tabs, but can't run 2d ruby game because ruby is slow ? Riigggght.... I bet it could run performant in LOLCAT language nowdays.
I was in search of a bare bones engine like Love that could deploy to many platforms. I didn't need a full-blown game dev environment, and I was leaning towards a coding heavy interface - no blueprints, drag-and-drop gui, etc. I found Defold, and I have been using it for about three months. I wonder how DragonRuby compares other than the Lua or Ruby choice as the scripting language. Defold does have more of an IDE/GUI to it, but you can stick to just coding. I program in many languages, so learning Ruby is not a big deal. I actually tried Ruby back in 2001. I liked the syntax. I'll have to try DragonRuby out, but I am afraid I'll wind up buying the Pro version to develop on Android. I don't like the yearly subscription model. I prefer buying a permanent license, and upgrade as I need it. The fact that DragonRuby costs money and is a subscription may just keep me on Defold. I will not know until I try it. I may surprise myself by falling in love with Ruby!
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!
Putting 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
It probably is, and that is just fine. As long as enough of us value being able to use Ruby they'll do ok. Not everything needs to aim to become a unicorn.
I 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.....
Am in the midst of shipping a medium sized game in Unity and I can confirm your takes are correct/relevant today. Unity is incredibly frustrating to me, and I would really aggressively challenge the notion that Unity is aimed at any sort of "Developer Productivity". More than anything it's a dumpster of features to allow Developers, Artist and totally nontechnical/non IC contributors to all contribute okay-enough. But the features that go into making Artists productive are at times orthogonal to those that make Devs productive. It's all a big tradeoff.
Godot is smaller and has way way less learning material (and no Asset Store), but purely from an Editor perspective it's miles ahead from a dX perspective.
Playing from editor is the testing on desktop. You can make a parallel builds in Unity with the new build tools. Hot swapping code breaks down quickly as complexity increases (it’s also supported by default in Unity). With nested prefabs changes can be made while scenes are running and preserved. You can debug an unity game remotely with Rider or Visual Studio, you can add new code, change execution order, memory, etc. I guess Ya got Unity best on build speed though; although, I bet a lot of what you saw as build time was asset conversion. In my experience with unity I rarely leave the editor/rider combo and I only make builds when testing new libraries (because of IL2CPP) and for performance analysis. It is much, much faster to iterate through the editor than hot swap could ever hope to achieve; I can test every resolution, notch configuration, etc without leaving the editor. I have built professional games with custom engines, unreal 3, unity, and torque and Unity is by far the most enjoyable to make games in.
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.
Unity is just fine. 1000s of shipping successful games. The latest hit game made in Unity is Valheim.
I don't choose games based on their engine I choose them based on if they are fun. Same as I don't choose movies based on what camera was used to shoot them or what software was used to render the CGI scenes.
By that measure, pure hardware-banging from C is just fine too. Heck, thousands of commercial games written in 6502 assembler have been released over the years. Doesn't mean it was an ideal developer experience.
The market for a game engine is not players. Most games could be written with almost anything.
Your logic isn’t equivalent: in your Ruby example you precalulate the speed for each axis and only add the value to x and y each frame. In the Unity example you do the inefficient “Speed * new Vector3(1,1,0) * Time.DeltaTime” every frame. If you moved that calculation to the start and then add in fixed update they would be equivalent logic”. That is probably the difference you notice.
Sorry, but if an engine developer says that Unity is just a bad engine and your engine is faster, you are just harming yourself and your work, since this is silly.
Unity employed Mike Acton a few years ago, who is now lading their transformation to a data oriented backend. They are switching everything out for a pretty well thought out Entity-Component-System (not the old Component stuff you had in unity, but a way of saving your game data in arrays of the same type for performance, instead of as objects with data that should not be together in memory). I have not kept up in the last year, but already a year ago this was showing many promising results, being able to simulate enormous amounts of agents in games: https://www.youtube.com/watch?v=L9_7QYaeNjc
Unreal and Godot have their good sides (Unreal being great for non-coders and/or if you want to an FPS, Godot being able to bind to many languages in the backend and being open source). But none of them is doing the same huge transformations in the backend as unity.
I don't believe that either. Unity works just fine for Cuphead, which is a pretty graphically intense game. Plenty of other graphical complicated 2d games too.
I think you're moving the goalposts. Of course Unity can work "just fine" for things like Cuphead. However, DragonRuby is an mRuby wrapper around SDL by the guy who wrote SDL vs. a 3D engine that was reworked into a 2D engine?
Surely Unity has more overhead and DragonRuby can make more optimizations.
From an apples to apples standpoint. What you're seeing in the video is DragonRuby Entities vs Unity GameObjects (with full functionality).
They look like particles yes, but the intent was to show the creation of fully featured constructs (not a demonstration of "fire and forget" particles).
So this YT video of 3:47 is going to prove that Ruby is faster and better than Unity? This is like comparing BASIC and C, but making sure BASIC is on a quad-core, and C on a 386 to make the point work.
Unitiy's main strengths are it's asset store and ability to export to consoles/phones, also most people like C#. It also had strong momentum of tutorials and community but that is diminishing now as most are so outdated now and for older versions that they are no longer relevant. Unreal is getting easier everyday and they are getting more assets and more community together so it's eating them from the high end while Godot is eating them from the low end. Since DragonRuby is good at exporting to consoles and most Ruby users like Ruby so it's arguable that they could be better in a lot of ways.
Unity deploys to console. You just need to be licensed to build to different console platforms. And saying Unity is not that great is an ignorant statement. What about it isn’t great? And how is DragonRuby better?
I’m not sure how to respond frankly. You claimed my statements were ignorant. So in response, I provided a source that I agree with wholeheartedly. And a HN comment thread that provides even more criticisms.
I mean, I can add to what’s already been stated. But I’m not sure it’ll really help further the conversation. Especially when it’s being dismissed as “not nearly as bad”. So... yea.
> 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.
I 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.
The 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.
The 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.
Not 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.)
I 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.
Unity’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.
Unity 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.
Huh, 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.
You 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.
Unity 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.
> 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.
EVE 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.
One question. Is DragonRuby, in essence, a mRuby compiler? Or is it an implementation of an mRuby interpretor that calls on a low-level API for fast game functionality?
Why would I choose this over a FOSS 2D game engine like Godot that offers almost everything this engine offers without the price tag? Not trying to shit on the project, I just don't see a compelling argument put forth on the website as to why I should pay $50 or $98 a year for an engine that I can only see has been used to port one open source game to Switch and a bunch of tech demos. What's the hook? Why should this be my game engine of choice?
Fair enough, but for that price I'd expect more than a language I like. It's got some interesting features, but like I said many other game engines have similar features with no cost, what's the stand-out reason to make me spend $50 once on it or $98 a year. Is this just being marketed to language enthusiasts?
What makes ruby worth using for a game that makes this worth paying for over any other free, oss or commercial game engine with more flexibility in language and capability?
No offense to ruby programmers but, Ruby's not necessarily the ideal language for game programming even when it comes to scripting languages.
And...if you know ruby well enough to make a game, you could learn one of the many other languages better suited to game dev fairly easily.
You're trying to dig deeper where there's no deeper.
What makes this worth paying for, without considering the technical details (like maybe it's a bit faster for some stuff than Godot or Unity) is just Ruby.
Yes, most programmers are able to learn other languages just fine, but we all have preferences. And people who prefer Ruby usually tend to like Ruby a lot.
HN can definitively be brutally dismissive of things that doesn't match current perceived wisdom of what is the right way of doing things, much beyond the initial few comments.
But I don't think there's a way around that while maintaining open discussion. At least here the disagreements are mostly civil.
Part of what makes announcements like this tricky on HN, and what I think triggered the comment you replied to, is that while part of HN values "cool hacks" and simplicity greatly, part of HN evaluates everything based on whether it's useful at scale, as a product, right now, and can grow big (there's certainly a big overlap, and I'm oversimplifying), and an announcement relating to a commercial project that aims for the former crowd unsurprisingly strokes some of the latter crowd entirely the wrong way as a weird niche project seemingly massively lacking in the features they think are essential.
I think that with DragonRuby that is particularly unavoidable. What makes some of us find it awesome is an inherently alien way of thinking to a lot of people in a way that look backwards to many.
I definitely see the clash you're talking about between people focused on build a product and people focused on building infrastructure.
The infrastructure people often have day jobs at companies working with more traffic, more users and more need for correctness than all but the most wildly successful products ever see.
Conversely the practices that work for successful solo product creators would be disastrous for a tech giant / financial company / enterprise b2b company to use.
I wanted to second this, so thank you for being positive. Even though I'm not a rubyist, I do appreciate having options.
A hard yet important lesson in life is to learn to do things in spite of haters hating. For example, I'm writing a programming language, and I can almost guarantee that people will hate it... and that's ok.
> This is not the same Ruby you'd use for building web apps with Rails (far from it).
> DragonRuby is powered by highly optimized C code written by Ryan C. Gordon.
This feels like a liability for the long term. The community is now depending on Ryan to maintain this custom Ruby implementation, if I'm reading correctly.
Given their limited shelf-life, I’d have thought this would be less of an issue for games than for other software? Many games rely on Lua, for example, which is maintained by a team of just 3 people, and it seems only one of them writes most of the code.
True for a single game, but developers don't like to learn an entirely new system every time they make a new product. With Unreal and Unity, you might have to learn a few new things when new major versions come out, but your old knowledge is still very much applicable. And if any 1 developer quits working on those engines, it's going to keep trucking along.
But the worry here is that if the main developer of DragonRuby quits, it's dead in the water. Sure, you can use the old version and it'll probably still work, but there won't be any improvements, whereas other engines are constantly improving.
This particular objection doesn't worry me, because all the really effective 'engines' I know about, that provide an environment to be built upon by others, are originated by and run by a single visionary person.
From my perspective, this is an asset rather than a bug, provided the person is committed to his project. It's a guiding force that stops it being a vague laundry list of feature requests.
In general I don't think I'd be comfortable using any type of engine or framework which is solely developed by one person.
Let's say he goes crazy tomorrow and decides to camp on the beaches of Jamaica. No matter what you do, particularly with a closed source engine, you're stuck.
With unity if one programmer decides to quit, we still have a game engine that gets updated.
With Godot if both of the paid maintainers quit and the project collapses, you can just fork it and keep going.
There’s four of us in the partnership (Ryan just handles the core xplat stuff). And we are leveraging a lot of OSS foundational components SDL, mRuby, LLVM.
I'm not a game dev, but I just want to say thanks for working on this. I empathize and also don't quite understand how the "let's shit on ruby" sentiment spreads even to this, and I was pleasantly surprised to see Among Us is built on dragonruby!
I always love to see ruby's focus on developer productivity being spread, and if I decide to take a crack at making a game, I'll be sure to check this out.
itch.io isn't exclusive to ruby games, it hosts games made in any engine. above commenter is correct, Among Us was made in Unity https://innersloth.itch.io/among-us hit more info to see the engine details
In the event that Godot becomes insolvent, the engine loses the ability to export to console. You must have a business entity to get access to those parts of the SDK. Losing the ability to go to console is a massive hit to the viability of the engine.
I jumped into DragonRuby myself and considering my current work involves Rails it was extremely easy to dive into DR and code in two game jams solo. Love it at minimum as a hobbyist tool and I see the potential for shipping to all platforms with the Pro license.
20 years ago, I shipped a Ruby/SDL powered quiz game to a network of Windows NT4-powered games cabinets in pubs. They had 64MB RAM and the jerky animation due to garbage collection pauses ATE ME ALIVE for about 6 months.
What's changed in Ruby since then to make smooth animation possible?
Seems like this game engine is built on top of RubyMotion which compiles to byte code - no (slow) Ruby VM. This probably also allows them to bundle the game for many platforms.
I don't think it will be supported at the engine level but the community tinkers with 3d proof of concepts. Both with pure Ruby and with backing maths in C extensions for even better performance.
Pygame recently hit 2.0, incorporating libsdl-2.0.0 after a long wait. Have you tried that?
I think you're a bit off in describing Ruby as a language in decline. Rails startups are being built every single day, Hotwire is threatening yet another Rails renaissance as Ruby moves towards reactive web app technology, mruby is pushing forward into smaller areas, and TruffleRuby is moving forward into exceptionally performant Ruby code.
This is all on top of 3.0, which brings all manner of improvements, most notably type annotations.
I love Python as much as anybody, but I think they are equally respectable and equally popular in their own niches.
Syntax is only a preference, there is much more to Ruby as a language than just the syntactic departures from Python code. It's a different model and encourages a different style of problem solving.
Syntax is extremely subjective. For my part Python's awful syntax is an important reason for why I avoid using it if I at all can (which is almost always).