{"id":35832,"date":"2018-07-27T20:07:00","date_gmt":"2018-07-27T20:07:00","guid":{"rendered":"http:\/\/www.gamasutra.com\/view\/news\/323119"},"modified":"2018-07-27T20:07:00","modified_gmt":"2018-07-27T20:07:00","slug":"dont-miss-what-no-mans-skys-code-says-about-procedural-generation","status":"publish","type":"post","link":"https:\/\/sickgaming.net\/blog\/2018\/07\/27\/dont-miss-what-no-mans-skys-code-says-about-procedural-generation\/","title":{"rendered":"Don&#8217;t Miss: What No Man&#8217;s Sky&#8217;s code says about procedural generation"},"content":{"rendered":"<p>Greg of 3D Game Dev Blog took a few weeks to dig into the code of <em>No Man\u2019s Sky<\/em> to try and figure out how the game engine created by Hello Games creates each element of an entirely procedurally generated game world.\u00a0<\/p>\n<p>This <a href=\"http:\/\/3dgamedevblog.com\/wordpress\/?p=836\">blog post<\/a> is definitely worth checking out if you\u2019re a dev at all interested in the code that went into procedurally generating nearly every bit of\u00a0content on a multi-planetary scale.\u00a0<\/p>\n<p>The post splits its findings into three main categories: geometry, textures, and animation. The section on geometry is by far the most in-depth and talks mostly about how the game creates creatures, ships, and other models by combining multiple parts from assets with a predetermined chance value.\u00a0<\/p>\n<p>A similar approach is used to procedurally generate the textures and color pallettes used for creatures and planets within the game.\u00a0<\/p>\n<p><img decoding=\"async\" alt=\"An example of randomly generated creatures using &lt;i&gt;No Man's Sky&lt;\/i&gt; assets in an external viewer.\" src=\"http:\/\/www.sickgaming.net\/blog\/wp-content\/uploads\/2018\/07\/dont-miss-what-no-mans-skys-code-says-about-procedural-generation.png\" \/><\/p>\n<p>\u201c&#8230;except [for] designing different model parts, [the game artists] have also provided multiple different textures for each part. So traversing that file in the same fashion with the descriptor file, one can calculate the final diffuse texture of the procedural generated model,\u201d he explains. \u201cAnd here is the even better part. Even if two models are identical geometrywise, they can end up having completely different colors, marks, shapes, etc using those procedurally generated textures.\u201d<\/p>\n<p>The piece-by-piece way\u00a0<em>No Man&#8217;s Sky\u00a0<\/em>generates all its content leaves the door open for Hello Games or modders to add additional model parts post-release and exponentially increase the procedurally generated possibilities. While this might not say much about the current state of the game, Greg explains that this way of content generation speaks volumes about the game engine itself.<\/p>\n<p>&#8220;The mindblowing thing about this generation procedure is that if they had double the number of [artists] working exclusively on [models], the game content (just for the creatures) would be hundreds of times larger,&#8221; he says. &#8220;And this fact alone shows me the capabilities and the potential that <em>NMS<\/em> game engine has.&#8221;<\/p>\n<p>The full post, which includes models rendered in a viewer and a more in-depth explanation of the code behind <em>No Man\u2019s Sky<\/em>, can be found over on the <a href=\"http:\/\/3dgamedevblog.com\/wordpress\/?p=836\">3D Game Dev Blog<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Greg of 3D Game Dev Blog took a few weeks to dig into the code of No Man\u2019s Sky to try and figure out how the game engine created by Hello Games creates each element of an entirely procedurally generated game world.\u00a0 This blog post is definitely worth checking out if you\u2019re a dev at [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":35833,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20],"tags":[],"class_list":["post-35832","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"_links":{"self":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/posts\/35832","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/comments?post=35832"}],"version-history":[{"count":0,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/posts\/35832\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/media\/35833"}],"wp:attachment":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/media?parent=35832"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/categories?post=35832"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/tags?post=35832"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}