Monday, October 27, 2008

Nothing... nothing at all

Just that. I had my vacation this week, so nothing happened. Maybe this week? We'll see! I'll be updating regularly again from this point, so there's at least that to look forward to.

Until next week!

Monday, October 13, 2008

Math, Compilers and Expansive Tilesets!

It's been a busy week!

Me and a friend of mine, Demian, decided to have a look at the Sin, Cos, Tan story this week. He's a pretty math-savvy guy so it didn't take us long to have the correct formula. Strange thing was, the result the formula returned wasn't anything like it should've been. We checked with a separate calculator and either I screwed up somewhere bigtime or these functions aren't as accurate as they need to be. A little test with a different program later proved this when a simple call to the Sin function gave compiler trouble.

So for now, that's the voyage... to see if we borked, or if we crossed a compiler/library bug.

Aside from all of that, I finished the interface. The clicking works, I'm displaying some debug information on the screen, got the planets suspended in 90 degree intervals (that much works) and I've made the initial pass on the 'on planet' tilesets as well as some touchups to the graphic work. It may be minor, but I prefer getting the 'art-style' accurate from the start.

I've fixed a bunch of bugs, tweaked a few things for performance and added the same logging that is present in SDL-Rogue.

All in all... a very productive week!

Also, It's my birthday tomorrow, so I'll take congratulations and absurdly-large presents at the door, as well as in my inbox ;)

See you next week!

Monday, October 6, 2008

They took my blood... but I'm still not giving in to math!!

Decided to have a bloodtest done. Lots of signs that I'm sick, but my temperature's normal. Should have the results back tomorrow, I'm not expecting anything bad though... probably got to pay more attention to what I eat. :)

I did a mayor performance upgrade this week. I changed the rendering engine around so now I have SICK framerates when browsing the galaxy view (where you see all the stars). I also wrote the mouse interface, and managed to get it as fast as the rendering procedure. I'm really getting the hang of this performance conscious programming. It's fun to do too!

So the program registers when you mouse over a star now, and shows a little indicator that tells you which star is in focus. All I have to do now is drop in the 'onclick' command to take you to the star view and we have an interface.

Then I'll have to give in to the math... or move on to the next stage: Planet maps... hmm... I'm afraid that's a pretty easy decision right there...

Until next time!

Monday, September 29, 2008

Onwards! To math!

I keep moving the 'getting into math' part of my schedule ahead of me... I think I'm going to have to face the music sooner or later... but for now 'later' sounds pretty good!

The galaxy generator is done now. It's also scalable so if I increase the size of my galaxy I shouldn't run into any weird issues. I'm currently working on the 'system rendering' and the interface bit which should get you to the star you want to see. The rendering itself, in a basic form, exists but the interface needs to be done still and I still need to do the math bit so the solar system looks like a solar system, rather then a list of planets.

I also decided to link SDL_TTF so I can paste freefont text on the screen. It's amusing how much easier that's going every time I do it.

Well, I'm not quite 'healthy' just yet... I thought I was... but I guess I was wrong, so I hope I get proper well now so I can spend some more significant time on this.

Oh, and anyone who can find me an easy to understand tutorial on the mathematical functions Sin, Cos and Tan will become my idol for the next month. I'd really appreciate some input there :)

Until next time!

Monday, September 22, 2008

Down with the sickness

What is it with me getting sick in the middle of an interesting project?

Anyway, the past week I've been mostly fixing bugs on the galaxy generation code... and I'm not quite done with it yet. For now it's just going to be a flat/random galaxy until I decide a better algorithm is needed. After I'm done with all that I'm going to start on the starview, which is where you can see what planets are within a star. They're all going to be orbiting as well so I'm going to have to get reacquainted with my old nemeses, Sin, Cos and Tan.

Oh boy...

Until next week!

Monday, September 15, 2008

Dots, Dots, Dots...

De datastructures are set now. It's a fine piece of work, if I do say so myself, and I'm confident I won't have to change it much over the course of this project.

What I'm working on for Project: Space is something I like to call: UniBrowse!

It's a program that creates a universe, consisting of a few thousand stars. Each stars will have planets orbitting it and all should be viewable from a simple mouse-driven interface. Right now I have the program generating a random universe on startup, and although there are a few minor bugs with the system, I should have that all wrapped up by next week.

The universe that gets generated now is a bit random still... I'm trying to get it look a little like a galaxy-shape but that may take a little while as my math is still a little rusty.

So that's been this week, I'll talk to you guys next monday!

Tuesday, September 9, 2008

And now for something completely different!

