User blog:Hseiken/Can't do just one or two programs!

Lately, I've been getting into MS-DOS, loading up some old abandonware on my old DOS lappy and one of the games I rediscovered was ZZT, an ANSI based action game with level editor and simple scripting language. I always liked ANSI graphics and games using simple terminal colors and text characters and so on a whim (again) I sat down and started putting together an ANSI-ish realtime action game myself. However, all of the things I wanted to put in there were hard to test when making maps by hand, so I started working on a map editor that's nearly done.

Basically, if you go in and edit CHR:MEGA's text characters (BF0), you get a palette of 1 bit textures that, when mixed together with the 2 color options for displaying them,  a lot of flexibility is created. And while they won't be smoothly scrolling or anything (it's still using text mode!), it can do a lot to provide atmosphere.

My ultimate goal is to have pretty much a full fledged game editor similar to ZZT (without scripting) to make fun and small text-graphics action games. Each tile has mix and match options and supports heights (i.e. you can walk behind stuff, use ladders, etc.).

Here's a couple of screenshots (blurry, I know) of some images I came up with while testing it. After this (probably later today even) I will start working on character movements and actions in regards to tile properties (i.e. shooting/attacking a destructable tile = tile is destroyed, auto-move-player tiles do just that).

My final goal is to have ability to make 32 screen games with item persistence of up to 256 items, NPC's with minor dialogue editing support and items and monsters can be customized with up to 32 monsters or monster generators per screen. The screens can be linked anyway you see fit and the editor will come with the game. The only thing, I think, that won't be super editable is weapons. I plan on only having a mele style weapon and projectile weapon but both should be customizable to the point where the user can 'suggest' different weapons. Also, armor and other self-improvement items will be likely.

Anyway, the pictures of what you can do with text graphics in petit. I'll make a video of of my progress once I get the main character walking around and interacting with the tiles to show off what you can do.

Again, these were made simply by changing 2 colors on just a couple of custom text characters. Also of note (you can't see it in the pictures), I customized the font. Again, when this is made available, any one can go in and use CHRED and edit the font page to their desires. I'll definitely make it so that players can redistribute their levels to friends over the internet via QR codes as well. I think that's half the fun of these kinds of games.

So next up on TODO list:

Finish implementing Tile Property editing in the editor

Save maps

Implement main character control and interacting with tile properties on maps.

THEN:

Create multi-map games

Create item/enemy placement editor mode

Implement item/enemy interaction with player

THEN THEN:

Figure out how to save all of the elements independantly into a special group file for custom levels to be distributed, containing custom CHR, maps and levels.

TECHNICAL INFO:

Some technical information on the map tile data on how it works for people who want to try something similar or whatever.

The maps are stored in a 2 dimensional array of strings (LEVEL$(x,y) where x/y is max sized of the map.  The reason why I chose strings to hold the data is because you can put in and pull out all kinds of data from a string using MID$ and SUBST$.  So basically, I have for each tile a string of 14 characters.  The first 3 hold the graphic image, the next 2 hold color one (I used LEN and SUBST$ to make sure it's always 2 digits...same with the tile image so that it's always 3 digits..i.e. 001 but when converted using VAL, it will still just be 1), 2 characters for color 2, and the remaining characters all hold data for things like WALK ON/WALK BEHIND/CANNOT WALK (a value of 0-2 stores this), DAMAGES PLAYER with values of 0-9 intended for how fast it damages the player based on frames updated, CAN BE DESTROYED (0 = no, 1 = destructable with mele only, 2 = destructable with shot only, 3 = destructable by walking on it, 4 = destructable by any method), AUTOMOVES PLAYER (0 = no automove, 1 - 4 = automove in the 4 cardinal directions) which can be used to create conveyor belts, water currents, wind, etc.), HEIGHT (0-9 describes how high in the air the object is...you cannot move from object of height 2 to height 5 without a...), CHANGES HEIGHT (0-5...0 = does not change height, 1 = subtracts player height by 1 when moving down, adds player height when moving up, 2-4 do same thing but in different directions), etc. etc. You get the idea. Every one of these options is setable per tile so you can definitely create some interesting maps using them to fit any theme you come up with. I think the hardest part when doing character movement is going to be creating stuff you walk under, but I'm sure it won't be too hard....just need to work out the correllation between walkon/behind and height...

Anyway, thanks for letting me ramble. Stay tuned for vids in the near future....