2011
12.13

I’ve been working on making my game feel less like a tech demo and more like a game by adding stats, equipment that give you stats like armour, damage that is dependent on the weapon you are wielding, and so forth. I’ve even started with experience points!

I’ve made the editor a bit more functional – you can now edit the amount of light in a sector in a slightly dodgy way as well as place things in “sub sectors” – the four corners of a main sector. This will allow little enemies (dare I say giant rats?) to gang up on you by having a whole heap of them surround you.

Here’s a WIP shot!

WIP shot 2011-12-13

WIP shot 2011-12-13

2011
11.22

Scripting

The scripting language I’ve written for Sophistry previously used a whole bunch of “goto”s, which isn’t exactly the cleanest way to navigate code. So I added IFs, ELSEIFs, and ELSEs! The scripting language is now like an extremely slow version of a forty year old programming language – I’m pretty pleased!

I’ve also started working on allowing things in sectors to live in “sub cells”. Essentially that means objects can be in the NW corner, the NE corner, the SW corner, the SE corner, or smack dab in the centre of it. Previously everything was always in the centre and it looked a bit funny when you turned around while in the same sector as another thing – it made the other thing look like it was orbiting all around you because it would always appear to be sitting right in front of you no matter your orientation.

2011
11.09

Turns out that resizing an array while you have live references to that array can cause bad things to happen. Who would have guessed?

What was happening was that every time a script was to be added the entire “Current Scripts” array of script parsing objects would have an additional member stuck at the end. This caused funny results, but only sometimes and in some situations.

Now it adds it to a “pending” queue and adds everything that’s pending at the very end of the frame once all script processing is done.

I also fixed a few other things with scripting that I think may cause bugs down the line or at least looked wrong. I’m thinking while I’ve got my head around the scripting system I’ll make it a bit cleaner, in general. I have been doing a cleaning pass of all my code but had skipped the scripting for now – I guess this puts my focus back on it. Then I can move back to cleaning the rest of the code!

One day maybe I’ll be able to work on actual features or the game content itself!

2011
11.07

I’m getting more ambitious with my post titles.

Since last update I have:

  • Reorganised my code a fair bit, separating things and making it less of a big ball of yarn.
  • Fixed some bugs!
  • Made tooltips use a pretty header font. Well, it’s not that pretty.
  • Jazzed up the interface slightly
  • Editor now lets you select width and height for new maps.
  • Added tab style buttons, used to switch between general inventory, quest items, and keys.
  • Discovered an incredibly annoying scripting bug that looks like it is living deep in the scripting system as the circumstances under which it crops up are incredibly strange – it shows up when you use a script command to add an item to the player’s inventory that itself has a script when added to an inventory that causes everything in the original script file to be repeated after the original item giving. But then it won’t do this if you add the item to a thing without any scripts. So it needs both of these things (item with an “added to inventory” script and a thing with any script) to happen. I think the script parser is getting confused now but an hour’s work last night at midnight couldn’t resolve it.

Haven’t had much exciting happen lately, unfortunately. Done a bit more thinking about the game design and resolved a few problems in my head but code-wise I haven’t been adding any exciting features. I am trying to shape up the code a little before I start hacking it apart to fit new things in. The code re-organisation in the first dot point has been fairly extensive and also fairly helpful, so far, reducing the interconnectedness of all the parts of the program and, I think, reducing the chance for bugs down the line. It’s also exposed me to a few bugs or places where things haven’t been written as well as they could have been that I have fixed on my way through, as well.

I’m currently at version 0.3. Here are my goals for release 0.31:

  • Persistant saving and loading of maps so you can move from one to another and it remembers the way things were when you come back. Actual “save games” not necessarily part of this aim but I will probably end up doing it at the same time as they should be fairly related.
  • Redo the way scripting works so it more explicitly tells what triggered it, so scripts can do different things depending on if it was triggered by a wall, by a thing in the world or by an item in the player’s inventory.
  • Let things in the world, rather than taking up an entire square, fit in to a corner of the square and have a slightly randomised position within it so that many little enemeis can be on a square in the same way the player’s party shares a square.
  • Maybe shops?

This is a lot of features for a 0.01 version upgrade so I guess I don’t do a very good job of sorting out versions!

2011
08.08

Still Alive

Hey there.

Been working both on Sophistry (the scripting got redone, amongst other things) and my retro FPS. Also been looking at DarkBasic Pro and 3D Game Studio for a possible future, higher tech, project.

I should really add some information to the main website…

2011
04.28

