Dev Dispatch #03: The Logic Behind the Genesis Guardians
By Tom Bolton, Technical Game Designer
Tom here, principal technical designer on Nyan Heroes. I heard rumors you guys liked NFTs and Mechs and so I thought some of you might be interested to learn a bit about how the 11,111 unique Genesis Guardians that make up the Genesis drop were actually generated.
After toying with the idea of pre-rendering all the attachments and then getting a photoshop ninja to generate all the images using some scripts and filters, the decision was made to go full 3D in order to get better quality images that had the correct reflections baked into them.
My focus in this mission was therefore to write the logic that generated the 11,111 Guardians, and then ultimately to render the images.
Of course, this spectacular mech drop was very much a team effort involving a multi-disciplinary crew of talented artists, riggers, animators, marketing specialists, Web3 specialists, producers and stakeholders of all levels.
So how did I approach this task? First up, having discussed the brief with the team and figured out some of the initial challenges involved, my approach was to set up a level in our Unreal Engine 5 editor, and then dynamically spawn in all the components as and when they were needed.
Logic-wise, this was a winner, but visually it was not quite what we had in mind. Another consideration that came up was that the artists needed a way to visualize the scene to set up the various poses, and also set up various cameras for different guardians.
So, the next approach was to pre-attach all the head, back, and arm attachments to each of the guardians.
With a basic map in place featuring a single guardian in the default T-pose I wired up a way to manually switch all the attachments, along with some other debug/testing commands. I did this using blueprints, Unreal’s visual scripting language.
Next up is the handling of the random generation logic in blueprints. What I had in mind involved saving the results and then exporting each image’s attributes into a text file used to generate the associated metadata (that each NFT has to describe its attributes). However, as it turns out, it’s not actually possible to write text files with blueprints (not without C++ support at least). My proposal was then to generate the Guardians and their random attributes in trusty old Excel, export this to a CSV file, and then import this into Unreal as data structure.
In the main level blueprint, I then grabbed each one of these lines one by one, and used the information to set up each guardian as required.
With the main attachment switching logic now all but figured out, the team continued experimenting with new poses. Each guardian has two: one for the profile picture (the NFT itself), and one action shot (that is used for the wallpapers). Each shot its own level, containing its own set of backgrounds, lighting setups and cameras — think of it as a photo shooting scene, but with mechs instead of glamorous models. With the four Guardians in the Genesis drop, that made a total of eight levels to deal with (plus a couple for additional lights and cameras).
I then imported these into the persistent level running the logic, and then set them up to be loaded when needed.
After everything in the scene is set up, the correct background, lighting, cameras, attachments, pose and cattoos selected we get to the business end of the logic: the taking of the high resolution screenshot:
With the 22,222 images generated, the final step of the process was for Max himself to crop the images and add the logos, after which they were uploaded along with their metadata to Arweave, a perma storage blockchain host.
Here is one of the 11,111 final NFTs. This one’s extra special to me as each of the Nyan crew was given one, and this rare Medic M.E.G.A.M.I. is my very own!
You’re all welcome to right-click and save these, but in return all I ask is to please take it easy with me when you see me on the battlefield!
Until next time,