Monthly Archives: August 2023

Devlog: Approximate Humans

Last week was all about approximating humans.

Monday was roughly my experimentation with Albinus. 3D model of Albinus where his skin matches the white marble columns in the backgroundI named him that because he was a porcelain-white 3D base model I found and used essentially as a dressmaker’s dummy while I developed my skills in making 3D clothing and texturing.  I modeled tunica et calcei (a tunic and shoes), then gave him some bones and animated him.  Oh, and gave him hair and eyeballs.  My first Pompeiian citizen, except that I hadn’t made the model and he was a color that would make plain marble look tan.  Next, I decided to whip up a UV atlas.  If you’re not familiar, that’s basically like a single image that encompasses your color palette and can be used to add those colors to everything rather than having to make separate materials for every color on every object.  It’s an efficiency thing.  That sent me down rabbit hole after rabbit hole.  What pigments did they use in Pompeii murals?  What colors of dye could be made with plants native to the region?  What were the most common metals?

But perhaps the most important question that came up in thinking about color was approximating the skin colors that would be seen in the forum.  The light end of the skin color spectrum would be present because the Romans had conquered all the way into Britain and there was significant trade and warfare with Germanic tribes.  That meant pale, light-skinned enslaved people, merchants, and craftspeople.  But they also had reached Aethiopia, and in fact aethiopicus might be used to refer to someone with the darkest end of the human skin tone spectrum (they had lots of words to describe dark skin, so clearly it wasn’t an uncommon sight).  And as one author I found put it, the Mediterranean was “a highway, not a barrier” and travel back and forth to Africa was very common.

Of course, there’s also the fact that the Mediterranean is known for being kinda sunny, and that darkens skin…but on the other hand, beauty standards favored lighter skin enough that wealthy women applied what essentially amounted to lead paint to their skin in order to lighten it–especially wealthy women.  So that’s the historical accuracy part.

The flip side is that I’m making a game that will be played by exactly zero ancient Romans, but (hopefully many) modern Americans who have inherited a cultural picture of the time illustrated primarily by unpainted marble statues.  Associating wealth and power with lighter skin might be slightly more accurate historically, but not for the reasons my players would unconsciously assume.  The average game player will see a light-skinned person and think, “Oh, that person is white,” not “Oh, that person is slathered in lead.”  And that’s super problematic because “white” as a racial group didn’t exist then.  Without going into it too much, the Romans basically categorized people not by skin color but by place of origin.

I’m still working on how I’ll do that part of the color selection and do it responsibly, respectfully, and anti-racist…ly.  8 images of Albinus, each with a different skin tone, labeled with the Monk scaleI was referred to a couple of web pages that have some great resources about the intersection of what we know of the ancient world, ideas of “race” or other categorizing of humans, the modern world and what ideas it has received about the ancient world, and so forth.  The first was “Who Were the Romans, Part IV: The Color of Purple” by Bret Devereaux.   The other was Rebecca Kennedy’s “Race/Ethnicity Bibliography” which as so many references I’m going to be reading forever, give or take.  There is so much nuance, but video games are essentially an exercise in oversimplification, so doing it well is going to be a challenge.

I learned about the Monk Skin Tone Scale, developed in part to reflect a broader range of human skin colors than the older but widely referenced Fitzpatrick scale, which was mainly developed to study tanning of light skin.  I think I’m going to have the typical NPC be darker than the center of the range, but still represent most of the range.  The colors will definitely be randomized so both enslaved people and those with power and wealth can be of any skin color.

Anyway, all that to say I’ve got a draft of hopefully somewhat accurate Pompeiian colors.3D model with misshapen buttocks and hands

Finally, I’d noted that the base model I used for Albinus was, well, kinda jacked.  I described him to my cousin as having a physique that made Henry Cavill look kinda skinny.  Because of this, I thought I’d I’d work on my own 3D human character model–my first!  What I learned doing that is first that I’m starting to get comfortable with the basic Blender commands, and second, that I apparently have never seen human buttocks in my entire life.  I kept thinking, “Surely that’s not what a butt looks like, is it?  I don’t even know any more.”

