Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon
10. December 2018


The book Game Engine Black Book Doom was just released by Fabien Sanglard just in time for the 25th anniversary of the release of Doom.  The book, with forwards by John Carmack and Dave Taylor, is an in-depth look at the details and techniques that went in to creating the classic game Doom.  In addition to dissecting the code in the idTech game engine, the book looks at the hardware and software of the day as well as a details of porting to a variety of different consoles.

Details from the author’s homepage:

From November 2017 to November 2018, it took one year to complete. Both John Carmack and Dave Taylor kindly wrote forewords. The result is 427 pages, full color, to describe in great detail the PCs of the era (Intel 80486, VESA Local BUS, Dos Extenders, Watcom Compiler, ...), the NeXT hardware (and especially the NeXTStation TurboColor), the engine, and the console ports to the Jaguar, Sega 32X, Super Nintendo, Sony Playstation, 3DO, and Sega Saturn.


I wish the paper version could have been priced lower. A black and white version would have been cheaper ($39.00) but given the many screenshots and drawings, readability would have suffered. I tried to look around but all printers gave me roughly the same price for a 400+ pages full color book. If anybody has an idea to lower the price I will listen carefully.


The book is available in print form on Amazon, as well as on Google in DRM free e-book form.

GameDev News Programming


27. November 2018


One of the biggest challenges for game developers working with Unity is dealing with the garbage collection.  The current system they use, Boehm–Demers–Weiser garbage collector drops everything when memory management occurs, which can lead to framerate slowdowns until the garbage collector is done.  In an attempt to improve this situation, Unity have implemented Incremental Garbage collection in the most current alpha of Unity 2019.1.  Essentially Unity attempts to split memory collection across multiple frames to minimize the impact over all to performance.

Details from the Unity blog:

Enter Incremental Garbage Collection. With Incremental GC, we still use the same Boehm–Demers–Weiser GC, but we run it in an incremental mode, which allows it to split its work into multiple slices. So instead of having a single long interruption of your program’s execution to allow the GC to do its work, you can have multiple, much shorter interruptions. While this will not make the GC faster overall, it can significantly reduce the problem of GC spikes breaking the smoothness of the animation by distributing the workload over multiple frames.

There are however downsides to this approach including greater overhead and possible performance issues if your memory changes during collection.

If you enable incremental GC, the garbage collector will split up the garbage collection work across multiple operations, which can then be distributed across multiple frames. We hope that in most cases where GC spikes were an issue, this will mitigate the symptoms. But Unity content is extremely diverse and can behave in very different ways – and it’s likely that there are cases where incremental GC may not be beneficial.

Specifically, when incremental GC breaks up its work, the part which it breaks up is the marking phase, in which it scans all managed objects to find which other objects they reference, to track which objects are still in use. This assumes that most of the references between objects don’t change between slices of work. When they do change, the objects which have been changed need to be scanned again in the next iteration. This can cause a situation where incremental collection never finishes because it will always add more work to do – in this case, the GC will fall back to doing a full, non-incremental collection. It’s easy to create artificial test cases changing all the references all the time, where incremental GC will perform worse than non-incremental GC.

Also, when using incremental GC, Unity needs to generate additional code (known as write barriers) to inform the GC whenever a reference has changed (so the GC will know if it needs to rescan an object). This adds some overhead when changing references which can have a measurable performance impact in some managed code.

For more information on incremental garbage collection, including step by step instructions on how to enable it, be sure to check out the following video, also embedded below.

GameDev News Programming


15. October 2018


The academy award winning book Physically Based Rendering from Theory to Implementation 3rd Edition is now available free online in it’s entirety at http://www.pbr-book.org/.  This book is hugely important to the game and film industry as this is where the expression Physically Based Rendering (PBR) was coined, and it is the underlying rendering technology behind every major modern 3D game engine.

Description of PBR 3rd Edition from the book homepage:

Physically Based Rendering, Third Edition describes both the mathematical theory behind a modern photorealistic rendering system as well as its practical implementation. A method known as “literate programming” combines human-readable documentation and source code into a single reference that is specifically designed to aid comprehension. Through the ideas and software in this book, you will learn to design and employ a full-featured rendering system for creating stunning imagery.

This new edition greatly refines its best-selling predecessor by adding sections on bidirectional light transport; stochastic progressive photon mapping; a significantly-improved subsurface scattering implementation; numerical robustness issues in ray-object intersection; microfacet reflection models; realistic camera models; and much more. These updates reflect the current state-of-the-art technology, and along with the lucid pairing of text and code, ensure the book's leading position as a reference text for those working in rendering.

The author team of Matt Pharr, Greg Humphreys, and Pat Hanrahan garnered a 2014 Academy Award for Scientific and Technical Achievement from the Academy of Motion Picture Arts and Sciences based on the knowledge shared in the first and second editions of the book this book. The Academy called the book a “widely adopted practical roadmap for most physically based shading and lighting systems used in film production.”

Additionally you can still buy print (and digital) copies on Amazon via this affiliate link, should you desire the feeling of paper in your hands.  This is not an easy text, and isn’t required reading for everyone, but if you are working on rendering technology or want a peek behind the curtain this is definitely a book you should check out today.

Click here to read the book now.

GameDev News Programming


5. October 2018


During my recent MagicaVoxel video I mentioned that this application deserves a place on my “Top 10 free game development tools” list.  Then I realized I’d never created such a list, so now I have!  This is a collection of 10 free (as in money, not freedom, although many are open source as well) tools that all game developers should download, especially if money is tight!  This list is applications only, so does not include game engines, frameworks or libraries.  Beyond the top 10, there are a few honourable mentions that just missed the list.  Let me know in the comments below if you have an additional suggestion or disagree with my choices!

10. Inkscape

9. git

8. DragonBones

7. Krita

6. Tiled

5. Paint.NET

4. MagicaVoxel

3. Audacity

2. Visual Studio Code

1. Blender


Honourable Mentions

GIMP

TexturePacker

Sculptris

Aseprite

Gravit Designer


The Video

Art General Design Programming


26. September 2018


SKIP, previously known as Reflex, is a general purpose programming language developed as a research project at Facebook over the last 3 years.  Facebook have finished development and authorized the language lead developer to release the project as open source.  SKIP is available on Github under the MIT source license.

The leader developer made the following Tweet announcing the release today:

image


You can learn more about the language at http://skiplang.com/.  The language can be downloaded as a Docker image, with full installation instructions available here.  There is also a web based playground application for trying out SKIP on the website.  SKIP is described as:

Skip is a general-purpose programming language that tracks side effects to provide caching with reactive invalidation, ergonomic and safe parallelism, and efficient garbage collection. Skip is statically typed and ahead-of-time compiled using LLVM to produce highly optimized executables.

Programming News


GFS On YouTube

See More Tutorials on DevGa.me!

Month List