
Show HN: Toy – A thin C++ game engine - hugoamnov
http://hugoam.github.io/toy-io
======
degenerate
"toy is under heavy development"

If your commits in the last week keep their pace, you may as well have this
statement be a clickable link to the github activity page:

[https://github.com/hugoam/toy/graphs/commit-
activity](https://github.com/hugoam/toy/graphs/commit-activity)

But if you slow down significantly, change wording to "active development"

Not knowing anything about game dev, your presentation page looks great. It's
nice to see all the important pieces mentioned (3D, audio, physics,
scripting). I think you did a good job on the page.

------
shezi
Note that the engine is licensed under GPLv3. Which means that any game must
be licensed as such as well.

~~~
hugoamnov
Hi, the license is a temporary choice. I wish to release it under a permissive
license in the future, I'd just like to secure a tiny bit of funding before
that !

~~~
halfastack
Just a note that if you accept any merge from anyone else, when changing the
licence, you'll have to have their consent to change the license as well.
Sounds like it might be a difficult thing to switch, depending on how many
contributors you'll have when wanting to switch.

~~~
sbjs
Is that true though? I thought all third party contributed changes are
licensed separately, with the contributor still having all rights, unless they
explicitly say otherwise.

~~~
cpburns2009
IANAL: My understanding is the same as @halfastack's.

> I thought all third party contributed changes are licensed separately, with
> the contributor still having all rights, unless they explicitly say
> otherwise.

That's true, but it prevents the project owner from changing the license
unless either the contributed code's license is compatible with the new
license, or all contributors consent to the license change. That is, going
from MIT to GPL is fine, but GPL to MIT is not.

Projects concerned with this frequently require contributors to sign a CLA
(Contributor License Agreement) where the contributor gives permission for the
project to use the contributions and relicense them in the future. E.g.,
Ubuntu [1].

[1]:
[https://www.ubuntu.com/legal/contributors](https://www.ubuntu.com/legal/contributors)

~~~
bjpbakker
My understanding is a bit different, but also not a lawyer.

> going from MIT to GPL is fine, but GPL to MIT is not

AFAIK both are _not_ fine, eapecially because the licenses are totally
incompatible.

When you publish a patch under a certain license (that of the project at the
moment of the contribution), you _only_ allow using your code under that
license. This is why dual licensing is a thing.

Except when you sign a CLA - mostly used by companies to gain copyright over
your work. In that case the company can do whatever they want - even charge
you later to use your own code.

~~~
codetrotter
> AFAIK both are _not_ fine, eapecially because the licenses are totally
> incompatible.

MIT licensed code can be relicensed under GPL with or without modification to
the code. It is only the other way around that won’t work. The reason for this
are the specific demands made in each license.

See [https://www.gnu.org/licenses/license-
list.en.html#GPLCompati...](https://www.gnu.org/licenses/license-
list.en.html#GPLCompatibleLicenses) where the Expat license is listed as
compatible. The Expat license is the same license that is usually referred to
as the MIT license.

Also
[https://en.wikipedia.org/wiki/MIT_License](https://en.wikipedia.org/wiki/MIT_License):

> The MIT license is also compatible with many copyleft licenses, such as the
> GNU General Public License (GPL); MIT licensed software can be integrated
> into GPL software, but not the other way around

IANAL.

Personally I encourage people to prefer the ISC/BSD/MIT family of license over
GPL, but anyone that is set on using a GPL license is within their rights to
do so for code derviative of said licenses (and several others as listed in
the above linked list of GPL compatible licenses).

~~~
gmfawcett
Possibly true... but wehther it can be done without modification to the code
is a separate issue from whether a license change can be made without the
consent of all contributors.

~~~
codetrotter
What I am saying is that anyone can take MIT licensed code and re-release it
as GPL licensed code. That includes anyone of the author without consent from
the other authors, or even someone who was not an original author.
Specifically because such a change does not violate the terms of the MIT
license. Whereas for going the other direction; GPL -> MIT you need consent
from all authors (either directly or via a CLA that permits such a change of
license).

------
mukuro
I like how many modules are designed to work in "immediate mode", it makes
playing around with stuff very easy and satisfying.

------
pure-awesome
Mud is an odd choice of name for a component of a graphical games engine,
given that a MUD is a Multi-User Dungeon: the old-school style text-only
MMORPG. (There are still a few active ones such as Alter Aeon and Miriani).

~~~
justaguyinspace
I immediately thought of MUD's as well. There's an active community on Reddit
and still many hundreds (maybe thousands) online and playable!

------
tachyonbeam
If your game engine supports multiple scripting languages, including one that
is graph-based, maybe it’s not that “thin” anymore.

------
gitgud
Looks very interesting, but not what I expected a "thin" game engine to be, as
it seems fully featured; Obj importer, physics, UI components and sound
capabilities.

~~~
shezi
The second row of the main page states this: "The first concern of toy is to
bring the thinnest and simplest stack of technology for making games directly
from C++, instead of focusing on a monolithic editor, or insulating the user
from the core systems."

So I think this is "thin and wide", instead of "thin and small". Having all
the components you need and having them directly accessible counts as thin in
my opinion.

~~~
gitgud
Fair enough, my interpretation of a thin game engine is a thin abstraction
over the mechanics of the game... but now that I think about it, this is
exactly that...

------
skocznymroczny
Tried it on my 2016 Macbook Pro. Has some performance issues, I don't know how
many exactly, but I'd say I'm getting around 10 FPS or less.

~~~
hugoamnov
The PBR pipeline of toy is not well optimized yet: I'll have more time to
tackle this issue now that the heavy lifting work has been done !

Framerates are much better in the non-web version somehow: I suspect some
unnecessary texture sampling ops are to blame, but I need to investigate.

Resizing the window to a smaller helps greatly improve the framerate, which
tends to show that the bottleneck is in the fragment shaders.

------
adiusmus
Engine looks good. Open source needs more projects like this.

That GPL3 in the license.txt is a fun document full of dark places where less
experienced adventurers might get eaten by a grue. Certainly makes it easier
for plenty of interesting times and exciting quicksand sidequests for those
without a suitable guide.

------
S-E-P
Holy crap, yeah... "thin" huh. Might want to define your terms lol

But for real, this looks great, I'll poke around it a bit more on the weekend,
but it looks pretty darn good as it stands

------
dandigangi
Those demos were amazing. Makes me want to learn C++ instead of Go. :)

------
cjohansson
Wow impressive, wish you the best of luck with this project

------
zwaps
Outstanding concept, I like the thin&wide idea.

