Monday, 7 December 2009

Weekly Update

It's prototype hand in day today. Fortunately I just finished the last thing I wanted for the prototype. Huzzah. It only took me 6 hours to do. Progress since last week:

- Working inventory screen. Clicking on an item in the inventory "equips" it if it is an equippable item. By that I mean it moves it to the inventory slot that's away from everything else/position 0 in the inventory array, it doesn't actually affect gameplay yet. However, it shouldn't be very difficult to get the game checking the statistics of the item in array position 0 and setting damage and attack type.
- When an NPC is killed it now drops an item. These dropped items can be picked up if the player walks over them, and then appear in the player's inventory.
- Levelling up now works to a limited degree. Killing an NPC rewards the player with experience points, once the experience reach a threshold level the player's level increases. This currently only increases the player's maximum health and the experience threshold. Again it shouldn't be difficult to get this working as fully intended.
- Simple character sheet working. Shows player's current health/max health, strength, toughness, dexterity and experience points/xp threshold. Doesn't need to do much more for now, will probably end up showing more detailed stats once they exist.
- Very simple quest generation. It currently only generates simple fetch quests. An "outpost" is generated that contains a blue gem type thing, pick up this gem and return it to the port town on the North Island to complete the quest. When the player completes the quest, they are awarded with 200xp and a new quest is generated. The new quest is exactly the same thing, just with the outpost in a different place. The code for this is really bloody sloppy and not working entirely as I'd like behind the scenes, but it's getting the job done. With a bit of cleaning up though, it should be adaptable to further types of quests. The important thing currently though is: IT BLOODY WORKS!
- Interface works. Buttons take you to the correct screens (even if the menu screen and questlog screens are just blank). Nice little windows-esque X button in the corner closes whatever screen you're on. The buttons under the health bar stay highlit to tell you which screen you're on.
- Drew a few nice little graphics for the items and interface. That's all going to need to be reworked to be more efficient though. The item graphics aren't even in a tileset!
- The lovely Mark Robinson supplied me with some overworld music which I implemented right away. It loops really badly (completely my fault) and skips when it first starts but it's there, dammit. Nice little piece of music, reminds me of some music from StarWing. I'm on to you, Lips.
- Drew up my fictional games development company's logo and made a splash screen that shows when the game is started. It  fades out crudely after a while, but can be skipped.

