As I continued my quest to develop an RPG game I often remembered poor Deckard. I played all three Diablo games and I still consider D2 my favorite. Diablo may have created the ARPG genre but for me Diablo 2 really defined it. Simple, straightforward choices about your character, a good power progression, a decent power balance between the classes, oh and an eight player multiplayer system because I have more than three friends (looking at you Diablo 3). Any who, on to this week’s progress.
Dev Blog #0
Starting Position Prefab
I mentioned in Still Sitting At the Tavern that I taught myself to code at 14, and since that age I’ve built up a few habits. So I jumped in and analyzed Grid Move. The author laid out his code and art assets completely differently than all the other Unity tutorials have shown, so it took awhile for me to get used where he put everything. I had already refactored quite a bit of the main GridMove.cs code so this past week I decided to test my understanding of prefabs and code.
The Grid Move demo hard-coded the start location, so I copied one the floor tile prefabs to use as my start tile prefab. After a few tweaks and finding a few hidden gotchas in the original code I had a working StartPosition prefab. I hadn’t realized it at the time but I had laid a trap for myself. Since I used the floor tile prefab as my starting point, I would have to create a new prefab for each different “floor design” I used in my dungeon. Hmmm, not kewl. So why not take the floor out of the prefab, you ask. I did exactly that. I spent a bit more time and took out the floor graphic and replaced it with an empty gameobject and viola I had a working start tile prefab. I still have more work to do on it, but I like the result I got so far.
The player needs to interact with their character, check out the stats, look at the rag doll, equip items, improve skills … yea I got none of that yet. I have the start of it. I learned a bit about Unity’s canvas and UI this week. I decided to keep the Grid Move UI for now, I can rework it later. Screen Space – Overlay looked weird at first, the oversized nature of it took getting used to. After a bit of messing around I created two panels, one for the character portrait and one for the character stats screen (or what will become the stats screen). I learned that if you deactivate a GameObject then you can’t use the Find method. So for now I attached the Character Sheet GameObject to the code component and solved the problem. Now I only have a bare bones set of objects so I can get the hang of things. I figured I could add the pretty later.
Now that I got my feet wet on two different types of problems, I truly realized that coding won’t be my issue, but graphics and art, well now that’s a horse of a different color.
Textures, Materials, and Meshes, Oh My!
I spent all my time doing things I already know how to do, I coded things. I did not spend time putting together a set of assets to make my character portrait look interesting. So I looked into how to pretty up the place and got introduced to the world of textures, then materials, and then how the two interact, oh and models (or meshes) got thrown into the mix. In short I learned the following:
- a texture is an image that provides the picture of a thing;
- a material defines how it appears to the world, how shiny, smooth, or rough, how does light interacts with it, and many other things;
- a model (or mesh) is a 3d object that uses materials and textures to create an in-game object.
So if I created a texture of a tin man, I would need a material to make it shiny, and give the rivets an appearance of height above the rest of the texture. Then of course if I wanted a 3d tin man I would need a model and apply the texture and material to it.
Luckily I bought a Humble Bundle awhile back and have a few monster models I can use for testing. Join me next week as my adventure continues to see if I failed my random encounter check or not.
Keep on questing!