Golden Sun Revival chapter 1: Enemy Model Workflow



So for this post I will run through the workflow for how I go about creating the 3d versions of the enemies from Golden Sun. I'm starting with the first game and some of the early enemies that you encounter in the beginning of your adventure. To demonstrate this, I'll be showing the simple Slime enemy. Every jrpg needs its typical generic slime design enemy. This is a very simple concept so it will be easy showing what goes into the 3d creation process. I'll be showing how I model and also the texture techniques used. The workflow will be simple just as the sprite it is based on.

Creating the Base Model with simple shapes





Since this is a lowpoly project and targeted as a console in-game 2003 era asset, I don't have to start with a complicated dense base mesh. No sculpting here, just good old reliable polygonal modeling. First things first is to block out the design using simple shapes. Its important to keep the starting shapes simple as well. While I could start with a cube for the body of the slime, i feel that would be too primitive of a start for this creature. Also I can see that the body is rounder based on the limited angles of the sprite. So the body will start with a Cylinder. I used a 12-sided cylinder to start with and divided it by loops where I think it will deform. Here I will try not to add too many loops just yet. Spikes on its head and back (back of neck?) are triangle shapes but i didn't want to go with a pyramid shape. I can see from the spritework that the spikes should have some soundness as well, so a cone with about 6 vertices will do for now. And of course, the eyeballs are pretty obvious, these will be spheres. I'll start with a smooth sphere with a decent amount of divisions to get it very rounded. This won't be the final sphere being used for the eyes, but since I know the surface of these spheres won't be edited, I'll use a highpoly temporary substitute for now just to get a good representation.

Editing the Base Shapes to match the Concept