A reasonably humanoid shaped low-poly characterI tried a second 3D model using a different reference image, and it worked much better.  Part of that is no doubt experience, but I also think it’s because the second reference image was a synthetic human, a digital model of some sort, not a photograph of an actual one who might have a slightly different posture in side view than front view. Weirdly, though, even the reference photos of the digital model had nipples that didn’t line up between the two pictures.  (When I mentioned this to my best friend, he assured me not to worry as this is entirely normal.  I had to explain to him that no, I meant the model’s left nipple was at a different elevation from the floor than his left nipple seen from the side.)

Giving him bones and an animation and I realized he had webbed arms.  Whatever.  Work in progress.  But at least the second one isn’t, as my best friend called my video test of the first one, “a thing of nightmares.”  I call that progress.  Progress would also include clothes.

 

 

Leave a Comment

Filed under Uncategorized

Devlog: Pompeii Smoothie

Last week, I decided to start over from scratch on my Pompeii game project. One of the reasons I did so was because of how much learning I’d done the first time around and felt there were some efficiencies that could be had by scrapping the various pieces of ‘skill debt’ I’d accumulated. I was more correct than I thought.

I started by laying down my map and verifying it was the proper scale. It may not quite be as accurate as last time–maybe–but the maximum variance I calculated was 1.3% too small. Which, given that it’s supposed to be for a game is probably fine. I want to give the impression of the city’s size; one percent isn’t going to meaningfully impact that impression.

3D model in Blender showing materials applied to different parts (e.g., wood to the door, painted plaster to the wall)Then I retextured all of my models in Blender. This time, however, I knew how many models I had that essentially used the same textures, and knew more about texturing. First, I went through all the highly common textures and made sure that either I had made them, bought them, or could verify that they were licensed as free to use for commercial projects. (More recent realization: I had been looking specifically for Creative Commons “CC0” license, which is essentially public domain, but I’ve expanded to “CC-BY” which has a lot more options and requires only giving credit, which I usually overdo anyway.)

Once I had all my texture images made, improved, or had the rights sorted, I combined them into one square image, pulled that into Blender, named a material something slightly more generic, and then appended that material into all of my models. This meant that when pulled into Unity, it would only make one texture and one material. Previously, every face of every shape had been a separate texture and model. That cleaned up a ton of duplication that existed in the old project. Well, after I used my fancy new texture to retexture everything I’d modeled.

Game view screenshot of the Temple of ApolloI’d also picked up other Blender tricks in the meantime, and a little architectural terminology, so I was able to improve my Doric column a little, made some improvements to a plinth (used with statues and in Ionic and Corinthian columns but typically not Doric), made some stairs, added a little detail to the pediment prefab, and to the entablature to clearly differentiate the architrave, frieze, and cornice, and built a set of stairs. I also made a textured single and double roof prefab in Blender that I think will save time in the long run at the loss of a small amount of flexibility over my previous roofing method.

Game view screenshot showing the Temple of Jupiter and two nearby triumphal archesThese improvements made rebuilding the Temple of Jupiter and the first run at building the Temple of Apollo (a) faster, (b) more unique and historically accurate than the resized “ancient temple” model I had, and (c) looks much better. I do wish, though, that Unity had a way of making its rectangular prism (“cube”) into something trapezoidal, given that not everything is at 90 degree angles in this city. The entablatures were also useful in adding a little detail to my previous “block with arched doorway” model to be a reasonable approximation of a triumphal arch.

Unity editor view screenshot of the Sanctuary of the Public Lares and the Temple of Mercury.This gave me a taste for making more custom pieces in Blender. For example, the Sanctuary of the Public Lares has a very large half-barrel shaped nook in the back wall, and the Temple of Mercury has kind of a small door in a very large screening wall which doesn’t work well by scaling a regular door piece.

At this point, I’ve basically redone the last month’s worth of work in about three days, done it more efficiently and effectively, and set myself up to do the rest of the city with greater detail and less memory usage. Region 7 (the forum and surrounding neighborhood) is basically roughed out–at least at a “low poly” kind of level of detail. Enough that there are various places to go, enough streets to get a little bit lost in at first, places where shopkeeper NPCs can stand, and it’s all reasonably historically accurate. The doorways may not be exactly where doorways really were, but the approximate ratio of shops, homes, workshops, and blank wall is correct, for example.

I will definitely be using more Blender in the coming weeks (my best friend noted I’d mentioned Blender so often that he referred to my project as my “Pompeii smoothie”), but I think it’s time to shift to a little bit of coding–specifically setting up my NPCs. The forum isn’t really a forum without people conducting business, right?