Hmm, I guess I forgot another update last week... whattaya know?

In any event, I decided to do a new project. SDL-Rogue was becoming somewhat boring and I had been busy with this other idea for a game for the last few weeks. The original idea is by my uncle and the plan was to create this thing together. He's a very busy guy however, so I took it upon myself to get some things up and running already, in the hope of motivating him as well.

Don't worry about SDL-Rogue, it won't get a lower priority then it has had for the past few months ;) - I definately want to get a first release out and I will. The timeframe has just shifted a little.

I'll be posting about this new topic under the name of "Project: SPACE". The people that know me personally probably know what I'm talking about, but for you that don't... it's kind of a secret. I'll let you know more as time progresses.

So I've got some preliminary's set up, the basic data structure figured out and the idea is to create a program that can setup, and look at, the game world. The next step after that will be to output it to XML so our actual game can handle it... whenever that gets made!

See you next week!

Monday, August 25, 2008

Coding sickness?

So I was sick last week... or rather... I was sick the week before that and completely forgot to update last week. I've been getting back to my code though and I'll probably be going at full steam by next weekend... this mostly because my most current codebase is elsewhere.

In the mean time, I've uploaded a screenshot of the most current build, showing off the full GUI as it is now. This to appease anyone getting sick of the little progress so far.

Another update next week!

Monday, August 11, 2008

Back To Regulation!

Well so far for my vacation. I had a blast! Wacken was awesome, and so was New Wine but it's time to get back to my code now.

It still looks to be a bit tricky though, I just got me a dayjob, as mentioned before, and I'm spending a lot of time on that. Add to that the fact that my current codework is a pretty hefty implementation of the combat system, which requires me to recreate the way monsters are made, stored and handled, requires several big alterations of current workings and is, overal, not something I can do bit by bit just by looking at the code. I'll need my reference material, my own scribbles on combat mechanics (courtesy of having a notepad on vacation) and I need to just sit down and do this in 1 or 2 sittings. I fear that this will be 2 or 3 hour sittings so I hope I can get it done the next week... or at least do part this week.

I'll keep you posted!

Monday, July 28, 2008

Irregular update #2

My vacation is pretty relaxing, that's good! Playing with the (new) band... gaming... going to conventions and festivals... it's all good!

Got me a job as well... don't know how that will affect my coding yet, but I think it's going to be positive. The less time you have, the more worthwhile you'll want to spend it... but we'll see how that turns out.

See you next monday!

Wednesday, July 16, 2008

Irregular update #1

It's vacation, as I mentioned in my previous post, which means no regular updates and a lot less coding, and that's fine.

From August 11th, there will be regular updates again, until then... who knows!

Monday, June 30, 2008

Stop, Think, Don't delete your stuff.

When I travel I get the most of my coding done. You sit in a train and you just know you've got a half-hour to waste. Add the laptop, subtract the internet, and you've got a pretty good motivation to do coding. Ofcourse, I also code at home so before I work on my code at home I copy the code from my laptop over here. When I leave the house for more then a day, I copy my code from my PC to my laptop.

Bulletproof system? Think again! Apparently somewhere after an unscheduled travel, in which I did a bunch of work on my code, I forgot to copy my code to my PC. So I get ready for the weekend, copy my code from my PC to my laptop and... "Hmm I thought I did a lot more work already" Very stupid indeed. Guess I'll check timestamps in the future.

In any event, I finished the error handling routine and I'm now replacing old error code with the new, much more efficient, way of error handling. I'm also implementing the log entries throughout the program. It's not that much work but it tends to get a little tedious every now and then. I should probably have everything moved and upgraded by the end of this week, or by Monday.

Additionally, my vacation has officially started, so the next 6 weeks may be light on code. Not to worry though, I'll get back to it afterwards. I will try to update bi-weekly to 'keep the habit' so to speak.

Monday, June 23, 2008

Peeking under the hood

Unlike what you might think by now I've been quite busy, both with real life and to a (surprisingly good) degree with my code.

I've got the Arena loading pretty much nailed, save a few finishing touches, and I'm almost ready to move on to the next bit. I have decided that this will be error handling. Currently I'm just pasting crap to the error log that SDL generates automatically, but I keep finding this approach inappropriate and very unprofessional... not to mention it's making my code look all cluttered.

Image Hosted by ImageShack.us
"A code snippet of what will soon be a memory of bad error handling"

