Hacker News new | past | comments | ask | show | jobs | submit login

> Kudos to the OP...I wish more graphics programmers did this.

In my experience this mostly happens when a game programmers are switching jobs. Compared to the open source community, or indie community, console game developers rarely publicize their work. To be fair, most of them are under NDA and under a time crunch.

> what is the equivalent to "Rails"

Unity... its "Rails" for game development in general. You can do simple things quickly, and you can dig deeper into shaders and (if you have the commercial version) some advanced visual effects. Of course its not a substitute for writing your own, but unlike writing your own engine, you might actually finish a project with Unity :-)




> To be fair, most of them are under NDA and under a time crunch.

Notable exception being of course ID / Carmack, who open source their engine after a number of years. <3


I have my doubts that idTech5 will ever be GPL'd


Unity is great for rapid development but it is a very poor model to learn from.

Riddled with terrible amateur mistakes, awful design choices and some truly embarrassing bugs. The overhead is huge and the respect for memory and performance is really far from what I've seen working on in-house code or with popular engines.

The editor however is very finished and if you want to make a game rather than learn its definitely the way to go.


I came to Unity from a background as a professional engine and graphics programmer, and initially I also twisted my nose, always muttering 'i could do this better if i had the time'. But once I got over that and realized I'll never have the time by myself, I found Unity to be actually well designed, embracing the component based organization that has become an industry standard, with a well thought out API. Its not without bugs, but nothing I would call amateurish or embarrassing. These days they have (IMHO) some of the best engineers in the industry improving their engine. Thats how they extract money from mostly satisfied customers ever couple of years for upgrades.

There is good bit of overhead from the Mono .NET scripting runtime, which is never going to be as optimal as (hard to write correctly) native code, but then again its light years compared to most game scripting designs. I've also seen some in-house AAA engines, and expensive licensed engines with the same performance and memory issues. Thats why they hire people like AO to beat an engine into shape.

Do you have any links or references to substantiate "amateur mistakes, awful design choices and some truly embarrassing bugs"?

Granted, one embarrassing thing about Unity is the infamous and prolonged lack of any viable built-in UI solution.


the most obvious bug problem i had was with localisation (i've heard this is fixed but not updated yet) where it constantly returned en-US. this is pretty embarassing imo... it shouldn't be possible to ship in this state and when someone raises the issue - imo you fix your build process so it can't happen again. that might be a big ask but its not unreasonable imo...

i had some real issues with the physics not being deterministic or handling the most common edge cases like high speed objects with thin colliders. i'm inclined not to blame PhysX... tbh part of this is poor game design on our part that it was a problem. we should know better than to want to rely on deterministic physics...

i don't think they have particularly implemented components well. but that can be personal taste - everything having a transform is reasonable but the implementation of transform itself i find terrifying and confusing. it seems to really be an elaborate tree thing containing the whole hierarchy...

if i want to iterate over all of the components of a given type i have to use some scary looking functions with 'find' in their name which suggest to me not really understanding the implementation benefits of components...

scales live in the matrices...

the maths library is missing lots of common things and is messy (eg. vector3.lerp vs. mathf.lerp) some of this is because c# makes performant syntactic sugar hard with its lack of clean non-temporary references (you can use boxing but it is, in theory at least, slow)

the random number generator is not very good - maybe its a mersenne twister or something suitably complex but the results are easily beaten with the usual LCGs (which have their own classic problems).

the game object interface is not very complete. where are get and set position? i apply them to the transform? does it cache this? in short my confidence is broken when something like moving an object is handled poorly - its a classic case of something you often want to cache until the next frame and imo that should be a clear part of the entity/game object system not something you have to investigate or write yourself. i find myself writing functions to get lists of children - finding that including self as a child is vague and ambiguous in the built in functions and so make aliases for them so i don't have to get confused by that... find parents and children requires going through the transform? that is - to me - severely broken encapsulation. forget the class keyword - the spirit of OO is worth following imo (if not the die hard 'everything is an object' approach).

the overheads of .net are there but they do not cause me a problem afaik.

all my problems can be summed up as 'i don't like writing this code i always have to write for any game - why isn't it in your engine already? i would have put it there.'

the editor is really good i can't say that enough. its a small sentence but the implications are enormous... its what makes unity so good for making things quickly.

really as an argument that is super significant... making tools regardless of how is enormously time consuming compared to working around the issues i describe.

i've worked at 'AAA' studios - some of them are pretty appalling too. lots of programmer wankfest code for 'performance' which is completely unjustified if you go and measure it... tbh i'm embarassed with the state of gamedevs. i stayed out of the industry for a long time (my fault) assuming i wasn't good enough - when i finally got in the most overwhelming lesson was that the quality bar is much lower than i could have imagined... even in the engine, rendering, audio etc. specialist areas...


i forgot to mention terrible iteration time on device and lack of reasonable control over update order... both of which have conspired to waste a considerable amount of my time this morning :)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: