Simplifying TextWorld

Well it’s been quite a few days since I worked on my TextWorld project, and after much thought I’ve come to a couple of realizations. First off, it would be a lot easier to find a pre-made 3D engine and build a text interface on that, than to start with the text and build a 3D engine underneath. That’s basically what I was doing, once I finally wrapped my head around it all. That’s not worth the trouble, and wouldn’t work out for the platforms I’m targeting. Specifically, the web.

The second big thing I realized is that I started this with the intention of experimenting, but it rapidly became an interest in making actual, functional games, ideally for donations. So, instead of focusing on the broad goals of experimentation and curiosity, I should focus on making the games I want to.

So I’m going to put the current idea of TextWorld aside and just make an interesting text game engine.

So what’s the idea?

Well, what really got me interested in text games again was something I saw someone do with Inform, a special sort of language used to make interactive fiction. Rather than making a regular text adventure game, they made several rooms to create a city and several mobile creatures wandering the streets, along with humans who were trying to survive. I really liked the idea but the implementation wasn’t perfect. That person later went on to make an encounter-based game instead. Inform is a very heavy system. The language is meant to be easy to read and write using natural language, but the system of actually playing games is intense. So intense it won’t actually work on my retro laptop, which I use for most of my work. Flash on the other hand, does work, so that gives you an idea of how complex the Inform system is.

Anyways one of my personal niches in game design is the idea that the player shouldn’t be the focus of the world. The game, perhaps, not the world. The world should be alive around the player and doing its own thing. So, that’s why I started making the TextWorld system. I want to keep some of that in what I’m making next, but it’s going to be simplified a lot. No more worrying about the physical dimensions of objects in your backpack, that sort of thing. I still want to use generated room descriptions based on the objects in the room, but I’m going to make more of them static. No more coding the walls of the room.

Now, I’m a pretty well educated programmer so I don’t really need to use an easy language like Inform; I can focus on functional languages to make something nice and quick. And to be honest, as a programmer, Inform “code” gives me the jibblies. Worse than the time I tried to learn Python and found out they don’t have data types for variables.

I’m thinking of giving JavaScript a try. I’ve seen some incredible stuff done with it since HTML5 and WebGL took off, and I don’t even have to use any of the fancy stuff. I should be able to do everything on a single web page. We’ll see if that works out or not. I actually thought about doing this from the start, but I was more comfortable with Flash as an experimentation platform.

Anyways whatever platform I use, I want to have a solid idea of what I’m doing.

I’m thinking the world will be made up of individual rooms like a normal text based game, but one difference is that you will have a perception distance, like I was putting into my textworld. So, if you’re outside, you might be aware of things several rooms away, unless there’s a wall in the way. I want to keep the importance of being in the right part of a room without having to track the path the player takes between their current position and the thing they’re moving to. Like, if you’re in a pub, and you want to move up to the bar, you should be able to do that.

One thing I’m a bit iffy on is size. See, I’d like to include shrinking/growth, and I was thinking that maybe the scale of rooms would change as you changed. Like the bar example, if you shrink, one room might become four or six. But that would complicate things for ‘pathfinding’ again. Oh, here’s an idea; a single ‘square’ will contain one normal sized person with a comfortable amount of space, and tiny people can stack in the same square. a Huge person fits uncomfortably in one square but they still fit. I think I can go with that.

So let’s see… The world would be made up of spaces, which are made up of squares. A creature can see so many squares in any direction. Visions of Ultima are dancing in my head, now. I’m making a text-based roguelike! XD

I actually did consider doing it as a roguelike with highly detailed room descriptions, but I’m not sure if using graphics would help or hinder the imagination. I always liked the graphics of the early Dragon Quest games, personally.

Another important thing for me is that there have to be independant mobiles. I want them to have complicated behavior, but we’ll see what I can do when I get that far.

The player themselves will have a complex body. I’m a big fan of transformation, so I want to track body bits without anticipating what the player has. Like, if you lose your arms and have one huge tentacle coming out of your chest, I want to be able to recognize that in the game, and use it for interactions.

It’s not THAT different from what I was doing before, really. Just simplified in a lot of ways.

I’m going to give JavaScript a try now and see what I can do with it.

*giving JavaScript a try*

Phew, that took a while. Just ran through the JavaScript tutorial over on Great site, if you don’t know it. I use it as my primary reference for all forms of web programming. Anyways JavaScript is very similar to ActionScript 3 so there isn’t much to change, though JS uses soft variables like Python, so bleh on that, but I’ll deal. Before I’m sure this’ll do, I want to try making Context Menus like I planned on using in Flash. It should be possible with what I know of HTML and CSS, but I want to test to make sure.

But, I’m not going to do that now, because I’m burned out for the night. I need to relax for a while, maybe go to bed.

Things continue to happen!

Tagged , ,

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.