So I've decided to write a procedure dedicated to error handling. Not only will this save this considerable amounts of code but it will also allow me to easily output everything uniformly so it's easier to browse through the error log. I've also decided to output a general program log that keeps track of routine stuff, non-routine stuff and debug information for errors. Although I may just report the error in the program log and stuff the debug information in the error log... I haven't decided yet... though, now that I think about it, I think I prefer the latter approach.

Also, I'm changing my update day to monday as that's more convenient and increases the odds I will actually post an update. (...like I should! Bad demotivated Rider! Bad!!!)

Sunday, June 8, 2008

Zap-a-Bug!

So I've been zapping bugs the past week(end) and I've finally finished up the monster database loading routine. I'm now writing documentation on the usage of the monster file as I already did the same for the level format. I'm hoping this will aid in getting people motivated to make their own content one day. If something's easy... that just means less standing in between an end-user and their potential new mod/total conversion/whatever!!

But I'm glad that's over with... freaking bugs where driving me bonkers... apparently I wrote a format that's pretty picky about the 'end of line' character... I'll have to include that in the readme somewhere.

The next thing I'm going to do is create the 'attack file format' which will hold all the AI usable attacks. After that's done, I'll find out a way to generate an arena which will be used for combat and once that is done... I can actually generate a monster when an 'encounter' happens, place him and you in the battle zone and start the battle procedures!

I'm so close I can taste it!

See you next weekend then :)

Sunday, June 1, 2008

Your mom's an inner workings!

Not a great deal of progress since the last post here. The whole encounter thing works like a charm now and I started the next required component for combat encounters... the monsters! So far the data structure is in place that will hold the monster prototypes (from which the actual monsters are to be generated) and I'm nearly done with the part where they're loaded from a separate file.

Which reminds me...

I was thinking about how the game's root folder was getting sort of full and starting sorting stuff, dumping it neatly in folders like "bmp" and "levels" when I figured that it would be SO easy to just create an alternate version of these folders and thus allowing users to easily mod the game to include new levels, different monsters and new tilesets. So I dumped all those neat folders in a base folder and decided to include full-on mod support. It should just be a matter of making the parameters, the one indicating where to find the files, slighly more dynamic by adding a 'base folder name' part which can be changed to any value thus changing from which "mod" folder the contents are being loaded.

A brilliantly simple solution.

So I just got to figure out how the player will swap between mods (menu, command prompt) and how the program logic will fit in that picture (will it preread the folders content and offer each folder as a possible mod?) and we've got mod support!

The whole monster/encounter bit is still main priority, but when I get enough of boring procedure writing I can always alternate between that and exciting new feature coding! Woo!

Monday, May 26, 2008

Get back to work, you slacker!

Alrighty, it's time to get back to it!

So I've got the "encounter areas" implemented and loading from the level file and I was thinking about how I was going to calculate whether the player is in one of the zones available to each room... and I came to the conclusion that calculating that on the fly using the encounter layer as a reference tool isn't really efficient. So in addition to the normal camera bounds calculation that I do on entering a room (to keep the camera inside the level at all times) I draw a little 'encounter tile layer' for the current room as well. So now checking to see if the player is in an encounter area (and which one it is) is a simple one line procedure!

Now I just gotta get the whole thing properly debugged... 'cause somewhere along the line I must've made a wee mistake since the whole thing doesn't do jack right now... so far for hard work I guess...

The theory is pretty sound still... just gotta work out the kinks :)

Anyway, I'll go back to weekend updates again from this point, so stay tuned!

Saturday, May 10, 2008

Files and datastructures

He's coming up on the goal... he shoots... he scores!

SDLRogue now succesfully loads config data (& performance regulatory variables), tileset data (collidability only at the moment) and all level related data (tiles, objects and all that) from individual files. That means that I now have a level format! In the near future I'll probably create a level editor so I can make all my content with an easy to use utility. I might also release the level editor prior to the game itself to see if any of the people interested in this project can come up with neat level designs... oh and for bug testing... ofcourse...

I also adjusted my tileset/object/etc. datastructures. In the past they used an X and Y coordinate to indicate in which room they where, but since I use 'teleporters' to transport the player from one room to another, this method is bound to limit level builders and potentially make stuff a LOT more complicated then it needs to be. So now it's a single-coordinate array that indicates the room number.

So I suppose I should get some combat working now right? Well I guess... since you insist... I can't really give you an estimate on when it'll be done but I promise to get on it the coming week.

Updates will henceforth be posted in the weekends (with sunday as the latest possible day to do so). So be sure to check back weekly for the lowdown on progress!

Saturday, May 3, 2008

Vacation kicks asscheeks!