Here’s something I should have done a while back but didn’t, a new WIP shot:

WIP Screenshot of Sophistry, 2011-04-28

WIP Screenshot of Sophistry, 2011-04-28

Made a bit of progress over the last couple of days (think I’m coming off my side project binge) – the interface is a lot cleaner and more usable (you single click to interact rather than having silly little toolbars pop up – witness the talking icon for the “Wounded Old Man” (who is actually a square) in the screenshot).

Most of the screenshot actually works, rather than being a placeholder, the exceptions being the entire “Navigation” pane, the “Party” frame, and, the EP, CP and Experience bars for the player. Everything else is pretty much working.

Once I redo the scripting system and add saving/loading the real core of the engine should be more or less complete (I say with complete overconfidence). As you can see I still have a lot of drawing to go if I don’t want this to be adventures in blockland…

2011
03.15

Side Projects

I got a fair bit more work done on Sophistry up to the 4th of February when I went on holiday to Vietnam – pretty interesting place.

Since I got back, though, I haven’t worked on it. Instead, I’ve been working on a side project I’ve had going for a couple of years that I work on in infrequent bursts – an old style (think Wolf 3d) FPS made with Game Maker. It’s an interesting break because the coding in Game Maker is completely different to FreeBasic (more C style syntax, and more object oriented in its own weird way) and an action game which is all about physics and collisions and animation is different to an extremely data driven game like a turn based RPG – half of my code in Sophistry seems to be cycling through arrays whereas I’ve only got about three loops in the entirety of my shooter.

It’s a good way to have a break without forcing myself to work on the same project over and over and get burned out.

I don’t even know which project will get released first – in terms of overall completion the FPS is much closer to being ready, but then, a lot less work is required.

I haven’t fully worked out a plot yet but I want it to be a colourful, pulpish science fiction story with visible bullets and no hitscan weapons – that is, there are no instant shots – you can always dodge what the enemy throws at you. I want the game to be about skillfully avoiding the enemy’s attaks while attacking yourself, rather than just trying to kill the enemy as quickly as possible and then healing up.

2011
01.24

These joke titles that end up being serious just keep on getting better, don’t they?

It’s been eleven months since my last update and I’ve achieved a fair bit with Sophistry. Not as much as I’d have liked to (My records tell me I did nothing between March and September last year, some of which I spent working on side projects) but considerable progress regardless. It’s a good sign that now most of the work is implementing game features, rather than working on the nuts and bolts.

For instance:

  • Items and Inventory now work, along with Equipment. You can pick an item off the ground, put it in your bag, equip it in your hand (and all items have slot restrictions), gain an effect from doing so, then drop it back on the ground. This includes spells, so you can move spells around your quickbar, MMO style. You’ll eventually be able to pull them out of your spellbook, once that’s implemented.
  • Created a GUI system. Labels, Pictures, Buttons, Inventories – it’s like a very crappy Visual Basic. But it does make adding new buttons and code to run when they are hit quite easy.
  • Buff system! Done just yesterday, you can now get buffs and they expire and create effects.
  • Pseudo real time system! Rather than going full turn based, which has the limitation of everything needing to be done in discrete chunks (so you can have a 1 turn spell, or a 2 turn spell, but not a 1.5 turn spell, which also makes it hard to react to things the enemy is doing with a, for instance, counterspell), or full turn based, which has the limitation of being too action packed and twitch based, now the game is real time, but only when you are doing something. So if you aren’t hitting any keys, time is frozen. When you start casting a spell everyone else moves in real time. This means you can cancel your own spell half way through if you see the enemy doing something interesting, consider your options, and then cast a quick spell that will give you more resistance against his attacks. It’ll let you get a 10% haste buff, so you move slightly faster than someone else. It’ll allow a lot of options.
  • Menus and game substates! Now you can open your journal, go to the main menu, look at your character stats, and all that fun stuff. Previously there was no concept of being able to do different things at different times.
  • Better data. The files for things, buffs, spells, items and so forth used to be in an awkward format and I was planning on creating a utility (probably in Visual Basic 5 – still wringing some value from a program I bought for a class in high school!) to deal with it. I’ve converted the files to be straight CSV (comma separated value – basically a poor man’s excel spreadsheet) and created an excel spreadsheet that generates the CSV and also allows validation and some other niceties to really speed up data creation. This will really help when I’m in the thick of game creation. Additionally, more values are taken from files rather than being hardcoded, now, like speed and health.
  • The player can now have conversations! With multiple responses, conditional responses (a response that shows only if you have high intelligence, for instance), custom portraits, and keyboard support.
  • Floors and roofs can now have individual graphics rather than the floor and roof just being a single graphic.
  • Cool modding support on a per-adventure basis. If your adventure requires that you have different graphics for orcs, then you just whack the graphic in a certain subfolder of your adventure and the game will preferentially use yours over the base game’s!
  • Much better mouse and keyboard code
  • More polish in general. Translucencies, tooltips, different colours, better interface, ability to scroll the combat log and other things.
  • Per cell lighting! Colours, darknesses, whatever! I plan to have lanterns and torches (and light spells!) you can carry around that dynamically light up the area. Some areas will be pitch black so you’ll need the help!

