A short update, work is continuing but more slowly due to real life…
For starters, I attended a convention in Portland last week, which was a lot of fun!
Unfortunately, I managed to pick up an ear infection in the last couple weeks that’s been slowing me down, both on hobby time and at work. I’m on antibiotics now so hopefully that will nip it in the bud soon.
The manager module is filling up fast, I only have around 2K and change left. I’ve decided to cut a feature, which was in-game storage of items, which would have been facilitated at various buildings in the major cities.
The problem is that the amount of code necessary to build and control an interface is significant. I have to complete the critically necessary components (like party management and player inventory control) before I can think about adding bells and whistles. In fact, that’s more the kind of feature that would come out of play-testing, if item management proves to be a problem.
After all the major game code is complete I may be able to move about/juggle some specific features into different modules and add new ones. The travel module has space to burn, potentially. (Although I am still not sure where the End Game code will go…)
The CRPG Addict has been playing an older game “Deathlord” recently, and having a very frustrating time of it. You can read his latest post about it here. It illustrates the importance of not just completing a game, but designing it well. A good game is like a good story; pacing is everything.
On the side, I’ve also been writing and re-writing portions of the content on the later disks. My early maps and places definitely have had the most time spent on them, and the latter not as much. A particular concern for me is to avoid repetition; having the same kind of character, story arc, or quest elsewhere is not all that fun. Tying it all together and making it a cohesive whole is paramount.
“I have to complete the critically necessary components (like party management and player inventory control) before I can think about adding bells and whistles.”
Computer role playing games are basically inventory management systems. For my current retro CRPG project I thought it would be really cool if each member of the party could have a summon/controlled monster/companion/NPC attached to them (like an inventory item). The amount of memory and code this feature used was quite a bit. My previous game in the series just made the summoned monster just give a temporary hit point and attack bonus to the player who controlled it for the duration of the battle – so one viewed this abstractly as the monster helping you out.
The basic kernel/core of my game has 20KB dedicated to it (out of a total 35.5KB of RAM that the expanded VIC-20 can have). This contains all of the math routines, player management, spell casting, inventory and NPC handling that all of the other game modules make calls to (like travel, city, castle, dungeon, etc). So out of that 20KB I’ve allotted to the kernel/core, I have about 400 bytes remaining. Now, I’ve programmed most of the features that I wanted for it, but I will need to go over the code and find efficiencies just in case I need the memory later on. But sometimes I question the idea of having my game allow NPCs the way that I do it. I could probably save 2000-3000 bytes by getting rid of that feature altogether. Who am I trying to impress really, with that feature? But for the CRPG projects that we work on, we put in those things that we like to see.
“On the side, I’ve also been writing and re-writing portions of the content…”
I’ve posted this before, but I find producing content for a CRPG to be very hard to do. I arbitrarily decided ahead of time that I’ll just create 20 cities of 32*32 tiles where they each have 10 townspeople to talk to with a simple “NAME/JOB/JOIN/ETC” menu-selectable conversation parser. So coming up with 200 unique people that the player can interact with is a lot easier said than done. I’ve been working at this portion of content generation for 4 months and I’m only halfway done! (I’m at my 11th city). After I finish designing a city, I also make sure that the text portion of conversation is generally free of errors and displays correctly.
There are not only system memory considerations for a CRPG retro project, there’s also constraints in regards to the developer as well in terms of free time, motivation, etc. I keep working on it every day because I feel a sense of duty to those who provided help (I had a music composer come up with several pieces of music and a VIC-20 graphics programming genius who provided routines that can increase the number of colors that can be displayed on a single raster line). If I give up now, their work and contributions are all for naught.
My observation has been CRPG’s are really just databases with a fancy interface on top. 😉 It’s a very data-driven system to say the least!
Interfaces are always difficult to implement well, but on vintage systems you’re also dealing with the fact the memory footprint is small enough that just basic text takes up as much room as graphics. I burned a lot of the start module’s space just adding in text descriptions for each class, for example.
My original design started with a map about the size of Ultima IV, but after I abandoned the big map concept, I went by disk space/memory size instead, figuring on 256K worth of maps total in the game. Instead of thinking of “This number of cities, this number of maps”, I focused instead on small regions that would have at least one town and a couple points of interest. This, I think, will keep it fresh and interesting as you move along. I won’t lie; I got the idea from early World of Warcraft, with each “zone” having a bank of quests and at least one settlement of some kind.
My NPC’s come in two flavors, simple (one single text line) or complex. (Transaction driven system of variant size.) One thing I decided early on was not to have a text parser. When I was a kid in the 80’s, a text parser suggested limitless possibility, but if you really look at Ultima IV and V’s, for example, they’re pretty limited, not even as complex as a two-word adventure parser system, and a big investment of resources to do. I felt like I could make a better game without it.
(Removing the duplicate post for you!) -Adam