Just thought I'd let everyone know I'm still alive and haven't forgotten about this blog (and associated projects) yet.

I've been enjoying my vacation a lot. I really enjoy all the free time I have on my hands now... so much so that I'm sporadically doing work even! It's a scary thing... anyway... I've done a few things in the past week that I thought I would share here. I made some minor improvements to the control scheme for one. You now use a single button for all your ingame actions (versus having separate buttons for "use" and "choose menu option") which have been statically mapped to the control buttons.

You can also now toggle full-screen mode while in the game. And to be honest, I like fullscreen mode a lot more now that I can do that!

I also shifted some priorities around. I'll be implementing the "loading stuff from a file" system first before I move on to monster and combat. This so I don't do a lot of double work with the monsters and their attacks later on. I've been pushing this thing ahead of me for too long anyway.

So that's that. Now if you'll excuse me... I have freedom to celebrate!

Monday, April 28, 2008

Small progress is progress too!

Here's a list of code changes I did since the last post

  • Created a Monster class
  • Changed a variable playername
This Monster class is nearly identical to the Player class and will hold all the information about any monster you're currently fighting.

So not a lot of changes code-wise. I have however already thought out every other element needed to set up a battle scene. I've figured out what I need for the monster data structure, the AI attack data structure, the spell data structure, the weapon data structure and the move data structure. (A move is choosen in conjuction with a spell or weapon to produce varying effects with strategic advantages and disadvantages)

In short, I've figured out what I need to make and how I need to make it. Now all that remains is making it.

This week and next week are vacation weeks for me, and I might or might not do anything then (with the likelyhood of second week productivity being higher) but I'll make sure to at least post something here at the end of my vacation with a schedule and/or new deadline.

See you then!

Thursday, April 24, 2008

Fail due to gaming

Alright, so Wednesday passed without notice. I did think of updating with the current state of affairs yesterday, but wouldn't you know it... the moment I decided to do that is the moment blogspot/blogger decides to update and disable the creation of new posts.