I’m also enjoying reading over my old entries – it’s probably a bad sign that I post so infrequently that when I read them it seems like they were written by someone else.

Anyway, see you next year! Joking. Hopefully.

2010
02.23

The best part about these blog titles is how I’m not even joking.

On the plus side, progress has been monstrous this past week – I’ve found a second wind and worked on Sophistry for a total of 23 hours since the 17th – and I’m working my job, as well. I don’t know what happened but my motivation has been up-up-up!

To give some scale to this productivity, in my tracking spreadsheet, I did 75 “things” (bug fixes, features etc) since the 17th, versus 150 since 18/12/2008 when I started the spreadsheet. Now, I haven’t done 33% of the total project in the last week (a lot of what I’ve done has been smaller things) but the progress has been incredible. The map editor is now mostly functional – it lets you edit wall textures, visibility, solidity and sector solidity. It lets you save and load maps. It lets you do all this from the integrated 3d view, if you want. The game is now telling the user exactly which wall they’re mousing over, and is easily expandable to floors, roofs and things as well – the basis of any combat targetting system! My file formats have been cleaned up and to include descriptive text, several things which were implemented as a hack have been implemented better, a lot of bugs I didn’t even know about have been found and killed, including a particularly embarrassing one where I wasn’t closing a file after opening it – it had been like that for months but had never become an issue because I was never loading more than a single map. I’ve also implemented minimap fog of war, simplified and made better the way it looks.

On a more game related front, I’ve sketched out the main quest and areas for the actual game portion of Sophistry, given me a good indication of where I need to go.

And that’s just the last week!

Before that and since the last update I’ve made a utility that automatically splits a large wall file into 30 small ones, and creates a text file for each, greatly reducing the size of images in memor as well as fixed a few bugs. But, to be honest, I didn’t do much in that time – all that work was concentrated over the span of a few days where I spent a considerable number of hours. Only four days from the 11/11/2009 to 17/02/2009 – I need to get better at that and not be diverted by side projects…

So what next?

Well, I want to give my file formats a once over and make sure everything’s OK but I think I’m pretty close to being able to create the content for the first act – it’s not too large but by doing that I’ll dig up any issues with the way things are currently being done as well as get started on implemented gameplay features so the player can do more than just walk around a dull looking map. On the same topic, I’ll also start creating some art so everything isn’t represented as a white box!

Basically, I’m very excited. Oh, and here’s a screenshot of how the game .exe looks as of today. Most of it is still placeholder art and what I said last time is still pretty true – Everything bar the mouse and its tooltip, the minimap, the 3d view and its tutorial message, the framerate counter and the text output window below the 3d view is basically still a mockup.

2009
11.13

What, three months already? The last three months have been a time of iteration for Sophistry, with the resolution being changed (first from 800×600 to a scalable 320×240 then to a scalable 640×480) the 3d view being changed (from the rectangular shot from my last update) to a square that took more of the screen, to an even larger square. I think it offers better atmosphere and a greater sense of “being there” when the 3d view takes up a large percentage of the game. I will try to upload a screenshot later.

Additionally I have had many troubles with the actual graphics for the 3d view. As it is all made up of a variety of 2d bitmaps, a lot of trickery is involved to make the view look convincingly 3d. It’s taken a bit of effort to get there, and I’ve had to redesign the graphics format a few times, but now I’ve arrived at something that looks accurate and has all the pieces fit together correctly.

Not a lot else has happened, unfortunately – a bit of work on scripting and word wrapping for text, and some other neat little changes here and there, but I’m still a fair distance away from having a game on my hands, rather than a demo that lets you walk about. But I feel I’m getting closer, and by doing a lot of “under the hood” work now I believe I’ll be able to progress very quickly later on, rather than mocking up some actual gameplay now that will need to be rewritten later on to be scalable to a full game.