
Halley: Lightweight Game Engine Written in C++14 - ingve
https://github.com/amzeratul/halley
======
haolez
I grew up with the author of this library. He was absurdly intelligent. He
started studying quantum physics in high school because he was bored with the
“normal” content of our classes. And, of course, he always dreamed on working
in the games industry :)

~~~
CreepGin
Hmm maybe your friend has forsaken physics. He did not implement any physics
in his engine! (not yet?) =D

~~~
haolez
He has a famous blog post somewhere teaching beginners how to do physics on 2D
platformers.

~~~
leshow
Link?

~~~
azhenley
I'm not the OP, but here you go:
[http://higherorderfun.com/blog/2012/05/20/the-guide-to-
imple...](http://higherorderfun.com/blog/2012/05/20/the-guide-to-
implementing-2d-platformers/)

It looks quite nice.

~~~
Impossible
This is probably the most comprehensive single written guide to how
platformers are implemented. Definitely worth a read.

------
lettergram
For those interested in what was built with build with this engine, in the
docs it says wargroove:

[https://wargroove.com/](https://wargroove.com/)

Definitely, a 2D game engine, but the game looks fun enough.

~~~
all2
As a sibling to this post said, it reminds me of Advanced Wars (Sturm!), and
also a little of Tactics Ogre.

I love the art style quite a lot.

~~~
mattnewton
This is basicaly a huge love letter to advance wars. The gameplay of capturing
income producing buildings, then making unit types, and the units themselves
all map directly to advance wars units.

There are a few key innovations (COs as units on the map, archers can fire and
move in the same turn (which are more like rangers from Warbits than artillery
because they are infantry), some units have abilities that cost money, units
have crit conditions, and the building capture mechanic). But the basic loop
is there: Swordsman are infantry, pikemen are heavy infantry/mech, dogs are
recons, knights are tanks, mages are anti air guns, trebuchets are rockets and
ballista are missles, etc etc. Terrain bonuses are similar, costs are tweaked,
but it plays exactly like advance wars.

And that is a really good thing. Can’t recomend the game enough.

~~~
eropple
Eh--I tried a little Wargroove but I thought its maps were pretty unbalanced.
It became really easy to end up in a meat-grinder fight where in Advance Wars
you had to _mess up_ to find yourself in that state.

The art style (particularly the human portraits) also did not work for me.

~~~
mattnewton
I mean, the reason there was less meat grinding in advance wars was broken CO
powers IMO. I’m more of a fan of the wargroove balance and slow pushes.

------
ArtWomb
If nothing else, providing a clean implementation of a working Entity system
will be a great boon to those learning gamedev. Kudos!

~~~
gmueckl
I found entt to be a good, reasonably approachable entity system for C++. It
written in a modern, very generic style, but I don't find it to be obscure.

[https://github.com/skypjack/entt](https://github.com/skypjack/entt)

~~~
pgruenbacher
yep its great and very active

------
forrestthewoods
This is great.

I usually roll my eyes at game-engine posts. But seeing an open source engine
that has successfully shipped on multiple platforms, including console, is
fantastic.

------
Const-me
Video playback is inefficient.

The code uses media foundation for decode (this part is good), but then it
downloads NV12 data to system RAM, then uploads back to VRAM.

Better approach is making it work entirely on GPU. The simple way to implement
that is to drop Windows 7 support already, and use IMFMediaEngine interface.
That object decodes video directly into D3D 11 textures, with very little work
required, doesn't even need any custom shaders.

Here’s a working example: [https://github.com/Const-
me/vis_avs_dx/tree/master/avs_dx/Dx...](https://github.com/Const-
me/vis_avs_dx/tree/master/avs_dx/DxVisuals/Effects/Video)

------
soup10
its a 2D engine. (just clarifying because it wasn't immediately clear)

~~~
chooseaname
Even better!

~~~
feiss
well said! +1

------
johnisgood
Does Starbound use this engine?

~~~
aarpmcgee
I don't think so. I believe the Starbound development was led by someone else.
This is an interesting article written by that person.
[https://kyren.github.io/2018/09/14/rustconf-
talk.html](https://kyren.github.io/2018/09/14/rustconf-talk.html)

~~~
johnisgood
> Chucklefish games that are made 100% in house: Starbound obviously, also
> Wargroove (made with the generic C++ engine halley, but the main dev for the
> engine is the main dev of Wargroove).

Hmm...

------
minasss
link to samples is broken (octo-cat 404) [https://github.com/amzeratul/halley-
samples](https://github.com/amzeratul/halley-samples)

~~~
irq-1
[https://github.com/galegosimpatico/halley-
samples](https://github.com/galegosimpatico/halley-samples)

~~~
mmkos
Doesn't compile - header files are missing from the project.

------
xpaulbettsx
I like it but having to fiddle with dependencies makes it harder to get
started, maybe submodule them?