I missed this time's deadline. I realize, after the fact, that it may have been a bit too optimistic to think I could have some basic encounters ready already, mostly because the following needs to be in place before an encounter can be had (this taking into account the order of things in which I choose to do them to avoid too much rewriting of code due to bad design choices):

  • There need to be monsters (I don't even have a monster class yet)
  • Encounter areas need to be defined (Location, which monsters you can find there)
  • Encounter areas need to trigger encounters on set intervals (or random intervals, haven't decided yet)
  • The encounter needs to trigger the new battlegrounds to be made (and trigger random monster creation)
All this is probably a good indicator for me to think through my deadlines better. Now I could attribute my failing to that entirely (and you wouldn't be the wiser) but I admit that there was something else that kept me from my work... that being Trackmania. This litte (well...little...) game is just too addicting... and I don't even LIKE racegames...

So the coming days will be geared towards setting up the monster class and trying to get an encounter going on. I won't be having a deadline this time around, but I'll be sure to post a progress update around the weekend to keep you informed, and myself motivated to keep this all up.

Until then!

Monday, April 21, 2008

Deadline met!

Woohoo! I made my own deadline!

The Sidebar is now complete as it shows the players current stats, keys, cash and all that crap. I made it so that you can specify which 'section' of the sidebar needs to be redrawn and everything else will remain as it is. This will hopefully have a positive inpact on performance as the sidebar doesn't need to be drawn every time the screen has to... and when one of your stats changes, only the relevant piece will be redrawn.

I hope I won't get such a boring task in the near future... because this hasn't exactly been the most exciting portion to write.

So my next step is: Combat!

I've been doing some thinking about how I want to do combat and I think I'm going to do something that combines Final Fantasy's "real-time turn-based" system with the whole "walk around on the battlefield" bit from Megaman battle network. I think I can come up with something that depends partly on your characters skills and traits but also requires a degree of strategy and forethought. I want to avoid a "encounter, instant-kill, rinse, repeat" method of playing so that combat won't become a bore as you become more and more powerful.

The levelling system has also been planned out now (although you can probably make out something already from the screenshot in my last post) and from here on in it's just a desiging and building process. I'm not quite sure how long this'll take, but I intend to have the "encounter a monster, get battlefield" done by Wednesday and a bit of actual combat by Monday of next week.

Progress is well, and I intend to keep that up! :)

Thursday, April 17, 2008

Progress Report for SDL-Rogue

Well, I said I would have the HUD done by thursday, and it's thursday so logically that would mean the HUD work is done right? Well... not exactly. I've made significant progress in setting everything up and writing all the procedures, but it's a lot more time-consuming then I figured it would be... not to mention the fact that it's BORING AS FUCK!

I'm not sure if that's the reason for my killer head-ache or some other, currently unidentified, reason, but whatever the case may be... I'm done for today.

I took the liberty of uploading a screenshot of SDL-Rogue to imageshack for your amusement... and to show that I have indeed been doing the work I say I've been doing... to clarify... that sidebar was pitch black at the time of my previous posting, and all the things you see in it now reflect the players actual stats (which are new as well)

So work will proceed on this and my current goal for getting the HUD done has been set for thuesday. That way, if my weekend ends up being surprisingly fun, I still have a whole day to work on it and get it done at the last minute.

I take these "deadlines" pretty seriously... so until then!

Oh, and check out this screenshot of the work in progress.

Tuesday, April 15, 2008

Current progress on "SDL-Rogue"

This is simply a repost of my own "Roadmap" that I have with the source code. Essentially it's my current achievements and goals document... if it isn't in here, I don't intend to implement it. Naturally I might decide to add stuff as I go along, but I usually plan them somewhere I feel it makes sense.

Anyway, the details.

Accomplished:
  • Tile rendering
  • Player rendering
  • Player movement (+ smooth movement)
  • Player collision
  • Camera implementation (+ border limiting)
  • Teleports (= visible or invisible staircases)
  • Upper layer (purely aesthetic drawing layer on top of player)
  • Performance increase + FPS Limiting
  • Doors
  • Popup Menu allowing player to "open door" and "unlock door"
  • Keys (with which locked doors can be opened)
To do:
  • Add stats to the player, render them in the sidebar
    - Name
    - HP & MP
    - STR, INT, DEX, CON, CHA, LUC
    - Keys
    - Money
  • Add Combat (with basic hardcoded weapon)
  • Add "Level up" functionality (stats change dynamically as you level)
    *Not sure how to do this yet, don't want to stick to generic experience/levelling system
  • Add carryable items
  • Add 'treasure chests'
  • Add item usability
  • Add carryable weapons (replacing the hardcoded one)
  • Add Spells
  • Have the following load from a file (instead of being hardcoded)
    > Specific objects (object[#][#])
    > The level (all the rooms)
    > Which tiles are collidable
    > Performance Optimization variables
  • Create a Main Menu, functioning as the program 'home'
  • Add Save/Load Functionality
  • Add ingame Config editting for major functions
  • Create "Random Level" routine to make it a true Roguelike game
  • Create a sepperate level editor to create rooms/levels/worlds
  • Create conversation system
  • Build a Singleplayer campaign
Obviously, there are a few things missing from this list... for instance... I have no idea where I will stick the 'different types of monsters' yet, I'm not even sure how I want to do that (computer generated, hardcoded, from a file) so that, among other things, is something I'll decide on when I feel it becomes necessary.

Everything else just outlines some things I want to do with this game, like a sense of direction. I want to have a singleplayer campaign at some point (because it's cool, and I get to show off my 'comedic conversation making') as well as being able to load a lot of crap from files instead of having that reside inside the program executable.

So it's by no means a complete list of all the things I'm going to do, and in what order I will do them, but it's a decent indication... especially when I'm going "Well... what should I add next?!?"

That's enough for today. I hope to have the stats rendering done by thursday, so that's what I'll be aiming for... now here's to hoping I can motivate myself to get off my ass and go and do that!

Until then!

Game Development, here I come!

So I figured that, in order to motivate myself, I should probably talk about my progress in developing games and all that, so here is the Blog associated with my own personal game developer company thing; Backyard Interactive.

This was originally going to be the name under which I and a few others would create a First Person Shooter as sort of a tribute to the Duke Nukem series... but that all got canned and since I still had the logo (and the name hasn't been taken by anyone else yet) I figured I might as well call it that.

So henceforth, you'll find updates on my developing for Backyard Interactive here.

--

Now let's talk games!

I'm currently working on a top-down 2D RPG game using C++ and SDL. The original purpose of this was to show how I can do this as well... but then after 3 weeks I wasn't quite there (features features features), so I figured I might as well toss the time table out the window and do a proper game with everything I'd want to see in it.

So at the moment, I have something that's probably more akin to a tech demo than an actual game, but I'll be hammering away at it trying to make it into something fun and (hopefully) entertaining to play.

I will post up a list of features implemented as well as features planned soon... it's been a few weeks since I worked on it and I need to review the featurelist again. I'll post about it under the name of "SDL-Rogue" as that's what the project name is at the moment :D

So, see you next time!