In a normal 3d workflow, this is where you would start taking loops, extrusions, and vertices and placing them to match the reference image of the background that you have setup in the viewport. Here one would start the outer detailing in matching the references for the front and side view to create the silhouette of the model, while also maintaining decent edge flow and for this case, keeping the polycount low (more polys will be added/removed in the optimization phase. However, we don't have a front and side reference image of this design to work with. The sprites are taken from a sort of 3/4 perspective for the front and back to add depth. There are no sprites of any enemy that face completely forward, or a 90° side turn. It also doesn't help that official artwork for this game is very scarce and I've only seen official art of the characters and Djinn for the first games. Even the guidebook doesn't have a bestiary of the enemies with 2D art for them. I also cannot draw at all and lack a digital drawing tablet for even a design as simple as this (im only working with mouse and keyboard here, so digital drawing is out of the question). While it would still be a good idea to draw at least a very rough sketch of front and side views I'll will attempt this by doing what I've been practicing for over a year and just eyeballing it. This is what I call Intuitive Reference Modeling, where you try to create a design of a character or other organic model using only normal pictures as reference instead of purposely posed images. With enough basic lowpoly modeling, it can be easy to do this with simple designs.

Keep it Simple while Matching the shape and Silhouette 



This is why we start with simple shapes and limit our loops first. Because if I have to make changes to something like the proportions of the base model, I can do it easily since there isn't a lot of geometry to fumble around with. Doing this with a lot of polys to start with wastes time and often lead to cutting polygons and loops anyways if a mistake needs correcting. It sounds basic but it is fundamental when making any organic 3d model as well as characters. Again I don't have to worry about the eyeballs or even the spikes because the surface of those two shapes will remain static and won't be edited. All I have to worry about when it comes to those details is the size proportions and the location of those details which are easily changed with Scale and Move tools. The body on the other hand will be modeled in its idle pose. Normally you would T-pose or A-pose a model with its limbs outstretched (legs apart, arms straight and held out horizontal, tails or wings straight out uncurved, etc.) This would be because those parts will deform and you want to have limbs straightened in a resting position for easy and efficient rigging. The Slime enemy has no arms and legs. But it should still have a resting pose. The battle sprite shows that the "head" is lowered at most times giving the player an intimidating glare. The head seems like it's lowered when attacking as well. So I'll make sure to model the base shape with the head curved since this is the slime's Resting Pose. I also create a pure black material to apply to the entire model as I work on it for checking the silhouette. I use this black material color and orbit around the model to ensure the shape stays mostly consistent with the design. Next is placing the spikes where they seem correct on the design and scaling them where necessary to make sure they aren't too big or too small. The same goes for the eyeballs, just placing them where they go and scaling where necessary. Slight rotation is also given to produce a subtle tilt.

Optimizing and Adding Level of Detail


Now that the base model is mostly done, it's time to optimize. Again, this is low poly and the target for simple enemies is about under 1000 tris. Here you can see we can afford to add some more polygons and geometry to further refine the model to smooth it out. Because the design is so simple, Level of Detail (LOD) is not such a big concern. LoD is used as a term where you as a modeler will need to decide which parts of the model will have the most polygons. Ideally you want an even LoD on any higher poly dense modern mesh for better UV mapping and maintaining even topology. But this is lowpoly. So the Level of Detail will vary for certain parts of this mesh. The focal point to me of this design is the body (overall shape) and the eyes since they are kind of big. For this reason, I'll bevel and add more loops to round out the body more. Alternatively, I could subdivide the body base making it very round, and then remove loops to lower the high subdivision count while keeping a round shape. So now our primitive cylinder we started out with, is now a smooth rounded shape. For the eyeballs, rather than adding loops, I can simply create another sphere and add loops and sections in the creation tab until it is the roundness that I want it. Then simply scale and replace the sphere i started with. I do the same for the spikes, creating another cone primitive with slightly more vertices at the base to make it smoother. Here I also scale the base of the spike shape smaller to give a better shape how it protrudes from it. The optimization phase is also where you cut or delete any excessive geometry where you don't need. In this case, there isn't much to do but I'll go ahead and delete the bottom faces of the spikes that won't ever be seen. Micro-optimizations like this are common practice when finishing up a model when doing very lowpoly meshes. In this optimization phase, I usually add detail to get as close to the polygon limit as I can. Then, I start reducing any unseen faces, or deleting loops or groups of vertices that aren't contributing to the overall shape. The idea would be that you have a nice silhouette of the finished model that sits around the maximum of the polygon budget for the asset. Here is the model after optimization which clocks in at 980 tris. While i have 20 polygons to spare, i could also maybe reduce a bit more without doing any damage. However it's important to not over optimize. Optimizing does not mean perfecting the model, it is a means of touching up, adding LoD, and discarding the unnecessary.

Laying out Seams and Preparing the UV Map





This phase, much like the others, could have an entire post of its own altogether (multiple even), but the simplicity of this model means that unwrapping the model will be an easy task. Since this is the early 2000s era of 3d enemy model, I'll be using many tricks of the trade for UV optimization. The max texture resolution for enemies shouldn't be higher than 256x256 pixel space. But for the slime, there isn't any crazy detail in the design. Nor are there many multiple parts. So I can easily separate UVs for both the spikes and ovelay them since they are both the same shape, only differing slightly in scale. Both of the eyeballs are unwrapped and overlayed on top of each other since they too are the same symmetrically. This UV overlay trick was used a lot back in the day when parts of a model were symmetrical or multiple parts of the model are duplicated. This saves a good amount of UV space which is essential to a good Texture map. The body is unwrapped and again, this is symmetrical, so the UVs of one side can be mirrored and overlapped. Also like the Level of Detail process, the UVs are scaled in relation to how important they are to the model. The body of the Slime is the biggest part of the model, so it will be scaled up to use the most UV space. The eyes are the second most important focal point of the enemy so the front of the eye will take up a lot of UV space (at the bottom). You will also notice that rather than layout the UVs in a square space, I noticed after mirroring and overlaying UVs, I wouldn't be utilizing the full square, resulting in a lot of wasted negative space. So rather than a 1:1 ratio, I can afford to squeeze the separate UV islands into an efficient 1:2 UV map. So I can reduce and be under the target UV size and get to a 128x256 texture map to use. You will also notice that the eye is unwrapped a bit unconventionally, but that is to define the eyelids of the model since, while the eyeballs are separate disconnected objects, they will still share the body color for the eyelids. This will also make the shading part of the texture painting a bit easier to avoid seams. So we have a decent UV map to work with and under the target resolution as well. Converting to a rectangle 1:2 map won't be possible for all models, but it's important to know it can be done for very simple designs.

Texture Painting Old-school Method


I'll be texturing the slime enemy the way it was done back then. Simply hand painting on the texture map, while checking how it comes out updating the texture within Blender. I am very comfortable working this way since it was how I was taught back when i began 3d modeling. This is considered an outdated method to texturing a model, but it can still be done well and is preferable when doing models with less geometry. Nowadays, you would use a program were you can directly paint on the 3D model to avoid seams and keep a quick painting workflow. But if you layout UVs correctly, seams won't be that much of an issue. I may go more in-depth with the texture painting process in another post but here I will show you through the layers, the process that goes into it. First I separate the UVs by a base color while also taking islands and grouping them onto their own layers for easier editing. Then draw simple details, in this case the eyeballs. Then the most important is the shading which I hand paint to add depth. Painted lighting and shading directly onto the texture was also common back then. It goes hand in hand with vertex colors as well to produce some decent shading effects. For now I won't be using vertex colors, so all the shading and highlights will be painted on other separate layers above the rest of the groups. Next is adding finer details/shading in the higher LoD areas. In this case there aren't any finer details to go off of but filtering also takes place her. Which means adding texture to the flat surface color of each part of the map where necessary to add some detail and reduce the plainness of it. So i have a basic ground dirt-like texture filter for the body, and a grainy noise texture for the spikes. Opacity is given to both of these so that the parameters can be easily adjusted to define a soft or harder look to them. And with that we have our textured model. The Rigging and Animating I will post about later separately but this is the workflow I'll use to create the models of the Golden Sun Revival Project.

Finished Textured Model - 980 Tris - 128x256 Single Texture

Hope you enjoyed this quick overview of how these enemies are made. While this wasn't the first model i made for this project, it is one of the most simple to use for this explanation post. I will have more in-depth post about more details on creating the enemy 3d models in the near future.


-Special thanks to DarkMech for the Sprite rips from the Spriters Resource site!

Comments

Popular posts from this blog

Reviving Golden Sun: Prologue