Today, I am providing you with an overall update on The Epic of Sadko. As you may know, I am developing The Epic of Sadko as part of my course credit for a class I am taking on game engine design. One of the upcoming deadlines for this is our final design document and a presentation of the game design. Of course a design document is never really done (I’ve submitted my “final” one twice already), but having submitted this document, I feel like I have a good idea of how a lot of the game will work and what people should expect. With that in mind, I’m going to give an update on some ideas I’ve come up with over the past few weeks.
The first thing I really want to talk about is the engine. As a quick overview, the Sadko engine that I am making is fueled strongly by its map system. The map system for The Epic of Sadko is a 3D tile system that takes a general 2D tilemap and extends it by adding a height to each tile. Then the engine can generate a 3d map of blocks. This is essentially how heightmap terrain generation works, just with objects instead of vertices. There are some drawbacks to doing this, most notable being that there can’t be any “holes” in the map (like a cave). A lot of games use heightmaps and have this limitation.
Now what I really want to say about the map engine is this: I’m building it in a very modular fashion. What I mean by this is that I am trying to make it easy to replace the parts of the game that will make up the content, and even some of the parts that make up the game logic. So if I decide someday that I want to make Sadko a different shape, all I should have to do is replace Sadko’s model file and the game will load it without any worry. Anyone versed in C# and XNA will probably realize that this isn’t how XNA is supposed to work, but that’s beside the point. Another example is this: If I decide at some point that I want to make Sadko say something when the player enters the city for the first time, then, instead of going in and changing something in the code, I’ll just change the file for the city area so that it has that event in it.
There is a point to all this of course. It’s my aim to release the game as a platform, rather than just a game. I want to give the game out with an editor for people to play around with the game as it is, and for people to make their own games with it. This is a long ways off, of course, but it serves two purposes. On the one hand, it makes it easier for me to make the game at the tail end of the project, though the front end is a bit more difficult. On the other hand, it lets me access two very different audiences. If you want to look at another game that does this quite well, check out Knytt Stories.
In my last post, I had said that I was still hammering out some of the skills. I didn’t like a few of the skills and how they worked together. Specifically, Alex’s Act 2 skill, the spirit of past misdeeds, and Raisa’s Act 2 skill, the sparkle hat were on the chopping block. They both got chopped. Instead, Alex has the Spirit of Plot Holes and Raisa has the Projection Wand. The Spirit of Plot Holes skill allows Alex to pass through a tile that has nothing on the other side and where the other side is the same height as him. The Projection Wand allows Raisa to create an solid, illusory copy of an object on the other side of it. This allows me to have Alex have a skill that grants him special access to places, and for Raisa to have a support skill that can actually be used in conjunction with other skills.
Additionally, I have changed Alex’s other skill to be Writing, rather than History. Writing is more appropriate for his character and it fits in with the new skill. As an added note, thematically, all the Act 2 skills have something to do with a kind of illusion.
Just as an aside, I have been working on the code for the game. Although much of my effort has been in the design document writing, I have opened Visual C# and put in some code. It is a bit slow going because there is just so much to do in there. Also, I’m converting it from a 2D game engine, so there are some issues with that. Not the least of which is that, on the surface it looks like all my classes are there. I have to go into each class and determine what stage of conversion it’s at. I’ve been working mostly on the tile engine, trying to get a default map created. But all the new systems are set up and ready for adding the various old components. Last week I added an area manager to hold all the data for an area (like its maps, variables and messages). I also created a tile event class, but I don’t know if I’m going to keep it the way I have it. I’ve tried to guess what I might want for event triggers and actions, but this will really only start making sense once I’m building the game and realize that I need a particular kind of event.
In addition to that, I’ve made a very silly title screen. For the most part, the title screen was mocked up for my presentation on Wednesday, but it was a nice break to make it. It’s not in the final stages and there are a number of problems with it, but it works as a placeholder. I’ve included it below.
And that’s it for the updates. If there’s anything specific you want to know about, just let me know. I’ll do my best to explain anything you’re interested in.