Leave a Comment

Filed under Uncategorized

DevLog: I’m Doing This On Purpose

Title Screen of Vengeful Gods, depicting a stylized temple with a sacred flame in the foreground

First, to get it out of the way, I finished Vengeful Gods and made it available on Itch. It’s more of a good luck charm than a traditional game, but if you’ve had one of those days or weeks, you know it’s nice to have something you can do to maybe change your fate. So check it out!

Now on to the topic at hand. I’m trashing Pompeii and starting over from scratch after about a month. And I’m doing it on purpose.

Yes, I know you’re supposed to prototype a game with stand-in objects and half-assed graphics to be sure the game is fun. You’re not supposed to spend a ton of time on the environment until you know you want to develop the game itself.

Walls, doors, and storefronts sketching out the road network of Pompeii

I’m choosing to ignore that advice for a number of reasons:

  • The environment itself is critical to gameplay. I need to get a feel for things like how many shops will you find on a typical street, and how far away is the harbor from the forum?
  • The point of the project is, in part, education. Thus, even the environment itself is the project, without any game attached to it.
  • Doing this is driving me to learn many new skills, and improve efficiency in others, which in itself is a useful outcome. Often the advice about prototyping is to avoid the pitfall of just falling back and doing stuff you enjoy. Working on rebuilding the city is actually pushing me the other direction.

This leads me to the learning. Hooboy. As I posted recently on Mastodon, my next steps required Sufficient Brain, but the temperature this week has exceeded the Brain Suppression Threshold. Plus, I’d already used up my Strategic Brain Reserve.

Prefab storefronts using simple Unity 3D objectsSince I started the Pompeii reconstruction project, I started learning about Blender. Like, how to move the default cube or look at the other side of it. That’s the level of Blender I was learning. Now I’m creating meshes, doing UV unwraps, adjusting texturing with images, and exporting variations for use in Unity. And I am not a visual arts kind of person, so 3D modeling and texturing was a huge drain. I would now say that Blender is, in a sense, “not for me.” However, I can use it to do quite a few useful things that I couldn’t do before. Choosing to rebuild Pompeii yet again will push me to make it all my own assets (or pretty darned close), at least for the built environment.A much improved storefront in Blender with sign, display table, doors, and other details

Related to this, I have picked up more skills in Photoshop, Gimp, and even learned a little about photogrammetry in service of the texturing and making of 3D meshes. (Not to mention tidbits of archaeology and geology as I answered questions like, “If they were repaving the forum and switching from tuff to travertine when Vesuvius erupted, are those close enough to the same color that I could use the same texture, and does it really matter…?”)

I learned about new sources for finding free textures, and more about plain image textures vs. normal and texture maps (though I’m still a neophyte in that area).

A series of wall segments, only some of which are touching the groundI also picked up and learned how to use my own assets in Auto Fence & Wall Builder by Two-Click Tools. Having figured out some refinements to my first attempts, I’ll be able to use it more like a tool and less like an experiment, which will increase my building efficiency.

Related to that, but not exactly “learning” in the same sense, I now have a better idea of a lot of things, such as what information is available about Pompeii, and what balance I’m comfortable with between historical accuracy and game-like oversimplification, and that I want to use Arabic numbers for organizing my hierarchy rather than Roman numerals. (I’ll still stick with Latin for the named prefabs, though.) This, too, will decrease the messiness of the city, and given how big “city” is as a project, that’s important.  I’ll model important buildings as their own thing, and miscellaneous blocks of shops and homes with more randomness and abstraction.

Lastly, I learned more about Git. Something went wrong and the Pompeii scene I’d been working on appeared blank. I was aided by other devs on Mastodon to convert previously invisible-to-me dangling blobs into a recovered commit in a new fork with git, but as one of my cousins observed, that sounded like I was maybe having a stroke. After more investigation, it looked like maybe the project hadn’t been set up 100% correctly and my gitignore wasn’t ignoring everything I thought it was and more little problems cropped up.

With all of that being new since I started building Pompeii, I think I can pull Bionic Man: I can rebuild it. I have the technology. Better than it was before. Better, stronger, faster.

And that is why I am choosing to scrap my work of the last month, ignore conventional wisdom regarding prototyping, and starting with a fresh project.

Leave a Comment

Filed under Uncategorized