Gamasutra is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.

Gamasutra: The Art & Business of Making Gamesspacer
View All     RSS
October 19, 2019
arrowPress Releases

If you enjoy reading this site, you might also want to check out these UBM Tech sites:


Niklas Gray's Blog   Expert Blogs


Niklas Gray is a 15 year veteran in the game development industry. He was a lead programmer at Grin for six years together with Tobias Persson. After Grin, they created the Bitsquid game engine which was acquired by Autodesk in 2014. He's currently working on new tech at Our Machinery together with Tobias Persson and Tricia Gray.

Niklas is a strong advocate for openness and information sharing in the gamedev community. We're all in this together.


Expert Blogs

Posted by Niklas Gray on Tue, 01 Oct 2019 10:35:00 EDT in Programming
How to efficiently store arrays in arrays.

Posted by Niklas Gray on Thu, 15 Aug 2019 10:14:00 EDT in Programming
Shows how we can add an index to bulk data to accelerate queries.

Posted by Niklas Gray on Wed, 24 Jul 2019 10:53:00 EDT in Programming
Examines the options for storing object arrays.

Posted by Niklas Gray on Tue, 11 Jun 2019 11:18:00 EDT in Programming
Discusses strategies for synchronizing a data-oriented ECS with an external system that keeps state.

Posted by Niklas Gray on Thu, 18 Apr 2019 10:29:00 EDT in Programming
A comparison of the main ways to reference objects: names and GUIDs.

Posted by Niklas Gray on Tue, 15 Jan 2019 10:33:00 EST in Programming
A description of how we do UI localization in The Machinery.

Niklas Gray's Comments

Comment In: [Blog - 04/18/2019 - 10:29]

Yes, that is essentially what ...

Yes, that is essentially what we do. Even though the underlying reference system is based on GUIDs, we display references as names when object have names . r n r nFrom script we allow reference either by GUID or path. In this case the path isn 't just a visual ...

Comment In: [Blog - 01/15/2019 - 10:33]

Yes, that might work for ...

Yes, that might work for some codebases... in our case we have a lot of raw strings that shouldn 't be localized for things like serialization and hash lookups, so I think TM RAW x wrapping them would be too annoying.

Comment In: [Blog - 11/08/2018 - 10:27]

Thanks r n r nChanges ...

Thanks r n r nChanges are propagated in real-time, but we don 't use publish-subscribe, instead it is a polling model. I.e. every frame B will ask are there any changes to the data model . If there are changes, the view is updated. In the case where B has ...

Comment In: [Blog - 09/27/2017 - 10:28]

Interesting questions I 'll do ...

Interesting questions I 'll do my best to answer: r n r n Modifications to the PR can be a whole range of things: coding standard violations, spelling errors, inefficient algorithms, incomplete documentation, missing const, etc. I 'd say the most serious ones were the ones where a concept or ...

Comment In: [Blog - 06/26/2017 - 11:24]

Yes, it 's true that ...

Yes, it 's true that the last code doesn 't let us distinguish between a non-existing bone and a bone with length zero. But there are cases where we don 't need to make that distinction. If we do, we can write the slightly more cumbersome code that checks the ...

Comment In: [Blog - 05/17/2017 - 10:18]

You could do everything with ...

You could do everything with source code and static linking, but that creates other problems. It means that in order to add new functionality a plugin to the product, I need to have a development environment setup and recompile the application. We envision a setup where for example an artist ...