I think that's about all I got done this week. It looks like a lot but it was actually a slow and pretty lazy week, I've had to stay up pretty late on days I did work to get  the necessary work done (hence why I'm posting this at near enough 6am).

For the next week and a bit it's a matter of making things work and look a bit nicer, as I'm to be presenting my game to loads of people at the Game Cultures Christmas show on the 15th. That should be trouser browningly terrifying. First up for a polish: Quest generation. It's currently a complete mess backstage, and not particularly impressive or even apparent for anyone playing the game.

That's all from me this week. I can't be arsed to post any screenshots right now, it's 6am and I'm knackered, but I'll get some up during the week if I remember.

Monday, 30 November 2009

Weekly update

Another weekly update, sort of on time. Progress:

- Semi-written the class for my NPCs, to the point where they will spawn in towns with some basic properties such as health. They currently have no AI though, and probably won't do for a while. The concept of coding AI currently terrifies me.
- The groundwork for the RPG side of things has been coded into my Player class. HP, XP, etc, etc. Leading on to...
- The beginning of combat. The player now has the ability to attack, and attacking an NPC knocks the NPC back and does damage based on the player's STR (strength) statistic. Should an NPC's health fall below 0, it will "die". If an NPC is dead, they're no longer shown on screen and the player can no longer interact with them. The instance of the NPC class remains, however, until the town is left. Also, walking in to an NPC hurts the player, knocking them back and lowering their health, which can be seen on the...
- ...Health bar! I've begun coding and drawing up a simple GUI. So far I've got nicer looking buttons for the boat travel menu and some placeholder buttons that will eventually let the player open the character sheet, inventory, quest log and game menu (all of which I need to draw up placeholder screens for and get working). I also have a working health bar that fills up depending on what percentage of health the player currently has, which looks quite pretty and is the first example of something working straight away exactly as I planned it. Of course, all this is subject to lots of change, but everything so far looks nice enough for a prototype.

I've also changed up some colours in the still flat colour tileset to make things a little easier on the eye, and have been researching how to do draw good tiles and tilesets. I'm getting quite into it. Plan for this week:

- Get Inventory screen drawn up and Inventory system working, with items generated when NPCs are killed.
- Expand the RPG stuff, with the player gaining experience points when an NPC is killed and then levelling up when enough points have been acquired (standard RPG stuff)
- Once that's done, I can move on to the stuff I really want to get right: Quest generation. This is the big one, and the way I'm planning it will involve me moving a lot of code around to get it working as ultimately intended rather than as prototype code. I'm going to have to code the quest generation system itself, get friendly NPCs going, get some more map generation stuff going and get the player dying properly.

I also have a fair amount of bugginess and undesirable behaviour to code out, mainly surrounding controls. Should make for a fun week.

Wednesday, 25 November 2009

Weekly Update

So everything that was working last time is still working and everything that was broken by my OOP game loop has been fixed. On top of that, I've made some decent progress over the last week:

- Towns can now be entered and left, and have a randomly generated layout. Currently the towns just have a bunch of grey tiles in them so I could see if they were generating differently or not, but eventually they will have houses and roads and people.
- Port Towns now exist. One per island, on the coast. They're pretty much same as towns except they have a coastline and a "boat" (a big brown rectangle) in the town.
- Island to Island travel is now possible. Walking into a boat in a port town opens up a travel menu and allows you to warp to another island. In the future, there'll be a snazzy little boat travel animation. Probably.
- Plenty of general bug fixes and crash preventions.

Next on my list is combat and NPCs. I'd like to get more map generation stuff going but it's currently more important that I get some proper gameplay in there rather than a more complex map. And now, some screenies:


 My placeholder title screen with working
new game button. 

 
An island. Green = Field, Light grey = Mountain, 
Yellow = Town, Orange = Port Town. The black square
with the dot in is the current player character... 

 
Inside a port town. Boat!

 
The travel menu. Also has a "Go to North Island" option
when you're not already on the North Island. Similarly
if you're on the SE or SW Islands, their options won't
be available. 

 
Another island that I just travelled to. 

That's about it for now. If I can keep myself from spending all my time playing Torchlight this week, I should make some decent progress.

Monday, 16 November 2009

Weekly update my arse.

It's been almost a month. This project (along with my Borderlands addiction) is slowly turning me nocturnal. 5am is my usual bedtime these days, more often that not after two or three hours of tearing my hair out over stupid nonsensical programming issues. Even with the silly bedtime increasing the number of hours available to me in which to work, I'm falling further and further behind. Anyway, general progress report:

- Map generator now generates three islands that don't overlap or run off the edge of the allotted space for the entire map.
- Mersenne Twister random number generator implemented. The in-built C++ random number generator isn't random enough.
- Moveable, animating player character implemented (well, it's just a flashing box at the moment). Collides with walls and everything.
- Placeholder title screen with working "New game" button.
- Object orientated state machine/game loop going. While it's a good solution to a game loops, the added programming complexity is the source of my current problems.
- Character art is coming along, which is nice.

Next on my to-do list is get everything working again. Implementing the OOP game loop has broken most of the stuff I'd coded before so it all needs to be reworked. It's getting done though, if slowly. Once that's all done getting everything else working in it should be a fairly straightforward process, as straightforward a process programming a dynamically generating quest system can be.

And so I retire to bed. I wonder if I can wake up before 2pm today. It would be nice.

Monday, 19 October 2009

Weekly update

Another slow week for the AGP. Not much new to report on the programming side of things as I spent most of my time working on dissertation stuff. I did some more designy ideas work and finalised a few things. The map in the game will now be made up of multiple continents rather than the type of map you can see in the map generation thing I've already made. I tried to program this a bit on Friday while at university but didn't get past generating a random tangle of tiles for the continent to be grown from. Once I get the continents generated though, most of the code I already have will work with little adjustment.

My attentions programming-wise have been turned elsewhere however, as I've been tasked with getting examples some of the other dynamic generation stuff and actual gameplay done for Friday. Wish me luck. I'm also planning to get some of the design/pre-production paperwork written up properly this week as well as redoing my draft dissertation proposal.

So it looks like another busy week for me, hopefully it shouldn't be too stressful. My current addiction to Dawn of War 2 probably isn't going to help matters though. Be seeing you.

Tuesday, 13 October 2009

Even more map generation


I can't keep my hands off of this bloody grid! My program now generates a map and draws graphics from a tileset onto the screen in the appropriate places. Now we're getting somewhere.

(does it remind anyone else of Animal Crossing?)


Monday, 12 October 2009

More map generation

I know I wasn't supposed to be programming much this week but LOOK A RIVER. (fields have been changed to "."s, water to "o"s)


Weekly report - 11/10/09

Didn't get what I wanted done this week, mainly due to procrastination. I really must delete Freecell.

On to what I did get done. I did get my ideas down on paper and do some other design work like a SWOT analysis (which will probably be redone soon anyway) but I wanted to get a lot further than I have.

As for the programming side of things, I have managed to get a dynamic map generation system going, purely in text/ASCII art form in a command line console thing. As can be seen in my screenshot over there, it's currently an 11x10 grid with two rows of sea (~) at the bottom, colums of rocks (@) on either side and a row of mountains (^) at the top. A 2x2 castle (#) is placed randomly with restrictions that stop it overlapping with the borders of the map. Four towns (H) are placed randomly with restrictions that prevent them overlapping the castle or from being vertically or horizontally adjacent to other towns. The next step is to get graphics from a tileset applying to each grid space. And then I might add a forest or something.

It's nowhere near what will be used in the final game (I have much bigger plans), but it is a reassuring step forward.

The programming is going to have to take a backseat this week as I have lots of design work to do in preparation for pitching my game to my tutors this Friday. I also have a lot of reading to catch up on for my dissertation and a draft dissertation proposal to be writing.

It's going to be a busy week. Be seeing you.

Tuesday, 6 October 2009

Well would you look at that.

I met Charles Cecil (Beneath a Steel Sky, Broken Sword) and Dave Gibbons (Beneath A Steel Sky, Watchmen, 2000AD, general comic art supremo) today, and had a nice chat about Gibbons with a random scouse bloke on the tube home. Overall, a good night. Cheers Dave.

Now lets hope that Heroes doesn't disappoint tonight.

Sunday, 4 October 2009

Hello World

Evening. The primary purpose of this blog is to act as a production diary for my year 3 uni work, primarily my Advanced Game Project but anything particularly interesting that turns up from my work on my dissertation may appear on here as well. Inane ramblings may also occur from time to time. 

So, this AGP. The current plan is to make an RPG in which the game world and events are dynamically generated. There'll be no set story; what the player does will define the course of the game. The game world itself will be constructed upon starting a new game; no two games will be the same. Also, it will be impossible to "game over"; if you die there will be some way to get back to life, failing a task will simply result in a different outcome to you succeeding in that task. This will all be in 2D and programmed by yours truly (probably in C++).

That's the initial plan, anyhow. We'll soon see what actually happens.

In actual "what am I up to" news, I spent some of today refamiliarising myself with what little programming I know and attempting to get my head around a few new things. The process helped me to realise that I'm going to have to get my arse in gear if I actually want to do the stuff I plan to. All in all, not the most productive of days but useful nonetheless.

How I intend to spend this week:
- Getting the mess of ideas in my head on to paper and cutting 90% of them.
- Getting stuck in to this programming lark and getting some of the fundamentals of the game in place.

I think that's all for now. Be seeing you.