At this point I'm finding the in game editor that I've put together to be fairly functional. I have save and load functionality that works as would be expected for the player and a save function that I can use to setup a level's initial state. I didn't want to go with using tiles for walls so there were a couple additional challenges to getting the wall corners to match up together properly while making sure that player can slide along them without getting snagged or trapped. I'm setup to be able to add whatever I need to create conversations and have the characters move as the result of player interactions. But the one thing I think that's bugging me is the complete lack of any furniture or interior items. So the plan for the next while is to do some graphics work to try and furnish this house somewhat before going forward with creating any dialogue or story. Perhaps with some items in the house it'll provide inspiration for how to build the story. I also need to do some work on the characters, particularly what would look right for a pregnant character (you wouldn't know that babies are on the way from the current sprites). With the graphics all being programmer art, I'll be happy if I can just maintain a consistent style.
I created the project page for "One Day" about 3 months ago so I thought it's about time to write something more.
In general the project is to create a story on rails kind of RPG project. Fairly simple functionality with just the player moving characters around and having them give their lines when appropriate. After all the lines have been done for one particular scene, progress on to the next scene.
This is the first project I've worked on in quite some time where the level wasn't relying on procedural generation. I had found last year that I had minimal facilities for building levels other than loading in a basic tile map. I had managed to throw together some in game level editing capabilities fairly quickly but when I started including some old classes from another project there was a lot of work to bring everything up to date.
Recent work has been sorting out serialization related stuff for actors within a level. I've never had to handle things before where you have a level at an initial state and then it's possible the player has saved the game and you want to reload from there.
Other assorted things I've looked at the past few months:
* I haven't dealt with tile collisions in years and some work was needed to handle collisions with multiple tiles.
* Have an actor follow a set of tile waypoints.
* Trigger an actor to follow a set of waypoints after completing a conversation
* Attaching clothing to actors, paper doll style.
* Defining a character using a text file and loading that file.
So WOA V has come and gone. My submission was supplied just barely under the wire, flaws and all. Over all, I'm fairly happy with my submission and I don't really want to point out all the assorted negative things to the judges that I see when I look at it but those are the things that I had hoped to find and learn from by entering.
Thanks to everyone for making this jam possible. To our hosts at GD.net for providing the venue, to Slicer for setting up and running the show, to the judges, and to the participants. This all is a very different experience than just coding whatever I want at my own pace with no worries about bringing assorted features together to serve a purpose.
Things that went well:
I was able to submit something.
I'm generally happy with my submission.
I had fun.
While there was a need to quickly hack together some bits of code to make stuff work, the majority of the code changes needed to the base engine felt much less like a hack and more like a natural extension of the code than last year's attempt. I consider this a really nice personal success.
Avoided energy drinks on the late night development sessions and thus no post project migraines.
Level editing stuff that I did put together worked ok. You can actually still add in some stuff if you right click (should've turned that off for release, I suppose).
Things that just sort of went:
I spent more time this year on a main menu and on having a few levels to play. And with having a few levels to play I figured it'd be a good idea to allow for which one the player would like to start from and to put a small break in between levels. This all took up one of the late night dev sessions I had available to me. I wonder a little how things might've turned out if I had left these details and instead focused on other things.
Things to learn from or think about:
I struggled with figuring out what to do with the theme more than I had hoped. I ended up just with starting to work on small bits and hoped that an idea would come together, which it actually did in the end.
Level creation/editing is something that I found to be like smacking into a brick wall. This is likely to be my focus for the next several months, particularly since I'm at the stage of needing to look in this area for another personal project.
I had hoped to write more about my progress each day but I just didn't end up leaving enough time at the end of each dev session and was way too tired.
Could've planned time better.
(hiding some flaws from judges)
I tell myself that I'd like to do some finishing work on this when I have time to sort of bring it all closer to the point that I had envisioned. But I do have another personal project that I'd like to get back to. I'm not sure yet on what would be the best way to take things forward from this project into the other one. But eventually, forward it will go.
I'm somewhat close to having at least a preliminary entry even if it doesn't quite fit with my original description. I seem to have almost a bullet hell sort of thing. If I can get around to positioning some actors on the levels, and maybe be able to do more than just one level, or maybe load at least one level without having to use some shortcut keys, and maybe do something like count towers destroyed to be like an end condition... then I think I could call it a game.
I'm pretty sure I can get enough of those things together before time is up. Just not sure which ones and whether any of the other stuff I wanted will make it in.
The final sleepless nights are upon us. Good luck everyone.
Below is a screen shot of some assorted items that I've placed in a part of a world that I've flown the UFO to.
Basically, I now have an in-game editor to place the castles, house, wizards, and alien troops (though the alien troops are not supposed to have an on world starting positions). I can position them, save them and load them and I'm pretty happy about this because I haven't gotten an in-game editor together before and it's pretty cool to have.
I have no actual game-play yet though. I am a bit concerned about getting it so that it's possible for each side to at least shoot at each other and otherwise provide something to do simply because there always is something unexpected. Such is the way of things I guess.
I also still need to place stuff on the various level maps (thinking I might do 5), make it so that you could load different levels from the main menu, implement win / loss stuff. There's also some additional game-play elements that I was hoping to add to make it a more strategic game. But I'm not sure I'll have time for that or not. Stuff like ship health regeneration and replenishing soldiers.
I'm seeing in a lot of people's blog entries that they're not as far along as they'd like or that they didn't get much time in the past while and so on. I actually managed to get a decent amount of time to work on this today but still didn't get as much done as I would've liked.
But I finally have a screenshot. I wanted to have more stuff on it like some buildings and maybe some trees but instead of working on getting that all in place I got sucked in to working on an "explosion" effect. It was supposed to be something to pretty much just enable but sure enough there were a dozen various quirks from the last time I used it that needed to be ironed out. At least in theory I will be able to use for destroying the UFO and other objects when the time comes.
Where I am:
Where I hoped to be (mock up)
The general idea is that you drop the snail looking soldiers to attack any soldiers on the ground or wizards in buildings and convert the other buildings into something that would replenish energy that you'd loose anytime your UFO is hit by a magic missile. I was thinking that you could shoot at the buildings as well for quick destruction or defense but you would need the buildings and some people alive in order to be able to get the energy manufactured.
There's way too much left to do at this point. I was really hoping to have all the assorted actor classes created tonight and maybe get some code together to be able to position the buildings and stuff. I don't think it should be all that bad to do, it's just time consuming and I have no idea what issues I'll encounter when I try to implement the gameplay. But I like the general idea and I'm going to stick with it until the end. Gotta see how it turns out, you know.
So the plan for today was to get some kind of level loaded up. I've been able to import some tile maps generated from an old project which works quite nicely for the world terrain. However I had some terrain type contour lines that smooth out the tiles nicely and I haven't been able to get that working yet. Not sure if I'll have time to fight with that or not. As it was, I was fighting a bit with getting just basic square tiles displayed. But I'm able to scroll around the world and take a look around. I'm really really hoping that I can get a UFO into the game tomorrow to drive around instead as well as place some towns and castles and whatever decoration I can. I feel like I should have a screenshot of something by now but it really wouldn't look like anything more than some assorted squares of nearly the same color at the moment.
Getting late and gotta get some sleep.
So, I guess I've pretty much committed myself to going with "Alien Invasion" and "Castles" such that the game I'm hoping to make has the player flying around in a UFO, dropping off alien troops to invade a town, and hopefully having some enemies to shoot at and avoid. I figure maybe wizards, that are sitting on top of a tower or maybe walking around, might be able to provide a reasonable energy weapon to fend off a hostile UFO and some kind of general soldiers on the ground to defend against the invaders on the ground. I would prefer to have a couple more types of enemies to deal with but I'm going to start with that.
The entire thing is way too ambitious but it's what I got at this point and I figure I gotta forge ahead. Pretty sure that just about any existing code that I have laying around is going to need to be redone. The graphics that I've been playing with at this point I like but they change the scale of everything that I've done in the past to make the castles look a decent size, so there's going to be lots to rework there. I do like the general idea because it is a bit of a shot at actually having the player invading towns with castles being their only real defense. But since I'm likely to end up simplifying any ideas I've had up to this point, I have no idea if it's going to be at all challenging or fun.
The goal in the next few hours is to try and get some kind of world or level generated, hopefully with towns populated somewhat.
Before this whole competition started, I was hoping that I'd improve on the scores that I got last time. At this point, I'm just aiming for being able to submit something.
So, it's been 7.5 hours since the theme for this years Week of Awesome has been announced. I'm pretty tired and other than thinking I'll probably do something with "Alien Invasion" I'm not quite sure what direction to take it. I have a couple ideas that might fit the other themes but I'm not sure they're within my reach for putting together within a week. Mostly been playing around with some assorted sprite doodles, seeing if anything inspiring comes from that. Also did a little work on a generic main menu and listened to some assorted music that I was hoping might be something that I'd like to use. Nothing has resulted yet in any kind of light bulb moment.
I'm realizing just how little I ever actually get around to working on game play. Usually I'm coding some feature or another that's supposed to ultimately build up to something but they don't tend to all come together to form something entertaining. And level building is something that I don't think I've really taken any look at for a very long time. It's something that I really need to take a careful look at after this competition is over.
As I'm trying to figure out what to write here, I'm considering an idea maybe with aliens invading castles across some world map. It's about the best notion I've had so far on anything I might be able to put together, though I'd need to figure out just what the challenge would be. And none of the doodles that I've done tonight would really fit but I could maybe use some assets from other projects.
You know... because of the undead, right?
Ok let's see here...
Stuff that was good:
Well first and foremost I had fun working on the game. It's the sort of feeling that reminds me why I love programming.
I was able to balance project time with real life time rather well, I think. Though I could've used more project time, I don't think I'd really have been able to find it without being completely irritating and useless for anything else for the entire week. By my estimates, I spent around 39 hours trying to work on my entry.
My wife was very supportive with helping me find the time to work.
I got my submission in before the deadline.
I like my game. Which is a first for my previous entries to game jam sort of events.
I found a couple bugs in my engine code that had been problems for some time.
I have what I think ends up being a cool new spell to use in other projects, complete with animations & sound.
Experiments with the hand gesture system went well.
I was lucky that Endurion shared where he got his music from. The background music I found worked well and I wouldn't have it if it weren't for his journal post.
I like that I was able to get a game together where a main element was "Shadows" without the use of shaders (my laptop video card just doesn't support any). For that matter, I think I'd be able to remove the small amount of alpha blending that I'm doing without much impact (although I have a few ideas to use it for some special effects with the shadow orb that might enhance things a bit).
Stuff that went horribly wrong:
Nothing actually felt as though it had gone horribly wrong or had me stressed out or worried. That's not to say though there isn't a lot of...
Stuff to learn from and look at improving (this kind of stuff was a fair part of my motivation for entering):
I was getting burnt out by Thursday. Fortunately, once I'd start working, I'd get back into the swing of things and have to force myself to stop. But as it is right now, I'm not anxious to get back to working on other personal programming projects. I'm figuring I just need a bit of a break.
I've only just gotten over the withdrawal migraine from the energy drink's caffeine.
An 8 year old laptop is very slow to compile things on. Nothing like tweaking a variable and waiting 1.5 to 2 minutes for the rebuild.
That same laptop does not like me to keep browser windows open in the background while programming.
I am not setup very well for any kind of rapid prototyping.
I have a lot of code that I dread having to add to each time I want a new actor type. That crap needs to be refactored.
Collision detection remains the bane of my existence. I do not have a good system for it at all. I'd love nothing more than to replace it with a nice physics system like Box2D but I'm not sure if my hardware can support it.
I was hoping to be able to rework all of my graphics. I recently finished playing "Ittle Dew" and I rather like the art style. I'd like to try to get some stuff together that resembles that style and I think that means that some of my graphics code needs updates as well.
While I might be able to continue lying to myself about my graphics skills, I have no ability to produce a song beyond playing "Old MacDonnald had a Farm" on my synthesizer and my synthesizer has not been functional for quite some time. Music really added to the feel of the game and I should look at working with someone next time.
I can lie to myself only slightly more convincingly on my ability to produce sound effects, but if I can accept the need for someone that's able to do music then I should broaden the scope of that need to include all sound work.
I had every intention of having a menu screen. I was all setup with TGUI to get that going but all I used it for was what started out as debugging text and ultimately became the score display.
I really need to setup my code better so that I'd have an easier time resetting the game on player's death. It should've been like one function call to reset the game but instead I was looking at another hour or two of work with the potential to miss resetting something.
I'm not sure what my next step is gonna be. I have an unfinished tree control I was working on for my endless RPG project that I was feeling good about working on. I'd like to look at that art and graphics stuff as well though, I really wouldn't mind testing out Unity or something else to see what sort of issues it might fix automagically and for that matter learn something new. I tell myself I need a new machine before I get into stuff like that though. I have a notion of running through each of the old Experimental Gameplay Project themes for the sake of getting through a number of small projects and learning and evolving code from each one.
I suppose the thing to do is think about that question that a marketing friend of mine asked once when I asked for advice, "What is it that you actually want to get out of your project?"
Seeing so many people with an entry ready to go is a bit intimidating. But it's also quite motivating. Congratulations to everyone that has their entry ready to go.
I spent too much time last night messing around with a spell charging mechanic that before I even started working I figured that I shouldn't look into and eventually in a half finished state I confirmed that it was an annoying inconvenience compared to just throwing orbs quickly. I wanted to get the player death animation in place before I ended last night but something seems to be preventing it from playing when you collide with the shadow hazards. I need to finish that up quickly and get the skeletons in there as fast as possible. I'm hoping that they'll be ok with a very basic move towards the player kind of AI otherwise the game is not going to be challenging at all. If I can get that stuff in then I hope I have time to get some kind of basic menu and other polish elements in. It's gonna be very tight.
Slicer said something about hoping that everyone is approaching the polishing stage of their projects. The notion that I'll be able to focus on "polish" seems rather wishful thinking at the moment but perhaps it's not entirely out of reach.
The player can now... I guess "evoke" is the word, a shadow orb into his hand and throw it. Currently, when thrown it seems to curve somewhat around trees, which is rather unexpected but actually pretty cool. I think it may be the result of some steering behavior code but I thought that I left that part out. I need to add one more small animation so that when the orb comes to rest it forms a pool like shadow on the ground that is a hazard to the player. Also, the shadow orbs, as well as everything else, need a bit of a shadow of their own for some sense of height from the ground so that there's a bit of an indication as to why it just seems to stop. When I have that in place, I should make sure the player can die from contact with the pooled shadow orbs on the ground. And then I can finally see about getting the skeletons added. Their AI isn't going to be much at all but if I get them moving towards the player and they attack in some way, then I do believe I have my main elements and something that resembles a game, for all its rough edges.
In this screenshot, I didn't move the player while firing off orbs in various directions. The resting appearance will change by the end of the night. You can see the curve where the orbs landed. I had intended on making the player charge up the spell to evoke the orbs before being able to throw them but I don't think I have time to work on that and it's also pretty cool to fire off a bunch of them in rapid succession. Given that every orb fired becomes a hazard to the player (skeletons won't be affected by the missed orbs because... um... magic), I think I'm better off with the way it is. I'd like to try a charging mechanic afterwards though to see how it might look for other projects. It occurs to me that maybe the shadow orbs or the resting orbs don't look so shadowy. I'm hoping that I can get an effect or two in that might help and otherwise be convincing that what I have is a black shadow based magic as the main mechanic even if it's not what might be expected graphically. If not... well I've been having fun doing all this which has been as much my hope as anything.
I'm pretty tired and so I'm planning taking this evening off from coding and getting some sleep. Except I thought that I should post something so I thought, well I did some art stuff earlier today maybe I can throw a gif together quick. And now I'm a bit in the mood to try to get more art work done. Maybe just do one animation for when the player walks onto a shadow and is consumed by it himself. It should be similar to this skeleton death but the shadow should pull the player from below rather than spread from the middle.
(edit) Ok now, 30 minutes earlier is still "more" sleep and I still haven't done any coding but I'm happy with the human death by shadow and thought I'd add it in. (/edit)
I'm not sure if I like the shadow orb that I have at the moment. In the game, I want to rotate it, add some kind of alpha blending effect, and have it grow up to this size as a "charging" sort of mechanic before the player throws it.
I also still need something for when a skeleton attacks the player. I'm not sure what that's going to look like. Maybe just some blood squirting out or something. Which then implies I need a status bar of some kind which shouldn't be difficult but I hadn't though about.
As for code work, I found the teleporting issue last night was the result of some code from another project I accidentally mixed in. I removed that and was able to control the player properly. I can walk around the "island" now and the screen scrolls around with the player. The island need some more details and for the trees to get out of the water but my focus for the next bit will be on being able to throw an orb of some kind at a skeleton and destroying it. Then comes the hazards to the player. I'm hoping I can sort all that out with a marathon session tomorrow night.
I'm slowly making progress but I think I'm starting to feel the weight of the work involved here. This project is on my mind quite a bit and it's starting to feel like a really long car trip. You can't quite take your attention off of trying to move forward and when a bit of a break comes you welcome it and don't really want to get back on the trail again except you know you have to make it to your destination on time.
I'm about to try and get some work done before bed. Earlier I was able to finally get some sprites on the screen. Basically, it looks like my mock up from yesterday but I don't have any skeletons functioning yet so the mock-up still looks nicer than the actual thing. It's good to be able to scroll through the world though and see the trees. I need to fix some kind of bug with the player character's movement tonight. For some reason when you set the destination waypoint the PC starts moving and teleports to, I think the top left part of the map. I can scroll the map to find and follow the PC who looks like is kind of trying make it to where the destination was supposed to be but then teleports again after walking for awhile and doesn't always end up in the same area.
If I can get that sorted out there also appears to be a matter with the collision boxes to look into which hopefully will make the trees solid.
From there, I would like to try and arm the PC with a shadow orb to throw so that I at least have something that I can call a shadow mechanic. But I'm not sure I'll get to that tonight.
Another night of questionable progress. Pretty much everything has just been trying to get things to compile. Find one piece of functionality that I want to use and that's dependent on some other code which depends on some other code and so on. I have been able to get the blank terrain laid out and some ability to scroll over the small world but that's about it for today functionality wise. I'm hoping that the other stuff I've been trying to add will get a couple actors in there soon and some trees placed so that there isn't a sense of nothingness. If everything does go ok I should also be setup to move the player around with the mouse and have skeletons walking towards the player.
I also tried to get some work done on a spritesheet. Still lots to do and at the rate things are going I don't think I'll be able to see about making the sprites bigger like I had hoped.
I'm a bit impatient to get something on the screen to show off so I threw together a mock-up of the kind of thing I'm aiming for.
Ironically, there's no shadows here at all and what I do end up with will probably be a baked in sort of thing. I'm hoping that the idea of using a shadow orb as a weapon and turning your enemies to shadows will meet the requirement.
I think last night ended up being around 6 hours work but maybe half that coding and the other half writing and trying to come up with some kind of idea. Basically, I have the various libraries and stuff together and built to a Hello World sort of state where I probably should've been the night before.
Like I figured in my last post, I'm gonna go for using Undead and Shadows. I'm thinking a basic 2D RTS survival thing with increasing waves of skeletons or some other kind of undead coming towards the player. The player defends himself by shooting shadow orbs at the undead which then upon impact "melts" the undead and leaves its shadow on the ground. If the player later on steps onto one of these shadows he will also melt and the game is over. And of course, if the undead get to the player they kill the player and the game is over. Probably need a life bar in there of some kind but I want to get these various elements in there first.
I'm a ways off of having anything really to show in the ways of screen shots. I'm hoping to at least get the tilemap stuff working and some kind of basic level built tonight. If I can do that then I'll take a shot and working on the sprites a bit so I have something to show off.
Best of luck everyone.
The twins are in bed and my work station (kitchen table) is pretty much setup. I believe the theme was announced about an hour ago and I'm very much unprepared. I had every intention of setting up a blank project last night but instead took on some wasps or hornets and couldn't get back into project mode. I'm telling myself that the aim of entering this contest isn't to win or even "just finish", it's really more to take a stab at it and just see what happens. Or another way it's in my head, "to see what I can see". (Whatever that means).
The theme options, as it happens, includes undead and I have a couple single frames of sprites from my RPG project. I'm thinking that I'll have to redo them a bit for size and maybe details but having that as a bit of an anchor is a nice way to start. As for picking a second theme, my instincts say "Shadows" but I'm not sure where to take that. It feels versatile though. I could maybe get some kind of ruin graphics together but having some kind of direction of what the game should be would probably be better to have than to worry about additional graphical inspiration,
For participation points, I'm hoping that my general ramblings will be sufficient. I ramble a lot as I code so I'm expecting that I'll be able to take some of that and copy & paste it here. Hopefully figure out how to do screenshots here quickly. I doubt I'll be doing much on it at all but, I tried popping onto that Discord thing and there doesn't appears to be any activity at the moment other than old posts. Probably everyone's either working on their project or asleep. I was able to take tomorrow off so I'm hoping that I'll get a bit of a jump on this thing for now. Maybe at least get some ideas and a skeleton project sorted out (no pun intended). Work resumes Tuesday and the twins will be up bright and shiny in the morning. So time management... I have no idea, I'm just gonna wing it.
SilviuShader posted some details about what he's working with, so I'll do some of that too. I plan on using:
- Visual Studio 2010. - Paint Shop Pro - Ver 4.12. - MS Paint . - Sfxr if I'm able to get to any kind of sound effects at all . - SFML 2.3.2. - TGUI v0.6. - Maybe use an old version of ANL from JTippets. - A timer library that I don't have a name for.
I don't know how to describe the so called "engine" that I'll be using other than to say it's a mess of my own code that I've been piling junk onto for over a decade now. If I am ever to take making games seriously, I need to abandon it. But for just having fun working on projects, it works ok. Kinda.
One thing I've given no consideration to is making the final executable and all available so hopefully that doesn't end up being an issue.
Overthinking the whole team name thing. Gonna just stick with my original login name.
I think I've rambled enough here for now. Gonna try and brainstorm a bit.
I'm procrastinating on beginning the next thing I want to work on for my project so I thought I might as well post something here. Unfortunately, there's not really much progress that can be shown with screen shots or video. So for the heck of it, I thought I'd more or less just copy & paste the descriptions I have on my back up folders.
2014-09-25 - Replace overworld array of Tiles with Tilemap object. (to help create basic house interiors)
2014-10-01 - Tilemap stuff still in progress
2014-10-14 - Mostly Stable
2014-10-21 - Work on neglected Serialization code
2014-11-07 - Fairly Stable
2014-11-10 - Change Town object into Actor object
2014-11-21 - Mostly working again
2014-11-24 - Beginning NPC Instruction work
2014-11-27 - Refactor instruction script code.
2014-12-04 - Instruction labeling
2014-12-12 - Scripting changes in progress
2014-12-23 - Generally Stable
2015-01-09 - More Collision Refactoring
2015-01-12 - Collision rewrite in progress
2015-01-14 - Collision rewrite looking ok so far
2015-02-19 - Collision work
2015-02-24 - Embedding collision issue appears resolved
2015-02-27 - CollideTestStep1 Rewrite
2015-03-04 - NPC Path finding and steering still sucks but is reasonably stable
2015-03-19 - Begin Connecting Houses with roads
2015-04-07 - Redoing House Connecting
2015-04-15 - Houses now connect with fewer Road objects created
The current plan is to get these Road objects all in place such that they effectively connect all the houses in a town to each other and also connect one town to another. When that is done I'm planning on having NPCs do their path finding based on the network of road objects rather than map tiles.
I'm not sure how I got on this tangent but it appears that the direction I'm going is to try to get something looking like a busy town where the people wake up at home, going to work, maybe going shopping or to the pub, and then head home and repeat. There's still no actual game to this thing yet but I'm pressing on with the theory that if I can turn this day to day activity into a simple economy (probably centered on rent, food, and beer) then maybe adding in things to disrupt activities will provide a player something to do.
I suppose if I really wanted to, I could just abandon the path finding stuff and let townsfolk wander stupidly and then carve out some caves underneath all the towns where demons and treasure could be found. I'd have something more resembling a game rather quickly. But I think I'd rather see if this plan that I have going will work out.
Been steadily working on this RPG project an hour or two at a time and finally got around to making a new video. Though there's lots of stuff going on in this project, I still don't have something that can be called a "game". It's still just the PC wandering through a world where there isn't really anything that happens. Just the various features I thought would be fun to work on. The apparent responsiveness is a little slow between not having a fixed time step and having to do the video capture on an older laptop.
Added some birds and NPCs into the world. They don't really do anything other than wandering around a bit and generally giving you something to look at.
You can see my version of "Fast Travel" (I mentioned in my last post) when the PC is traveling along a road and those stars appear a bit in front of him.
I don't have any examples of trying to steer through forests but there's a bit of walking around NPCs and buildings. It still needs some work as steering only takes place when collisions occur but I'm pretty confident I can work out something better when I figure on investing the time to do so.
You can see a bit of what I've done with the hands (if they're not too small) in that you can see them swaying back and forth as the PC walks. They aren't directly connected to the sprites but are more like disembodied circles that follow the PC and NPCs around. The hands are capable of performing "gestures" when triggered. The only gestures you see in the video are the swaying of hands while walking and one that happens when the PC swings a staff around. It's supposed to be like a sort of reach and follow through sort of motion but I got lazy and used one of the test gestures I had previously gotten ready rather than properly doing up a custom one that fits better.
I'm not certain yet but I think combat is going to change from the little bit that you see in the video. I'm thinking about changing from the more action based style I have now to something that's more turn based.
Added regions and towns. (Started adding farms as well but they're not present in the video).
Houses and farms are placed somewhat randomly around the town's epicenter. An NPC is added near each house that's placed.
At a point closer to the end of the video I set off an "explosion" on a field of flowers, if you're wondering why it looks like a bunch of flowers just suddenly go flying. "Exploding" things was supposed to be a part of developing a spell of some kind which didn't go very far. But the functionality is there and I thought I'd show it a bit.
Had a bit of trouble with SFML in that the (old) laptop that I do some of my testing on uses an old Intel graphics chip and there's been known issues. The problem I had was when it came to trying to do alpha blending to a couple different off screen buffers so that I could play around with lighting effects. It worked fine on the desktop that I do development on but not the laptop. The problem could probably be easily resolved by updating the graphics drivers but doing that sort of thing has been locked down by the laptop manufacturer and I haven't found any work around. So for the time being I won't be planning on doing anything with lighting in this project. It's a bit of a shame too because it seemed to set a mood when it did work.
The past few weeks have been spent on trying to create towns and connect them with roads. So far I'm pretty happy with the results (screenshots below). The roads do this thing though where they switch back on themselves such that you get pockets of wide roads and this interferes with the fast travel that I have going. I'm currently looking at adding farms for NPCs to go work on. I want to do a schedule sort of thing where they go off to work and then return home or maybe stop at a pub or something. Maybe add a few other jobs eventually. I'm hoping that this will add a bit more life to the world and eventually lend towards creating situations for the player to interact with and do something other than wander around pointlessly.
The regions were done using a Voronoi algorithm. I started out by finding points on my map that were 32 pixels apart from each other then applied the algorithm. The result was my island being divided up into square regions so I randomized the position of the points a bit and got a result like the one below with the small regions. Then, I choose a random point for where a town's epicenter would be and removed any points that were within a certain range and ran the algorithm again. And repeat the process until I've placed all the towns I want.
(first pass) [sharedmedia=gallery:images:5509]
(final pass) [sharedmedia=gallery:images:5510]
(map blend with roads, buildings, and farms) [sharedmedia=gallery:images:5511]
I have been working on this project now a year and a half. I wanted to post an update back at the one year mark but I kept thinking I need to include screenshots or videos to really show off what I've done. There isn't much that has come out of the past 6 months that could be shown with just a screenshot and I never seem to have the presence of mind to make a video when I have the resources handy.
Old code The one year mark of this project would've also marked the 10 years that I've been working from the same code base.
My Code base's 10th b-day So 10.5 years ago now, I started writing the code that I'm using now. Back then I was looking at getting some classes to handle 2d animations and generally try to keep things organized such that animation data, graphical data, and game related data for characters were all kept separate and manageable. For the most part, the animation class has changed very little over the years (changed from using arrays to vectors awhile back and just recently a change to support different animation types better) while the other two have evolved from one kind of organized chaos to another, spilling into additional classes and sub-classes.
Switching to SFML One change that was long overdue I made last September and that was switching from DirectX 7 to SFML 2.1. If I remember right, DX7 was obsolete when I first started with it. But it so happened that I was able to wrap my head around the code I found for it well enough back then and all I really needed was to just get an image to the screen. And it did that well enough for my needs for quite awhile so I never bothered looking for anything else. Finally though I found with this RPG project I'm blitting enough things to the screen that it was really slowing things down on my target computer (which is also quite old). After a few attempts at trying to make things more efficient and looking around for options, finding out how much things would improve if I was taking advantage of hardware acceleration.
I went with SFML because it was the easiest to get working. Or at least, it was the first option that I got working. I found both SFML and SDL streight forward enough to get an image to the screen but I was unable to figure out how to make use of hardware acceleration with SDL. I would've experimented with an updated version of DirectX or XNA but I was limited by my dev machine. In the end, SFML was the easiest to install and see an improvement with.
Movement stuff Most of the past 6 months has been messing around with movement. I already had a system for using A* that is working alright for me but there was other stuff to do.
Walking through forests. Since my last post I've changed from using a keyboard to move the player to using the mouse. I did this because I like the fairly thick forests that I have in the game world (see video in previous post) and I want to have it so that the player can move between the trees reasonably well. It was just way to easy to get caught on a tree when moving through a forest using the keyboard. Some quick experiments with mouse movement showed that being able to travel at angles other than 45 and 90 degrees really helped. The path finding stuff that I had didn't have the resolution to navigate between the two or three trees that could be found on a tile so it took awhile to get a sort of steering behavior and path finding combination working to make travel through forests reasonable. It's still quite possible to get a bit caught on trees but I'm thinking trying to move through a forest doesn't have to mean flawlessly traveling to your destination without the need for changes in course.
Fast travel element added. Before that got done though I was sidetracked by an idea I had for a fast travel sort of thing. I'm not sure why I started thinking of it but I figured if I needed such a feature I'd want to avoid having it like you teleport from one place to another. As it is, I've occasionally generated 1024*1024 or 2048*2048 maps to play with and walking around a world that large does get a little tedious. I ended up laying down roads from the center of the map to random locations using the A* stuff that I had to try and find a path such that roads are 1 tile wide and are laid down so that changes in elevation from tile to tile are minimal. Now, when a player is on a road and does a mouse-key click combination, a flood fill sort of thing is done down the road tiles to the next point an intersection is found. A path is then set to that destination and the player is moved along the road at an accelerated speed. This way, you can follow a road quickly without knowing where it's going and you can always interrupt the travel to go off road.
I don't really know if roads are going to play any part in whatever I end up with for a game but it was an amusing diversion and I can use the feature later if I choose..
Future development plans
Hands When I started this project I was thinking the main character would be trying to learn magic from the ground up. So I wanted to be able to show hand gestures without having to create sprites for every imaginable combination. Since my main character is basically a couple minor evolutions away from a rectangle body with a circle head, I figured why not a couple more circles for hands that are sort of disembodied. Not worrying about drawing arms, I should be able to float these hands around in whatever pattern I need them to and hopefully get a versatile way to animate interacting in different ways.
So far I've just worked on having hands sway by the player's side as he walks. Still a fair bit more to do here that will take my focus for the next while.
Combat (lack there of and some planning) Probably the main thing holding me back from adding combat into the game is that it seems like I don't have a reason for the player to fight. And that's pretty much because I'm not yet that sure what it is that the point of the game is. The slimes that I've added so far aren't aggressive to the player and I can't really think of a reason for them to be unless I embrace the notion of making a hack and slash sort of game. There's nothing wrong with that but it doesn't really seem to go with the other features that I've developed so far.
But awhile ago, somebody posted, I think it was on their journal, that they were switching from a mouse driven movement system to a keyboard one because they found that it provided a better overall experience when it came to combat. I'd link to that post but I can't seem to find it. Whoever you are, thanks because it made me realize that I'll be facing this problem too. In my case though, I'm not willing to abandon mouse movement because I want to keep the whole moving through forests element that I like. After thinking on how to do combat for awhile, I'm leaning heavily towards something where the PC is kept facing the mouse cursor and the player would press a key or mouse button to execute a melee attack. The attack will have a range that I guess could be described like a radar sweep of various widths and lengths depending on the type of attack. Anything within that sweep will be considered hit. I'm hoping that this idea will keep the pace of the action that I currently have.
Sorry, I don't have anything "Awesome" to share. Unless you've been following my journal posts anyways in which case I have a video that I think is pretty cool. The video is basically a walk across the island from the northwest corner to the southeast. You can see the slimes lurching around and some fallen trees in places. No dinosaurs though.
For the moment the winter environment has been replaced with one that's more like the ground says it's summer but the trees say it's autumn. That's only really because I've been playing around with world gen a bit and this is where I've left off for now. At some point I'll have a proper plan for stuff like biomes and regions on the island but that's a bit away yet. Oh, and I feel that I should mention that the blue stuff that looks like water isn't really water (not yet anyways).
I should also mention that the map that's displayed for a few seconds at the beginning shows the general island shape and some vegetation features. It's not a part of the game yet but I thought I'd include it in the video as an environment overview sort of thing.
At about 3:38 I triggered a path finding operation on all of the slimes left on the island (about 250 slimes on a 256*256 tile world) and the game lurches for a little bit (I don't think it's so bad if only one or two were to path find at about the same time). The slimes all find a path to the player's current location and I display the path of one of those slimes using the fallen tree graphic. Once the path find is complete, I follow the path back to the originating slime. There's a couple spots that aren't exactly optimal that I'll have to look into. So, still more work to do with improving pathing but it'll do for the time being.
I still need to make a game out of this world that I just keep adding details and things to. I'm leaning towards having the player try and discover potion recipes (and maybe a few other spells) with the ultimate goal being to conjure a portal to escape the island. The idea at the moment being that the player puts a bunch of ingredients together and ends up with a potion but he doesn't know what it does. He has to experiment with it a little bit (somehow) to determine if it's safe to drink or if there's a proper way to apply it towards forming a portal or doing something else. Ideally I would like to make potion recipes random for each world generated but I need some sort of procedural way to generate recipes, provide a fun way to discover and experiment with them, and for that matter determine what the effects are supposed to be.
Sometimes I wonder if I should skip all the magic stuff for the time being, throw together a few more critters, drop in some treasure stuff and an exit portal somewhere and just release the game more as a warriors adventure sort of thing. I have a feeling that I wouldn't be as far off from finishing something like that. Then maybe look into the magic idea more afterwards. Potions, treasure, simple weapons and armor upgrades, maybe some survival element with food or something. Not sure what I'd do with the trees and flowers though.
Also of note, the frame rate isn't very pleasant on the computer that I do the video capture from. I gotta wonder how much of that is due to the the essentially 'brute force' coding techniques I'm using to get all those objects to the screen. At some point I'll probably have to look into doing something that takes more advantage of video hardware or just see about any sort of technique more advanced than the simple DirectX7 Blt() calls that I'm doing. Maybe join everyone in the 21st century.
So, the assorted stuff I've been up to this past month or so:
Create a pile of wood when a tree is cut.
Slimes leave piles of wood after colliding with trees sufficiently.
Spent some time reworking some collision code
Fixed bug where actors wouldn't do anything unless they're visible on screen.
Fixed up some animation stuff.
Worked on path finding code and related changes. Tried to make path code more extensible.
Worked on frame rate issue related to terrain edging. Better but not completely resolved.
Lamented poor redraw speed.
Experimented a bit with adding shadows to sprite bitmaps.
Experimented with enlarging the world (and related code changes to make it easier to do so).
Turned off seasons and temporarily switching to using elevation to decide biomes.
The 2048*2048 world with 32*32 pixel wide tiles took about 6 minutes to traverse from west to east.
Added code to output world map to bmp.
Turned various arrays for world map into 1D arrays to better support ability to change world size.
Worked on placing grass & flowers less randomly and instead try to grow "patches". (needs more work)
Removed the dirt mound I was displaying with grass and trying a shading on blade base instead.
Output vegetation map to bmp file.
Started getting concerned about memory footprint from all the vegetation objects being created.
Returned to 256*256 island size. Memory use turns out to be reasonable still but frame rate still lower due to all the additional objects displayed.
Added a splotch of different terrain type in island center to go with potential game element idea.
Hey, if anybody has any interest in maybe seeing this thing finished a little sooner as the warrior's adventure sort of thing I mentioned, please let me know. If there's a little interest then maybe I'll try and get something going parallel to this project going. If there's a lot of interest... well I don't think I get enough readers to have a shot at "a lot" of interest but in general more input will influence my direction more.
I'm not all that sure what area of my project I should be working on next. So I thought I'd procrastinate a little and do up a journal post since it's been awhile. I wanted to have a video to go with this post but I don't have the capture software handy and when it is handy I never think of it. So here's a quick screenshot:
It doesn't look much different from anything I had before. The only obvious difference is the slimes. They sort of lunge about in random directions at the moment and if they collide enough times with a tree the tree disappears as if the slime has eaten the tree. They also "eat" any flowers or grass they come into contact with. The "eating" doesn't seem to occur exactly when you expect them to though and I think that's due in part to the collision boxes being smaller than the sprites.
Right now you can attack the slimes though they don't attack back. When you hit one it's sort of pushed off a bit in the direction of the attack. They can take somewhere from 1 to 4 hits before they just disappear.
The lunging movement of the slimes was kinda fun to work on (a video would be really good here, sorry). At first they looked kinda like they were just gliding along the ground, about what you might expect from a sprite being updated in one direction with no acceleration or anything applied. The lunging movement was just done such that when processing movement and there's a speed in some direction, before actually moving you first play through an animation where the bulk of the slime shifts to one side. Once that animation completes, you start to actually move the slime for awhile before essentially starting the process over again.
Other stuff I've done since the last journal post:
Load various settings (like season and some world gen stuff) through xml file.
Added half-assed progress indicator in title bar for island generation.
Added grass sprites and made grass mounds change colour depending on season selected.
Considered changing colour of leaves for seasons and otherwise making tree sprites a little more dynamic.
Some work on layering bugs (still not perfect but better).
Added a "schedule event" queue.
There's a lot of stuff that I would like to do yet, some little things and some quite a bit larger. Like:
See about getting a sky box in instead of the black background.
See about planting flowers on a more regional basis rather than the current technique.
Give a purpose to flowers and grass.
Create some sort of inventory system.
Create a player health system.
Fix up attack swoosh locations and ranges.
Implement PC's floating hands.
Make it possible to descend into the caves.
Leave logs when a tree is chopped.
Make it possible to build a structure (maybe).
Create a monolithic marker stone in the center of the island.
Do some work on the scrolling boundaries.
Get some path finding stuff added.
Improve timing code.
Lots of other stuff, I could go on and on and on.
There is so much to do but none of it really pushes me towards having an actual game. I still just have this world populated with a bunch of stuff with a little bit of interaction available but no game. I know what my overall goal is, at least for the first iteration (escape the island by creating a portal), but I'm not sure yet how to go about making it an entertaining experience. The slimes were supposed to be enemies to contend with but with the general goal and story I have in mind they're more likely to be a form of wildlife than a full on threat. I need some sort of underlying challenge other than just getting the stuff together to form a portal and escape.
It kinda sounds like there's been quite a bit of development since my last post but there's been about a month where no work has been done at all. Having recently become the father of twin boys, I took 4 weeks off in June for parental leave to figure out what the new life routine will be. Other than having a lot of stuff crammed into our house that we don't really have room for and a sort of sense that I'll perpetually be worried about their future, everything is going really smoothly.
About a month ago I wanted to have a post that included a video (and I have one now here). But when the video capture software I used came across very choppy, I figured it was due to inefficiencies in my code. And with the controls generally feeling sluggish, I just thought it made sense to spend some time focusing on finding ways to improve my rendering.
I figured the problem was that I was doing a significant number of blts for the trees per frame and that was slowing things down. So the plan I had was to do a pre-rendering of the tiles that made up the current display. I would let one frame be a little slower when I prepare a bunch of buffers for the tiles that would be displayed. Then subsequent frames would just use those buffers to do one blt that would include all the trees and flowers on a tile that would otherwise each require there own blt. That way, I would only have to do a full redraw of the tiles where something changes. I seem to remember hearing that redrawing only what changes is the right way to do things so I felt like I was on the right path. With only a short amount of time on any given day, I spent the past month or so working on this and early this week I got the basic fundamentals of the functionality working. It was buggy as hell but it worked sufficiently that I could compare the change to an older version.
It turns out that the original video I tried to capture was choppy because of poor settings I had the video capture software set to. And all that work for the past month didn't result in any real performance improvement. Though apparently during all that work I pulled out one small unused piece of code from my game loop and that was enough to improve the sluggishness that I noticed before. So, I'll be rolling back to more or less the code I had a month ago. Maybe that whole tile buffer idea was the right way to try to go or maybe it was completely misguided. But in either case the old code works better for the moment and I want to work on something for awhile that will feel like I'm moving forward.
Anyways, here's the video of what I have so far. All you can really do right now is walk around the world and chop some trees until they disappear. I don't want tree chopping to be a major part of the game but the code that works behind it should be useful for other functionality. The scroll position jumping was my answer for the flickering issue that I was experiencing before. It still needs some work so that there's less confusion about where you are but I'm thinking that it's just a matter of tweaking when (or if) the slower scrolling takes place as you approach the screen edges.
Which leads to the question, what next?
The plan for this game was to be centered on the discovery of magic. I still want to aim for that but I'm not even close to starting work on a magic system yet and I'm realizing that coming up with just the basic ideas for discovery paths of multiple elements and types of magic is a lot larger of a task than I realized. It would be years before I see anything close to what I had planned. I want to have something playable and somewhat interesting within the year. I don't mind being flexible but it just means I don't really know for sure what direction this thing is going.
A quick thing I think I'll try is to add in some sort of long grass. It would essentially be the same object as the flowers and for the time being it would only be decoration. Grass in a winter setting is a little out of place but the idea is in my head and I might as well put it in as it shouldn't be too much work. And I can always switch to the summer setting anyways. The idea is that grass provides a bit more decoration, possibly a low level of camouflage for critters, and could maybe work as one more ingredient for putting things together. So it's not like it's entirely pointless.
But I think the next main thing I'll look at is adding some critters. I'm thinking of starting with adding various slimes as they should be easy enough to draw as well as create an excuse for their aggressive behavior. I'm thinking at first I'll have them wander around slowly and randomly and if the player gets within a certain range they will charge the player. Since there's no health system at the moment, any sort of exchange between player and slime would just be a pushing match of sorts.
Added some collision detection style logic to help better plan tree placement. Went from randomly planting around 57k trees to create an impassible forest to using only 39k trees for the same effect. Also found some settings that will be good for thinner forests when I start looking into adding more variety in the terrain.
Added in some serialization code so that I can save and load the world. So far the file size in total to recreate the world is a bit under 10Mb.
A few weeks ago, the host that I've been using for my website was having some issues with the data center they've been using. The center just up and vanished. Thankfully, anything I had up there I do have backups of. But rather than just put what I had back up I figured I'd try something a little more modern and went with the Wordpress package that's available. I think it generally looks alright but I still need to get a project details page and some sort of page for downloads going.
In the mean time, I imported the 'detailed developer notes' for this RPG project from day 1 to the site. I don't think I'll be uploading notes everyday but more likely to do batch loads every so often.
Current development is on the stuff that I was working on just before I got distracted with the memory leak. I'm trying to get things going such that when you press space a sort of 'swoosh' appears like you're swinging something. If that swoosh hits a tree then I think you should see a sort of 'strike' effect that'd be like a little star or something, and the tree will be chopped down providing you with wood to work with. What I have going so far doesn't look right, I think, because I'm not detecting the collision between the swoosh and the tree quite right. Probably has something to do with the code being an over all mess which is something else I need to work on before it gets completely out of control.
So, not really anything new to show off but I thought I'd include a screenshot anyways and with the [s]excuse[/s] interesting new detail to show being that I changed the look of the winter trees slightly. I'm hoping that when I start adding in critters my programmer art skills will manage something that fits with the style.
I believe I've found a way to deal with the flicker issue. It needs a little fine tuning yet but I like what I've come up with and it means that ultimately what you see in the screenshot will be what you get. Essentially, I'm dealing with it by not dealing with it. Assuming that I'm able to get this tree chopping thing all sorted out, I'll include a video in my next post.
Memory leaks have pretty much been at the center of my focus for this project for the past few weeks. There really isn't a lot that's interesting to post about while trying to hunt these things down. And up until about two days ago, the only posts I would've been making would've been appeals for help and possibly questioning the help offered. I had thoughts of just living with the leaks and hoping they don't cause problems down the road or abandoning the project entirely. But now, I'm glad I stuck to it and found the bugger that was giving me issues.
Don't know if anyone will find any of this interesting but I figure I might as well take the opportunity to vent about the non-sense my own code inflicted upon myself.
The line where the error would occur was
CSwooshEffect * pItemTemp = new CSwooshEffect;
From this line I experienced weeks of being confronted with "Windows has triggered a breakpoint in [program].exe". Google searches that all pretty much say the same thing when other people ask about it, "You're probably writing to memory that's already been freed." I figured I'd get about the same response if I posted a question here or anywhere so I began painstakingly started going through code to try to find such a situation. I plugged in Paul Nettle's MMGR code into my project which helped find the source of a bunch of leaks. But after fixing them, that damn message still came up even though the leak report came back "No memory leaks found!" Clearly I didn't really have them all. But I just couldn't understand it. All I was doing was instantiating a new object, how could that be writing to memory that's been freed?
Trying to battle that one message resulted in me rewriting my animation class that I've been using for almost a decade now, it resulted in finding 2 other locations causing leaks, revealed that I forgot to change some code for a few objects so they're created using new() instead of being members of another class, it resulted in the realization that some sorts I'm doing on my object lists weren't sorting correctly. I found a variety of things I was doing wrong and yet despite all that the message wouldn't go away.
As fascinating as I'm sure all this is, I'll skip ahead now to where the problem finally was. (my dev notes have the details of how I came to this point, I can post them if anyone's interested but I'll skip ahead).
I keep a few lists that are used to track instances of objects. I was investigating a tile's list of objects and comparing it to a main list of objects. Checking that an object was being created and being properly set to the tile's list of objects. I wanted to make sure that everything was the same when that object's pointer later got removed from the tile's list and the object deleted. The object itself was indeed the same however completely by chance I noticed that the tile that I thought was working with wasn't actually the one I was working with. It all went a little something like this:
- From my main list I'd determine which object required deletion. - Using the object's world co-ordinates I'd calculate what tile that object was associated with. - This calculation was producing a rounding error causing me to look at the wrong tile's object list. - The wrong list of objects isn't actually affected. - The object is removed from the main list. - The object is finally deleted from memory. - The tile with the list that should have been examined now has a pointer in it pointing to freed memory.
That memory gets accessed later on in my paint routine. Undefined behavior due to accessing invalid memory sounds like an appropriate description of the trouble I've been having.
I dealt with the problem by adding the tile co-ordinates that the object is on to that object. Not terribly creative but it got the job done.
This annoying issue has taken so much attention I don't know what's next now.