Godot Game Engine Released Under MIT License
goruka writes with news that a new game engine has been made available to Free Software developers under the permissive MIT license "Godot is a fully featured, open source, MIT licensed, game engine. It focuses on having great tools, and a visual oriented workflow that can deploy to PC, Mobile and Web platforms with no hassle. The editor, language and APIs are feature rich, yet simple to learn. Godot was born as an in-house engine, and was used to publish several work-for-hire commercial titles. With more than half a million lines of code, Godot is one of the most complex Open Source game engines at the moment, and one of the largest commitments to open source software in recent years. It allows developers to make games under Linux (and other unix variants), Windows and OSX."
The source is available via Github, and, according to Phoronix, it's about as featureful as the Unity engine.
(Sorry)
Boffoonery - downloadable Comedy Benefit for Bletchley Park
Lots of features early on, some screenshots of pretty, but most of the bloat is in generated, generally useless docuomentation?
I've yet to play a Crystal Space game worth playing.... or Love and Irrlicht for that matter.
Beta is just nice wording for "We own you now"
General rule of thumb is when a library defines their own types like string, vector, hash map, list, etc, ... run, don't walk away from it.
Seriously, WTF is wrong with just plain old STL???
Lets implement our own string class so we can be completely incompatible with everything else.
It seems like every first year CS student writes their own string and list classes (I know I did when I started).
This is an easy answer, STL is good but often not as good, specially for projects this size and requirements because:
1- It generates huge debugging symbols.
2- It generates a lot of code because most compilers inline it by default.
3- It's so complex that compile time increases by a few times.
4- Errors are huge and uncomprehensible.
5- Support for custom allocators is limited to alloc/dealloc functions.
6- Support across compilers is not as good (specially console compilers).
7- Lack of support for COW with atomic ops for thread safety
Some of these probably improved significantly since the time work on the engine started, but I'm sure most issues still stand.
As for why not std::string or std::wstring, have you actually used those? They suck, the amount of operations you can do is really little, check core/ustring.h in Godot to std::string and you'll easily see why everyone rewrites the string class.
What's wrong with plain old STL? It's not compatible with the current revision of the C++ standard library.
(You do know that the STL is the name for a specific library that predates ISO C++, right?)
sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
I like how the Mac version crashes immediately. I'll be using this a lot!
Haha, totally agree. Now, if only GCC used the SSO like clang and MSVC.
Like all pain, suffering is a signal that something isn't right
Actually, this one's not true anymore.
File under 'M' for 'Manic ranting'
Does a fame engine do anything useful outside SEO? I don't want to be famous on just the internet you know. Sure, the internet has a very large demographics, and it's international, but everything feels so virtual. And being "virtually famous" doesn't make me look good.
Democracy is for the people; you only vote once per season and we'll do the rest of the work for you don't have to.
The first thing I noticed is that the string class wasn't well thought out at all.
In particular, while it is already generally considered among experienced C++ programmers to be unsafe to derive a class from another that does not have a virtual destructor (a rule that the godot author(s) seem to have violated by inheriting their custom string class from their vector class), when the base class does not contain any virtual members at all, and the base class is still intended to be a general utility class, then inheritance is almost always the wrong tool for the job. The proper tool, in this case, would probably have been to use containment, and not inheritance... or if inheritance was really to have been the way to go, then it should have been derived from a base class that was common to both itself and Vector, where the necessary base class is never directly used by anyone other than those classes, (with all of its constructors declared protected, including the copy constructor, so that it is not possible to use the class unsafely outside of those controlled contexts).
I can think of absolutely no good reason to ever inherit from a class that has absolutely no virtual functions when the base class is one of general utility, and may be utilized by callers.
File under 'M' for 'Manic ranting'
I believe it's because their women lack estragon during development...
$
From the article:
Phoronix was just repeating the developer's claim. Would anybody who isn't the engine's developer care to comment on its feature parity with Unity?
Bogtha Bogtha Bogtha
Portable consoles/mobiles can't handle STL? Please, give me some of what you're smoking.
STL strings used to have CoW, until they realised that performance dies horribly with such a thin on multi-threaded applications. The memory cost of copying the string data (nowadays) is much less than blocking the CPU with a context switch every time you want to copy or modify a string.
There's no reason to worry about compatibility - use STLPort and you're good to go; or use uSTL and you're good even on really crappy hardware (which kind of defeats the point, if you're using really crappy hardware 80% of your full featured game engine won't run anyway)
Reinventing the wheel is a stupid thing to do, especially with something standardised like the STL.
the S stands for "standard", abbreviated to std for convenience.
Honestly, i wish Godot the best of luck with their engine.
But comparing anything to Unity is just telling me it may be "easy" to use, but the performance will never exist.
I'am yet to play any Unity game that doesn't make my PC feel like its 10 years old. It annoys me when i see a Unity logo on any game, as i know what to expect.
If Developers spent a little more time using a pure IDE based engine, the current indie games market would promote excellence, rather than cheap physx titles running on some hashed job Java code and being emulated by the engine.
Good luck to Godot, but I'd like to see more performance related project examples and stats. Show me your engine cares about performance and not just ease of use. A project demo to showcase the engine's capabilities wouldnt go a miss either :)
Well that ruins it. I wanted my game to have a totally awesome secret cow level.
I only look human.
My mother is a halfling and my dad is an ogre, so that makes me an Ogreling
and .stl doesn't have (at least widely accepted) texture support anyways and even the color support is dodgy.
world was created 5 seconds before this post as it is.
Thanks for the preaching, but I don't know what an "experienced C++ programmer" is. There are several different ways people programs C++, including different styles and different purposes.
Clean code is useless when it doesn't perform as expected, and performant code is useless when it's more difficult to write. C++ is meant to mix both things, so by definition it will never be entirely clean or performant. It's a language that strikes the right balance for this specific purpose.
In other words, the reason for the lack of a virtual destructor is performance. This way, the class will not need for a vtable and vpointer, and will be destructed inline. Containment will make it more difficult to write and debug, you would need to replicate operators such [], mehods such as size, etc.
So, I hope I could make my point of why the current choice is the right choice in that context.
There's a reason that programmers are devised to not inherit from stl classes like std::vector, and t has far less to do with the design of those classes, and far more to do with how the objects and their descendants may get used.
File under 'M' for 'Manic ranting'
Search Engine Optimization
By the way, if containment were used, the necessary public functions and operators would just be implemented as single line inline (or even forced intline) functions that delegated their responsibility to the contained class... this would incur no performance or memory overhead above inheritance,, and in particular, you make both the general purrpose vector class and string class completely safe to use in all contexts...where otherwise there is the distinct chance of errors cropping up when a reference to the vector is used while it is actually referring to a string.
However, another approach would have been to change the current declaration of Vector to something like, say, "_VectorImpl", a class that is never meant to be directly used by anyone other than descendant classes, and which has a protected default and protected copy constructor, so the class cannot ever be used outside of controlled contexts. Vector would then be implemented as a class inheriting publicly from _Vectormpl, and thew only necessary declarations to add to it would have been one-line inline constructors, which would call the _VectorImpl constructor. The custome String class could them also inherent from _VectorImp, redirecting calls in the constructors that once when to Vector to now be received by _VectorImpl.
I fully understand that not using virtual functions is desirable when you are coding for efficiency... but in my experience, you have to be careful how to handle object inheritance in such situations or you open yourself to a potential world of hurt of when people utilize the classes in ways that you did not predict.
File under 'M' for 'Manic ranting'
Fair assessment... I was kind of pressed for time when I wrote that, but there was still a lot I wanted to say... my brain was firing so much faster than my fingers that what I was saying didn't come out particularly as well as I had intended.
File under 'M' for 'Manic ranting'
Which has what to do with games or 3d engines, exactly?
File under 'M' for 'Manic ranting'
This all started by a typo "fame" instead of "game." I guess the joke was a "Fame engine" only does SEO.