Thursday, January 30, 2014

Post-Mortem II: Shockingly, this is getting easier!

What went well: I really shouldn't be surprised when I do a lot of something and it gets easier, but that's exactly what happened. I had a much better idea of how game components fit together and how to implement the stuff I wanted to implement this time around, and I think generally better and more streamlined style. Also, once the mechanics were in place, I had a lot of fun coming up with quirky, interesting, non-trivial levels. Given more time, I bet I could come up with even more! Also, images and sounds!

What went wrong: well it turns out that there's a glitch somewhere in my game that makes you occasionally fall off the map. Huh. And it took a while to come up with a solution to collision that worked--tried a few different tacks before I found one that I was happy with, and even then it required slightly different solutions for horizontal and vertical collisions so that the character didn't get caught on the collision points on top of a tile while moving horizontally across the floor... But really, everything worked out in the end except for that damn misc. bug with the falling off the map. Oh, and I wish I had better sfx for the gravity shifting.

Biggest Surprises: how different this was from my last game. I know that sounds silly, but I'm getting the idea of just how much diversity of programming is possible and it's crazy awesome. Also, how handy the whole tile-based game turned out to be--once I got tiles working, I could pretty much not touch it again and work within that framework, and it was great.

Development time breakdown:
Day 1: grid, walls filled in from a string array, rudimentary horizontal motion (no acceleration), started collision detection (this method of collision detection later got scrapped)
Day 2: continued barking up the wrong tree with crappy collision detection; implemented crappy versions of gravity and jumping
Day 3: started working on a better method of collision detection (checking points on the tile-edge for intersection with the character)
Day 4: figured out collision for real, implemented goal, spikes, and character death
Day 5: made all existing elements readable from 'maps' (arrays of strings representing levels); made up-grav and down-grav tiles and started locks and keys
Day 6: finished locks and keys (corresponding locks & keys, locks fading, etc.), smoothed out switching between levels
Day 7: kill key, smoothed out the kinks in death, changed board size, implemented shift counter, started making levels
Day 8: added sfx, made more levels
Day 9: finished making levels, added victory screen, cleaned up my code

What I would have done differently: be better about planning each day of programming, and actually maintaing an up-to-date implementation plan so I could keep my eye on the bigger picture; not have tried all of those nonworking collision detection things; made more levels.

Had such a blast in this class, and learned a ton. Thanks for everything!!!

Post-Mortem: Once Upon A Time

Hi everyone,

I'd just like to say how much fun this entire experience was. After long hours of catching up on code that I got behind on I ended up with a really great game. There are a few little score glitches that I will fix, but all of the pictures came together quite well. Also, the only other thing I wish I had had time to implement would be sounds that match the shows. That would be something really easy to do though once I had time to do it.

Anyway this game jam I think went a bit more smoothly coding wise because I used a lot of the techniques that I learned in the previous game jam. For example, I used the benefits of objects a lot more for things that I needed to be selected onClick. Also, it became very useful to have all the dialog in arrays so that I could just go through the array with some counters than having individual strings.

If I could have done things a bit more differently and had a bit more time I would have added a few more minigames to each level. Also, I would have made the text be more reader friendly and I probably would have tried to make the timers on how long the text is on the screen a bit shorter. Implementing a "skip over explanation" feature would have been useful too.

However, other than the days that I missed due to car issues I felt as if my time management was really nice. If I hadn't had to catch up, I might have been able to add some more of the features I wanted.

If I were to do another game jam I would likely make sure that I had a better idea of "necessary" features versus "perfectionistic" features. My time management could have been improved after being set back due to car issues if I had just altered my priorities a bit of what features absolutely needed to be implemented versus the ones I was determined to put in due to my own perfectionistic needs.

Anyway, I had a great time and here are some pictures I used for my game. :)




Post-Mortem -- Dating 101

Hello!

I am here to talk about my experience with the game.

This idea had been in my mind for a while, and I decided to finally make it a reality. Writing the game turned out to be a lot more difficult than I expected, but I managed to pull it through.

My original idea was to have three characters, you could pick where you are going and you would randomly find someone there. That was not how it ended, but it was quite close.

What I am most proud of, is that the game works, and that I have two people. For a while I thought I wouldn't even be able to get one person to work.

What was most difficult was getting the screens to come after each other in the correct moment. There were times where whole screens were skipped, others where you were stuck in the same screen. Not to mention all the random bugs that would appear all over the place for no apparent reason.

The easiest part was doing all the graphics. It surprised me a great deal, since graphics isn't something I am particularly good at. However, the background and images all worked properly, and I didn't have any issues with printing the text.

My daily schedule was the following:

Day 01: Find images and backgrounds
Day 02: Create functions to draw images and print text
Day 03: Write Script and Decision Tree
Day 04: Continue Writing Script and Decision Tree
Day 05: Write all the code for Rinna scenes
Day 06: Write all the code for Mia scenes
Day 07: Nothing works, rewrite all the code for both Mia and Rinna to make debugging easier
Day 08: Debugging and Testing

Overall the game was a success. It isn't the most efficient code in the world; for instance, it would be difficult to add more things to the game without a lot of effort, but it gave me a great amount of experience. Next time I make a dating Sim, I am using a file just as data and then writing very general functions that do everything.

Overall I had a lot of fun and I am very excited for future gamejams. I felt like I learned a lot from this class and I also had a lot of fun.

Best Winter Study so far.

Game Jam Post Mortem

Post Mortem:
Figuring out the animations for the boss ended up taking alot longer than expected. The sprite sheet for the boss was not clearly laid out, which meant that I had to manually discover the pixel dimensions for each animation. Animating the minor enemies went much more smoothly than expected. The biggest surprise was probably how my game was not as complete as I wanted it to be, because I thought I would have been able to accomplish much more. However the game itself looks pretty cool, and I thoroughly enjoyed making it. If I were to go back and do it again, I think I would completely change the gameplay design. The game as it is right now does not feel as fun as I thought it would be because the gameplay is pretty repetitive. I would also more carefully plan out the artwork I used so that the theme of the game would be more uniform. The artwork and the gameplay had no real focus, and certainly did not match my original theme of an alcoholic superhero.

I spent my time in the second half of the Game Jam first replacing the rectangles with animated enemy sprites. I then created the checkpoint platform and got the camera to freeze at the checkpoint and lock the player in. I then found the boss sprite and animated the three moves he cycled between. I then implemented the gameplay interactions of his three moves. Finally I added death animations for the enemies and implemented more power ups and their corresponding images.

Nick Wolf out.

Post Mortem 2

So, like last game jam, I think that this one went very well, if not entirely to plan.

Idea : Fire Emblem X Pokemon
Result: Fire Emblem engine

Though in past game jams, I have made very ugly games that were 100% about the mechanics before, this game I decided to bring in some pretty elements, including a non-zero number of assets (tiles and sprites, yeah). This prevented me from being able to add any game play features above the base Fire Emblem level (like the pokemon-esque leveling / capturing I had envisioned), but resulted in what I think was a very reasonable product, and something that is able to look more finished than it perhaps is due to that layer of "looking right".

The only major issue is that this game jam became an "engine jam", which very little game play put onto a fully functional engine. I am entirely content with this though, as I know have something that I can build on either in my free time or, because I am unlikely to have terribly much of that next semester, in another game jam. And my idea was really too big at the beginning to become a terribly fun game if I focused on gaminess, so a fully functional engine is very satisfying. There are plenty of game features left to be added, but I have enough infrastructure now that it could become much more fun very quickly by writing very few lines of code, but instead designing maps and such.

What this game jam taught me was probably that assets are not evil, and it's probably worth the effort to pretty up a game somewhat...though my game does have some performance issues brought on by it's prettiness that I should try to at some point fix.

Both of the game jams for this class were both quite fun and educational, and I think rather successful. Everyone won the game jam (winning is defined as completion of a game), so that is very good, and hopefully my games will become more game-like with a bit more work. Also, after these game jams, I have gotten pretty familiar with Javascript and Codeheart, so, despite their flaws, I have the skills necessary to be able to work efficiently with them on future game jams. Unless I decide to do the next one in Dart and WebGL, because why not?

Post Mortem 2 Kyle

Post Mortem II

I feel that this second game jam was significantly more productive since I had finished transferring over from BlueJ and the Objectdraw library.  The two major problems I ran into were making the polygon cutting to work in a glitch free manner and switching from the pixel units I was using into meter units.  Other than that, most of my time was spent moving forward and implementing the different spell types that I was able to showcase today.  Most of the development time I spent on this aspect of the game had to do with NullPointer issues and broken polygons that resulted from minor glitches in my spell code.  Another issue I ran into when coding the spells was simply thinking about how I would restructure my code.  My code is somewhat rigid, and new features I add typically break the order and rules I set down for structure and organization.  A good deal of my productivity during the second game jam is due to the fact that I never ran into a really major error like the Polygon cutting.

At this point, I have the basic framework for the game I want to make.  Most of the necessary spells are in, and while I still have two to three more spells in mind, the only really hard one I want to implement is to have some kind of control spell that queries all nearby shapes and allows you to throw me at a given location.  The query function for this spell could be hard, as I don't want the player to throw polygons that are lodged in places he can't even reach.

From a code point of view, I still need to do some clean up work.  One problem is with the long collision detection system.  What I need is an interface for collidable objects.  The contactListener will just call the collision method of any object that collides, allowing for much faster collision registering.

Some errors still lurk.  A somewhat rare error is the lost polygon exception.  Occasionally a polygon will be barely self intersecting, leading to a triangulation error.  I currently dump the polygon...
Another error is with self containment.  If an object is spawned in another object, it tends to slow the game down.  If it cuts the polygon that it is contained in, the game glitches and instead spawns another object with the explosion shape, leading to further slowdown.

Really excited about working on this project though.  I think I have a good framework to work off of for these coming months.  A future problem right now is with implementing the graphics side of the game.  I don't have a specific art style in mind, and the art effects for spells will be tricky to get right.    

Post Mortem

Overall, I found the game jam to be fun and valuable

I learned javascript
I made a couple of games

What went well:
Creating a camera definitely made keeping track of the coordinate system easier than last time. With that sorted out I was able to simply center the camera "object" on the user and not think about it for the rest of the game jam

Not worrying about art made the game considerably less stressful. I see why art is usually the last element to be added.

Items and item acquisition with the camera/coordinate system was a relatively easy thing to implement, although they are not pretty to see. 

The game itself was all right. I was able to implement a trait system which works, as well as three AI types. The gameplay, however, is very poor.

What did not:

The gameplay needs work. By this I am referring to the speed with which the characters move, the amount of time it takes to kill a character and the movements of the characters throughout the world.
The speed. With the trait system I need a variable speed which would scale fairly based on how many trait points were allocated to the speed stat. This worked for the most part, but because there are no boundaries to the game characters would take off across the map never to be seen again. In theory they would return, but because the attack was too weak it took a very long time. The final of my game has a tenuously balanced speed/attack ratio.

What I would do differently:

Planning.  I found myself completing my original plan early. A more rigorous plan would have pushed and aided me towards a more complicated and tune result.

I also might make my next game turn-based.

What I took away from the experience:

It was a good experience. And a great way to spend winter study. I am sure that I will continue making games.

Thanks Mike.


Jam 2 Post Mortem - A (mostly) complete ARPG

This second game jam was a blast! I believe I accomplished most of what I set out to do this game jam, other than creating additional levels.

The magic system turned out pretty much as well as I had hoped. Other than some slight inaccuracies when it comes to casting area effect spells, the symbol queueing and spell casting worked great. JSON enabled me to quickly add spells once I had the framework built, and I put in 3-4 more spells into the game last night with ease. Gameplay is decent enough for the scope of this game jam, and I'll be working on making it better down the road. Enemy AI worked decently enough, though there are some quirks I had to deal with because of the way I implemented the maps.

The biggest issue I ran into was collision detection and path finding for enemy AI. A* works like a charm in my game, but because the path finding was based on my tile system from the previous jam and because characters are not restricted to moving from tile to tile, the path finding isn't super precise. Currently, when path finding the start and goal tiles are determined by an estimation of the closest tile the enemy/character is standing on based on their xy position on the screen. It works for the most part, but enemies sometimes have issues locking on to exactly where the character is moving.

Level design was another issue; I realized that my tiles and sprites are a tad too big for an ARPG setting (they were fine for the previous jam when it was a traditional RPG), so many areas feel cramped when playing. Looking back at my design doc however, I feel like I met all of my goals (other than multiple levels).

Development Time Breakdown (Time estimation from original design doc in parentheses)

  • Magic System/Spell Selection groundwork - 2 class days plus 3+ hours outside of class (1 class day)
  • Spellcasting via mouse click - one class day (1 day plus outside work)
  • Enemy movement/animation/AI - 3 class days plus a couple hours outside of class (2 class days)
  • Enemy/character interaction with spells/collisions - about 3 hours outside of class (2 class days)
  • Spell animation - maybe 1.5 hours (1 class day)
  • Adding content/level design - half a class day plus a couple hours outside of class
  • Other game features (damage animation, game over, sprite editing) - one class day ish


I spent the bulk of my time this jam in spell.js and enemy.js; this was expected because I was building the magic system from scratch and because I was drastically changing how enemies behaved in this game vs my previous game. Other than those two files, majority of my game is still built on the groundwork I laid out the previous game jam.

For enemies, I was worried at the beginning that designing AI and getting movements to work would be my biggest time sink; this proved to be true, especially with the tile issues I referred to earlier. A* itself was fine, thanks to the example code provided on codeheart, but enemy behavior was a hassle to get right (and is still a bit buggy).

If I were to redo this game jam, I would've taken a look at how my map system was implemented last game jam and tailor it to the needs for my new game. Map.js was largely unchanged from the previous game jam, and though the simple collision detection was adequate for my previous game, it was a bit lacking for this game. I would've also spent more time play testing, which would've made me realize that the tile/sprite sizes were too big for the purposes of an ARPG. Testing the game beyond whether the code works or not was something I neglected to do both game jams, and would be something I would definitely do if I was making another game.

Overall, the game jam experiences were a ton of fun, and I can't wait to participate in another game jam in the future!

Wednesday, January 29, 2014

Last Day - The Game is Up and Running!

I accomplished all the goals I had for today, implementing both a game over and a win condition. I added some more enemies to the world, and gave some enemies the ability to shoot projectiles. I'm planning on doing some work tonight refining the enemies and adding a couple spells, but all the essentials are done!

Last Day: Shoot the Target.....circles.......dots...

Well here is that screen shot I promised everyone. Essentially all I have left to do on this level is make little red dots appear for an extended period of time so that the user can click them and pretend like they are shooting or something of that nature. Tonight...at like 5am tomorrow...my entire game will be done. It'll be great and I'll be tired, but I'll be successful. :P 

See you tomorrow. 

End of in-class last day - It's a game!

So, I added a win condition, I added a lose condition, I added selection among multiple items for attacks, including only allowing attacking with weapons whose level is less than your weapon level, and I even wrote a poor excuse for a story. So, other than the fact that there is hardly any content, it is a fully working game, though it is little more than an engine. Will I work on it more tonight? maybe, maybe not. But it's a thing. That is mostly done.

Final Day End: My girls are interactable

My game sort of works. It's not perfect, but it is playable. Somewhat. You can reach the end. And die. I just need to figure out why one of two identical functions aren't working.

Day recap ( pre post-mortem )

Revived the code I deleted
Now going to add sounds and tweak traits until the game feels more playable

Final Day - Make the game a game

So, my game is still very devoid of content: no story, 1 class, 1 weapon, all characters have identical stats, 1 map, yada, yada  - but all that stuff can come after the game jam, first, I need to make this game into a game. In order to do that, the following things are necessary:

1 - Make the game winnable
2 - Make the game losable

Neither should be terribly hard, but need to be done.

The only other really necessary feature to add would be stuff with item management, including:

- Item turn menu (for use / equip)
- Trading
- Attacking with different items

So, I think my goal for today is to just add these things, maybe tonight if I think to I will add some actual content, but if I get the above things done, I will be pretty happy with what is more of a FE game engine than an actual game [which, on that note, all other features that would need to be added would be things that deal with inter-chapter play]

Also, possible extra goal:
Make units do a thing when they attack like move over a bit or something.

Final day: batting clean-up

A few more sounds, an end-game screen, and then cleaning up code and designing levels until time runs out. Pretty solid plan. Now I just need a really nifty gravity-reversal sound-effect.

Final Day: Race to the Other Side of the World

Hi and Hi again...hi,

So today I will finish my other two worlds. Last night I finished up the little glitches in the slice of life world and I finished all of hell girl's world. So now I shall move on to psycho pass and pokemon world. By the end of the class I hope to have most of psycho pass done and then tonight I will finish up pokemon. There is a long day ahead and I like PROMISE to have screen shots up today. :)

Bye bye.

Final Day: Let's get hitched.

Today I will clean up the remaining bugs in my code. Once that is done, the game should be done. I also need to get pictures of my locations for the backgrounds.

Final Day Rush

I was in great shape when I ended the day yesterday, having only art and game speed to improve.
Unfortunately I deleted all of yesterday's progress in a late night mishap.
So, I must rush to finish this game.
Mac

Final Day - Some finishing touches

Hello everyone! On this last day of work I'll be doing what I mentioned in yesterday's ending blog post, which would be:

- implementing game over screen/winning conditions
- populating all the areas with enemies

Those are the main goals of today, and I'm hoping to both of them done relatively quickly so I can add some extra features to the game. These would be:

-smoother directional movement for the character
-more enemy types
-a nicer start screen
-more spell types

I wish everyone the best of luck on finishing their games!

Tuesday, January 28, 2014

End of Day 8

Finished implementing penetrating projectiles.  A new spell, ice spike is able to make dents into DestructibleObjects although I have yet to make ice spikes DestructableObjects themselves so they can be penetrated and exploded.  An unforseen issue with this implementation was with body.getRotation.  I turns out that the value returned by the aforementioned method call isn't always correct (or what one would reasonably expect (still don't know what it actually returns)).  Took a while and some debugging to find out that it wasn't working and some more time beyond that to find a fix.

Also moved on and implemented the force push spell.  I had to adjust the direction of the projectiles to give more of a force push feel.  Beforehand, they left the player's hand in a spherical fashion.

Feeling kind of tired but if I'm up for it, I really want to implement a fire spell.  The main focus here is to have a fire get started.  DestructableObjects will be eligible to catch on fire and spread that fire based on their fireResistance and fireSpread.  fireResistance is to simulate the different flamability of paper vs. wood.  The fire needs to reach a certain heatLevel before it can overcome the fireResistance of certain objects and begin to melt/burn them.  fireSpread is meant to distinguish between "burning" ice spikes and a burning wall.  An ice spike can't spread a fire too well but a wall can, more so if it's made of wood.

A single fire will be made up of multiple fire dots.  These fire dots will be simple polygons that cut their outline from their victim DestructableObjects.  The first step, however, is for these fire dots to attach themselves to a DestructableObject.  After a certain number of animation steps, the fire dot will call a PolyManager.cutPolygon from its "host" DestructableObject" and then spawn more fire dots that will spread in random directions (spawn number determiend by fireSpread of host object).

To make things simple, each new fire dot will have a higher heatLevel than its parent.  A more realistic approach would be to make heatLevel dependent on number of fire dots nearby.

After I finish that spell, I might work on a force-like spell that allows the user to grab and throw objects. If I get to this point, I'll be able to fix some things up.

Firstly, I need to convert from meters to pixels and update the display accordingly.

Secondly, get conditional jumping to work.

Thirdly, tweak explosionShapes and creationShapes.  Make explosionShapes weaken structures by calling PolyCuts and seeing if more than the original number of polygons are returned.

If I get to that point, I will have the basic framework of a singleplayer version of the game done.  I would then proceed to designing a destructible world that the player can cast spells in and interact with.

End of Day 8 - Wrapping Things Up

Today I edited sprites for more enemies, added some spells, cleaned up damage calculation, and added some damage information (damage dealt now floats above the enemy's head for a few seconds). I also added the functionality for enemies to respawn when leaving the area. Things left to do (ordered by priority):

-Game over/Restart screens and state
-Finish populating areas with enemies
-Start up screen with a "how to play"

Stuff that I'd like to do if I have time:
-Enemies that shoot projectiles
-Three more spells to implement
-Enemy health bars

Here's a screenshot:

Day 8 -- Hell Has Frozen Over

Hello hello and hello,

I am now working on Hell Girl's World and look forward to completing it tonight in the warmth of my bed, because it is cold outside. Yes...(Sam) it is cold outside. I am going to finish Hell Girl's world tonight which should include very hard trials and tribulations to see if you can withstand the world of Hell Girl. Might need to make this game like..like....PG - 13 or something or however they rate games.

Oh and I'll like have a random snapshot later.

Later :)

End of Day 8 - Animations!!! (oh, and you can look at item inventories too)

So, now the game is starting to look like a reasonable game, with enemy turns actually playing out in ways such that you can see what is going on instead of just flying by, as I have added all the following things to make things look reasonable:

Attack animations: health bars pop up when you attack, and they even do a neat little shrinking animation instead of jumping to lower values. All I have to add is some sort of little animation performed by the sprite, and this will actually be basically up to the standards of the "map animations" of modern Fire Emblems

Enemy Turn Wait: instead of the enemy doing everything at a mile a minute, not only do attack animations play out during the opponent's turn, but also if a unit just moved, there will be a brief pause before the next unit is moved

Turn Banners: A little thing pops up saying "Player Turn" or "Enemy Turn" - this is a feature of all FEs, and something that helps make it clear what is going on.

And on the "make clear what is going on" front, you can also now see the (entirely unexciting, containing only iron swords) weapon inventories of units in play, and said weapons do decay with use (not that I have implemented them breaking yet or anything, as there is no way a weapon could break in the very short demo that currently exists)


So, with all of this, all I need to implement tomorrow is implement a win condition, and I will have a game. A game with almost no content, but a game nonetheless.

Edit: oh yeah pretty pictures


Day 08 - High Maintenance Females

Because nothing is easy in the world, and because women are always complicated, my game still refuses to work. Mia refuses to give me right answers and Rinna doesn't do what I want her to. It resulted in me having to change a lot of my code to make debugging easier. I'm just thinking of buying flowers and something shiny so they will accept my apology and start working properly.

Day Progress

Items finished
AI's designed

next and last: Tuning the game to be fun to play. For example, an average game now takes 15 seconds. Too short.

Day 08 -- Final stages of love

Sorry for the late post~

Today I will finish implementing Mia and I will debug the rest of my code, to make sure everything is working as intended. Once everything works, I will prettify what is left.

Day 8 - more levels, adding sounds, winning the game

Just what it says on the tin!

Day 8 Pre

Hoping to finish up the glitches with the conditional jumping.  I'm then planning on moving to projectiles that can penetrate polygons due to speed/mass.  There are several important things that I need to clean up as well.  I'm not actually using meter units for my box2d so I need to convert into meters eventually and use some modification to debug draw so I can still see my results.  I also need to tidy up the collision handling by having all the objects implement an interface that involves a single method collision as Morgan suggested.

Day 8 - Math lies. Also, making stuff pretty?

So, I found out last night that Fire Emblem chances are not actually percentages - the random number for a hit is drawn not from a uniform distribution, but from the average of two uniforms. After adjusting for this surprising revelation, I will try to make the opponent's turn watch-able. Admittably, this may be hard due to lack of walking animation, but i will try to make it look like something. After that, if I get that done to a reasonable point, I will work on item inventories and maybe adding extra sprites and stuff.

Day 8: Insert Really Wonderfully Creative Title Here

Hey,

The last thing to do is to like find the I-spy items which I will do via the draw a rectangle and then match the coordinates method, though once that is done I will be speeding off to the hell girl world and hopefully that'll be mostly done by the end of the day, but of course there could always be unforeseen delays. I will have some shots for you guys at the end of the day though so look forward to that.

Later later!

Day 8 - Content Heavy

Hello all! I'll be spending most of my day editing sprite sheets, designing levels, and adding spells. Should be a day that's light on code but heavy on content. My goal is to have a couple levels designed before the end of the game jam and that work begins today. Good luck everyone!

End of Day Report

Was able to implement basic character movement although I got completely stuck on how to implement conditional character jumping (ie. character can only jump if he's on a surface).  I originally tried to have a sensor attached to the bottom of the character object, but that required a separate contact listener check.  I actually implemented this method, but it turns out that a contact only registers for the first time, so after the character collided with the game world, the boolean isOnGround would become false (since I set it to false every time step but expected it to become true on every time step due to a collision detection).  I then looked online and found out from iForce2d that one could use a prismatic joint between the legs and the body and use motor speed to push the legs down and propel the body upwards.  Unfortunately, when I tried this method, the motor wouldn't work at all no matter what I tried.  Even though I spent a lot of time trying to get conditional character jumping to work, I only have the basic jump whenever framework "working" right now.

I also worked on having a hand position.  I also tried two different ways, but in the end I settled on having a hand position be calculated on every mouse move, and for the position to always be at a WIDTH*2 distance from the character's body.  I tested this and it works currently.

I'm hoping to work on penetrative projectiles tomorrow and to finish the conditional jumping as well.

Monday, January 27, 2014

Goals for Today

Sorry about not posting that often.  I'm hoping to finish up character movement today.  I've been working on it a bit but it still needs tweeking.  For example, I need a y velocity impulse of 30,000 to get my character to jump correctly...  After finishing up the character movement, I want to start adding in positional dependent spells such as force push and force jump.  Afterwards, I want to work on an ice spike spell.  The problem with this spell is that I still haven't figured out how to get a lodge effect working.  I'm thinking that class type penetrating projectiles inflicting a force greater than x will call a PolyManager.cutPolygon on the victim structure.

Kyle

End of Day 07 - Two Towers

At the end of today I have almost completely implemented Mia. I am just missing the last encounter, in which I need Mia herself to tell me her reactions. Tomorrow I should be able to get rid of any remaining bugs and user input is working as intended.

End of Day 7 - Now for some content!

I've finally got the enemy AI where I want it to be, so now there are three basic types of enemies:
-passive enemies, that don't attack unless provoked
-mildly aggressive enemies that have a small wait time before moving towards the character
-very aggressive enemies, which charge at the character constantly with a faster speed

I'm thinking of adding some enemies that can shoot projectiles but that's if I have time. I'm in the middle of building some entirely new maps, so pictures will be up when that happens!

Day 6/7: I spy with my little eye

Hey everyone,

Well world 1 is just about finished, I just need to get the coordinates to everything for the eyespy game, but once that is finished I will be finished with world 1. I actually intend on finishing that tonight in my room and even starting and maybe half completing world 2. Hopefully I can be productive tonight try and get caught up with all the lost time. I'll be sure to keep in touch with everything though.

Bye bye!

End of Day 7 - info, info, info

So, when playing a Fire Emblem game, it is generally useful for the player to be able to have a clue what is going on. So, after implementing experience gains and level ups, today I added a unit inspection window so that a player can see units' stats:

And I also added combat preview data, so that a player knows what will happen when they attack:


And I also implemented a game options menu, which in a normal FE game would have things like unit data, options to change text speed and other things like that, a save feature, yada yada yada, but right now just has an "End" feature, which can be used to prematurely end your turn. Now that all of these menus have been added, most of the stuff of this type is done with, although item management is yet to be done. I am almost at the point where it's all just prettification and data left to go.

Also, on the topic of prettification, I bet there are prettier fonts in the world.

Day 07 -- Adding data

Because the core of my game is pretty much functional, all I need to do is to add more data to it, and by that I mean adding the dialogue and stringing for the second character, Mia. Also want to get my user input working properly.

Three Day Plan

Monday: Item acquisition and stat boosting

Tuesday: 2 more AI types

Wednesday: ART/ new ideas

Day 7 - stuff

So, there is a lot of stuff that I would like to eventually get done, so now I need to start thinking more about what I actually want done.

The following are all things that would be nice to get done by the end of the jam:

-Unit details screen / pop-up
-Experience / Level-ups
-Show details of opponent's turn to player
-Battle "Animations" + preview
-Item Inventories

And those are the gameplay elements I would like. On the other end, I would like to be able to also prettify the game and give it more content in the sense of more than 1 level, more than 1 class, more than 1 weapon, etc, etc.

I will start working on the above things in the above order, the plan being to hopefully get a (non-pretty) unit details screen, and experience + level ups done today.

And oh yeah, I also may want to optimize drawing as to only redraw essentially things every frame, in order to get better performance.

Day 6/7: Never learn how to drive

Hello everyone,

I have been having all sorts of car troubles which prevented me from coming to class for Day 6. That just means I am going to have to do A LOT of work outside of class today to try and make up for the days that I missed. Well anyway I'll be finishing world 1 today and heck if I can I'll try to finish world 2, but I will just be happy with having at least 1/4 of my game working. So here is to coding faster today than I have any other day. World 1 will have an entrance exam and an eye spy game.

Later

Day 7: Finishing Enemies and Adding some Content

Hello everyone! I'll be putting some finishing touches on enemy behavior and then get to some item, spell, and level design today. There's not a ton of coding left to do in my game, but quite a bit of content, so my goal will be to flesh out as much of it as possible over these next three days. Good luck!

Day 7: levels, levels, levels

I'm going to spend most of today designing levels that are fun and interesting, move in a logical progression of game features and difficulty, and actually provide some challenge to the player.

Other things that still need to get done:
- what happens when you beat the game? I don't know yet. Probably a celebratory screen and a 'play again' option.
- the level should reset upon death -- otherwise, you could die getting a key, respawn, and still have gotten the key. Seems silly.
- depending on how level creation goes, might want to throw in another challenge by limiting the number of gravity swaps you get on a given level. This information will be provided in the map strings and will be counted somewhere on the edge of the board. There should be a code for infinite swaps / swap counter does not display. Must change up/down arrows & spacebar code so that they keep a counter of the number of times they swap the conditional. (Presumably, wasting a swap in an upgrav or downgrav square will count against your total swaps. Oooh, mean!)
- if I limit the number of swaps, I also need a 'kill' key to reset the level if you mess up.

Friday, January 24, 2014

End of day 6: in shockingly good shape!

I'm hesitant to say this because just saying it will probably make something break, but: I have a working game! (Knock on wood...)

Multi-locks now work, as do my gravity indicator, beatLevel/nextLevel functions, board reset, and all that good stuff. What remains:
- designing interesting levels
- perhaps implementing sounds if I feel like it?
- cleaning up code

Yeah, I feel pretty successful!

End of Day 6: Enemy AI works! (kinda)

Well, A* is now installed into my enemy AI, and it picks up the initial player target. Things get funky however when the player moves, and the enemy has trouble picking up the character's new location. I'll debug more on my own time, and I'll begin adding some more content over the weekend. Have a nice weekend everyone!

End of Day 6 - Things work and AI and woo

So, it took a bit of time, but I successfully debugged my move-checking code: turns out a stupid decision of mine was allowing wrapping of movement in a very weird way (you could wrap around in an area of radius your movement range), but that is fixed, so movement is awesome and works.

I also implemented rudimentary AI, that follows the following rules:
If an enemy is in range, attack it
Otherwise, go to a random square you can move to

This is actually reasonably close to the final product, and I am surprised by how well it is actually coming along. Now that AI is fairly simple-ish and is likely to be finished over the weekend, two major things remain:

-Data
-Prettifying

I don't know which I will prioritize next, though they do kind of go hand in hand (oh, I need to add a new class, guess I need to get the sprite)

However, this means I may actually have time to meet my original goals of the game jam and incorporate some pokemonic mechanics into the game, yay for schedules actually somewhat working out.

And to make my game look more like a game, look: both sides have multiple units! ooh, ahh.

End of Episode 06 - Be careful with what you say.

I completed all my stringing for the Rinna path, and I improved my draw function, so that the background now takes up the whole screen. I also have a workable start screen. One could even play my game, if I had my user inputs working correctly. Which I don't. Yet.

I also created the murder scene. Because every game needs real risk.

Be careful with your options, or you may hit this:


Day 6 - almost ready for levels! No, really!

Today, I need to implement locks and keys, namely getting locks to consist of more than one square and getting the correct lock matched up with the correct key. (Maybe I should have an openLock( tile ) function and then forEach it on an array of lock-squares?)

If I can do that, then I should be able to start designing levels. I will have a map (an array of strings) for each level, and I'll stick all of THOSE in array, and then keep a counter of the current level: when beatLevel() is called, it will increase the level counter by 1, and then nextLevel( levelCounter ) will load the following level. Boo-yah! And when all that works, all that remains is to make levels that are fun and exciting and challenging.

Day 6 - Finishing A* and Adding more depth

Hello everyone! The most significant piece of coding I have left to do is to integrate A* into my enemy AI. After that's done, there are only a few aesthetic things to take care of and then I can turn to adding more content. In terms of implementation goals, this is what I want to have done:

  • A* integrated into enemies
  • smoother walking (WASD get a little "sticky" at times)
  • more detailed start screen, as well as smoother "game over"state
The main focus will be on A* today, so that's where I'm headed.

Day 6 - A fix, then into the abyss (that almost rhymed)

So, first I need to fix out what is wrong with my movement code that makes it break only sometimes, and then I need to begin working on what may be the hardest part of all, making the AI. I do have some ideas for how to do this though

So, AI:

There are two basic principles that I think I will try to use to guide my AI:

1. Move towards the player ('towards' of course being non-trivial to define)

2. Target weaker units of the player for attacking (this involves developing some metric for "weakness", which gets even more complicated if you factor in effectiveness of certain weapons against certain units

I have the advantage that FE AI has never been known for being truly ingenious, and thus I do not need to do a perfect job to be content, but nonetheless, it is far more complex than something like pokemon AI.

Once AI is working, there are only a few more elements left to be implemented until I have something that is at least passable as a playable game, and then I could work on adding content

Episode 6: The return of the Rinna

I am finally well enough to return to the lab, which means that my productivity shall increase. What I plan on doing today is implementing Rinna. I have all of her script written down all I need is to make sure which screen comes after what, and that is what I will be doing today.


Thursday, January 23, 2014

Almost ready to make levels!

Graphics-wise and map-wise, I've implemented locks, keys, upgrav, downgrav, spikes, goal, walls, and spawnpoint. Upgrav and downgrav both work. Locks and keys work to a point -- locks behave like walls until unlocked, and if you get a key, it opens the corresponding lock, which then fades out and ceases to be wall-y. However, "corresponding lock" just means the single square of lock that's in the same place in the 'locks' array as the key is in the 'keys' array. Soon, the arrays should look like this:

keys = [ key0, key1, key2 ]
locks = [ [lockA, lockB, lockC], [lockD, lockE], [lockF, lockG, lockH, lockI] ]

where key0 opens locks[0], i.e. locks A, B, and C. I should be able to assign the key to the lock(s), rather than just having it automatically determined by the order in which they are added to the arrays (i.e. the order in which they are encountered on the map). But I (optimistically) predict that once I've got locks squared away, I'll be able to actually start designing levels! Yaaaay!

Oh, and note to self: maybe I want an indicator on the side telling me what direction my gravity is going?

End Day 5 -- I remember when life was easy

Hi again,

Well I didn't finish a world today....because images suck and never position the way I want them to, BUT with all sorts of optimism flowing through my veins I think once I finish the stupid positioning of the questions on the paper on the screen and then I get it to change with the clicks on the keyboard I should be able to finish the world tomorrow AND go to the next world. AHHHHH things are supposed to be easy and then the easy stuff is just a pain in the neck and the hard stuff is like a few keystrokes. RAWR!

Goodbye and see you tomorrow!

EOD5 - Stuff working, if buggy, and killing!

So, the movement based on terrain I thought was working, but I discovered some corner cases at the end of the day where it falls apart (I discovered that it sometimes falls apart, I have yet to discover why it does so in some cases).

I also implemented turns, kind of (your turn ends when all units finish moving, then the opponent's turn happens, in which nothing occurs)

Maybe I will try to debug the move code later in the day, as it works in a very large percentage of cases, I am not sure why/where it fails.

End of Day 5 - A little star on the horizon...

Today I made taking damage much smoother, with a kickback for when the collision occurs and a small recovery period in which the character is invulnerable. I spent most of the day writing A*, tailored to my preexisting Map and Tile code. The meat of the code is now completed, and the next task will be integrating A* into my enemy AI. Hopefully that will be up and running soon. Once the enemy AI is complete there isn't much else to do in terms of implementation, and I can then focus on actual gameplay, ie level design, items, spells, enemies, etc.

End of Day 05 - Conversations and interactions

I wrote the whole script for Rinna and continued Mia's. Didn't finish yet, but I am pretty close. Due to having one full character, I plan to complete the stringing for at least one person. But that is for tomorrow.

Day 5: More exciting tiles, and maybe levels!?

Today I want to make some more exciting tiles, including:
a) tiles that set gravity a certain direction (either down or up) when you're in them
b) tiles that make you bounce when you stand on them/hit them
-----maybe a different color wall tile? Maybe a spring-sprite in the wall? (Ideally transparent so I can change the wall color)
c) locks / keys!
d) moving blocks?
e) extra gravity zones?

Eventually, all of this should be declarable in the map string:
_ = space
X = wall
n, e, s, w = spikes facing in that direction
G = goal
S = spawn
k = key
l = lock
u = up-grav
d = down-grav
* = extra-grav
B = bounce-tile
etc.

Day 5 -- Somewhere Over the Rainbow

Hello dear readers,

Today I hope to finish the slice of life world and most if not all of its corresponding games/obstacles. For this level there will be an entrance exam, a small eye spy game, and another game that I have yet to come up with.

As always, we'll see where this goes.

See you at the end of the day!

Day 05: Still under quarantine

Since I now have a semi-working game, I need to add content, so I can start stringing screens together. My goal for the day will be to finish writing all the dialogue for the game.

I really hope I get better soon.

Day 5 - Real movement calculations?

So, today the plan is to make movement correct: that is, taking into account opponents and terrain that costs > 1 movement. After that, I will try to implement turns and maybe even a bit of AI stuff.

Day 5 - Refining the enemies

Hello everyone! My goal today is to work on enemy behavior as well as better damage calculations. This includes potentially the implementation of A*, projectile shooting enemies, and smoother "hit" animations. That's all for now!

Thurs. Plan

Done:

Menus

Traits ( str, stm, spd, chr )

Movement

Graphics

Today:

Be able to attack

Be able to pick up items

Next:

Have "intelligent" enemies

Last:

Teams based on CHR stat

Have in game UI

Wednesday, January 22, 2014

Yay death!

I like having plans. It's pretty great.

0) a jump button = accomplished
1) tile/character intersection = accomplished, and wall detection doesn't suck anymore.
2) implement the goal, i.e., have moving into the goal square trigger a 'win!' message = accomplished
3) spikes and death = accomplished! (Well, everything but the shrinking thing. But that was a little weird and is not a big deal.)

Whoot! I'm almost ready for multiple levels and exciting things like keys, locks, trampolines... maybe even lasers! Who knows?

Day 4 End -- *cues disney* A WHOLE NEEEWWWW WORLD!

Hello everyone,

I am in much better spirits. I figured out how to work with my pictures better so they don't look so bogus against backgrounds AND I fixed the transition into the first of my worlds which is slice of life! Here is a screen shot and because now I know what the heck I am actually doing tomorrow should hopefully go a lot more smoothly. The slice of life world should be completed and I'll be working on the next one hopefully.

See everyone tomorrow!


End Day 4: Spells completed!

Today I finished implementing all spell types (buff and area effects), so now spells are just a matter of writing their attributes and importing them via JSON. Next on the list is more sophisticated enemy AI, and more enemies with different behavior.

End of day 04- A semi-workable screen

I have succeeded in having my print function get strings to appear on the screen. And my draw function spawn images.

Great success for the day.

I know things don't look pretty yet, but I will make them as such after I get my game working. It shouldn't take too long now.


End of Day 4 - Menus and invisible singular fighting

So, I did what I planned to do today, which was make the options that pop up after a move do what they are supposed to do. That is, if you select "wait", the unit will finish its turn and be unable to move until the next turn, and if you select "attack", you can choose an adjacent unit to attack. I then also implemented 95% of the combat math from FE3, so when you attack, attacking actually happens. Now, there are no animations for the attacking or anything, but that is planned for the future. I did not get to the second bullet on my list, as I didn't plan on implementing all the combat math / data in order to facilitate combat math like weapons and terrain bonuses, but I did all that, so great. The game is coming along at a reasonable pace, though every time I finish a feature or two, I remember just how much there is that must be done in a game like this.

Here is an image of the game state after a single attack has been performed (there are not yet turns, so this is the full extent of what can happen in the game)


Day 4 -- It is cold outside....really cold....

Hi,

My day is starting really really behind due to the two hours I just spent trying to start up my car in single digit temperatures. Yah, not fun.

Anyway. Revisions! Let's get like half of a world....or a quarter of a world looking good today and functioning. Going to probably need to do some work some out of class to keep on schedule, but that's no big deal.

Later

Day... four? (Aka I'm a delinquent)

After a few days of being very delinquent about blogging, and not getting much done because I've been going in without a plan, I want to be a real person again.  Here is what I want to do today:

0) a jump button, so that you don't jump with 'up' when gravity is flipped. No-brainer.
1) tile/character intersection, with the formula abs( p - tilePoint) <= radius --> intersection, where tilePoint is a point on the edge of the tile.
-----a) and then use it to implement wall collision rules. Iterate through all the tiles, and if they're a wall, check for collision. If collision... I haven't figured this bit out yet.
----------i) figure out what direction you're colliding from and put you at the edge of the previous tile
----------ii) check half your velocity and see if THAT'S a collision, and if not, move that distance; if yes, check half THAT velocity, etc. until you're getting to arbitrarily small numbers (like say, a pixel), then stop.
1.5) make a version of this that returns 'true' (i.e. intersection) once you're a little ways inside the tile, i.e. not exactly on the edge. I want to use this for picking up keys and for reaching the goal.
2) implement the goal, i.e., have moving into the goal square trigger a 'win!' message. (Later, this will trigger next level setup.)
3) spikes and death
-----a) spike sprites (facing N, E, S, W)
-----b) death function: character turns red and shrinks, then respawns. Use game time to manage the rate at which this all happens
----------i) note: dude needs a spawnPos property so that it knows where to respawn!

Okay, I feel like I have a plan. Onward and upward!

Day 4 Plan

Need my menu buttons to modify player traits.

Total points: 20

Base:

STR: 5 -- attack multiplier
SPD: 5 -- velocity multiplier
STM: 5 -- health multiplier
CHR: 5 -- determines the number of allies you begin with

Need to get this system finished today

Day 04 - Working from home because I am sick

Due to me falling ill, I decided to stay at home instead of going outside into the Antarctic weather of Williamstown and killing myself.

Today I plan to implement a text box and actually get around to printing text. Hopefully by the end of the day I have a cool image to show everyone!

Day 4 - Time to keep chugging along

Goals for today:

-Fix end of move menu so that it actually only pops up at the end of motion, and make options selectable and do what they are supposed to do (which involves beginning to implement combat math)

-I would also like to fix movement in the sense of accounting for terrain with higher movement cost and impassable obstacles like enemies

-Things to start to worry about:

-Character details / inventory screen
-Turns
-AI

Day 4 - Expanding out

Hello everyone! My plan today is to start building upon the basic features of my game that are already implemented. The things on my list are:
-Finish implementation of all spell types (buffs, area effects)
-Smarter enemy AI (looking at A*, among other things)
-more elegant damage calculation/stats, right now they are really rudimentary just because I wanted to get things working first

I'll probably delve deeply into each of my goals, fully fleshing them out so I don't plan on finishing all three today, but I'll see how much time I have. Good luck everyone!

Tuesday, January 21, 2014

End Day 3: The enemies have risen...

I accomplished my goal of getting enemies implemented;  they now walk around (randomly), collide with objects, and die appropriately when hit enough times with magic.  The damage system (especially the damage calculation to the main character) is a little flawed, so I'll have to work on that. Hopefully I'll get some smarter enemy AI going eventually, but I got what I wanted to accomplish done today. Screenshot below:

End of Day 3 - Nice Cursors, Some stats, some terrible menus

So, I got my cursor to finally work well and properly, and I got character stats / growths to work, and I got the beginning of a menu to work...so, plenty of progress has been made, even though not terribly much of it can be seen.                    
            

End of Day 3 -- Well that escalated quickly

Hello again,

I am working on making all the transitions between dialog work. Right now I am having some difficulties making the transition between the first scene of the game to the next work with my fading out rectangle. That should be resolved first thing tomorrow. After that I will be working on the first anime world and game which will be the easiest of the worlds which will be the Pokemon world. By the end of the day tomorrow I hope that I'll have like one "section/world" of the game working. We'll see how things go.

Tomorrow then!

Day 3

Today was menu day

Completed a state machine for the game

Next:

Allow for modifiable traits

Then:

Basically finished, so on to creative additions


Day 03 End -- A long way ahead and Pokemon Influences

At the end of day 03, I decided to re-do my whole method of screen stringing. Now I will have less objectification and generalization in order to have more character specificity. I will end the day early and go write the other character paths at home and brainstorm a print function.

I also decided that the main character will be called Alex and his/her sex and gender will be undetermined throughout the whole game.

And a pokemon-style intro. Because.

Day 3 - No Gimp, No Hex, Just math

So, most of the stuff I have done so far in this game has been towards prettifying, which is a very different approach than what I normally take. Now it is finally time to get to the type of stuff that I spent all of last time doing, math, math, math. By the end of today I hope to have characters with stats and be able to simulate a single battle. I will not touch Gimp to add more sprites, and I will also not implement the tempting suggestion of Morgan to move to a Hex Grid. My goals for today are pretty simple, let's go.

Day 3 Game Plan

My game plan for today is to add some new power-ups and then add some checkpoints in the game where you can fight a boss type character.

Day 03: How to read dialogue for dummy computers

Today I plan to work on the function that processes user input and start stringing screens for the first meeting. Maybe I will start looking at text wrap if I have the time.

It's a brief post for a long day.

Tony Day 3 - Enemies and Monsters

My goal for the day is to get some sort of enemy/monster moving around on screen that can take damage from projectile attacks. I think getting the groundwork down for enemies will take most, if not all of today, so I'll just be focused on that. Good luck everyone!

Day 2.5 -- Sort of like Lion King

Hello Everyone,

Well I didn't work yesterday due to the holiday sooooo we'll just see how my day numbering system goes from here. As for what I'd like to accomplish today I'd like to start writing code for all the different branches of interactions with characters and getting maybe a game for one of the branches working. It'll take some time to get all of the branches mapped out, but I think working on one branch at a time should be good enough.

See you at the end of the day.

Day 3, Shelton

This weekend I mainly worked on non gameplay related stuff. Git has been setup, switched from raw pointers to smart pointers where that made sense and have been enjoying using C++11 lambda's.

Today's goal is to make a fully controllable character that respects physics bodies. 

Monday, January 20, 2014

End Day 2: You can shoot things now!

I've finished up the projectile motion and animation today as planned, and hopefully I'll have all basic spell types implemented by tomorrow or so so that I can begin creating some enemies (read: targets) tomorrow.

Day 02 -- Skeletons and objectification

At the end of the day, I was able to load all of the necessary images, and I began writing the big functions that will make my game work as intended. I also objectified three people, and then stuck them into an array, so they could all stay nice and grouped up. I finished up the function that will draw the scene, based off of the given parameters.

End of Day 2 - moving and pretty sprites and units and actual game play is coming soon enough

I got most of my goals done for the day with one not-so-completed, but a couple of other nice things added.

Additions:
-Cursor movement smoother: you can hold down an arrow key to keep moving the cursor, cursor screen dragging is still not quite proper, though functional.
-Sprites w/ Animations - All units on the map now have sprites that go through idle animations, further animations are annoying and likely beyond the scope of this jam
-Movement - clicking on a unit highlights all the places on the map they can move to (note, this does not take into account terrain or enemies); clicking on one of said places will move the unit to that place, if it is your unit (you cannot move enemies). You can, however, move an infinite number of times per turn, but seeing as turns have not yet been imnplemented, this is to be expected.
-Unit detail - the unit under the cursor or the unit that is moving has its name and hp (the hp is a lie and not yet related to a stat used in combat or anything) displayed in a box that changes which corner of the screen it is displayed in as to not hide your cursor

So, with all of this stuff done, maybe by tomorrow the player will be able to attack? That's pretty optimistic, but maybe it will happen. Maybe.

Day 02 -- Warm, cozy and coding.

So after finding out what characters will look like and starting to write dialogue, I will now actually work on code and begin setting up the necessary objects and variables. I will also work on a function that draws the background for me. For now I will use placeholder images, since I still need to get pictures from snackbar, the lab and eco.

Not needing to leave my room until I want to is also a very nice thing.

Day 2 - All is quiet in TCL 216...

Hello everyone, happy MLK day! I have the basics of my magic system implemented, sans actual spell casting. There are three types of spells I'm thinking of for my game: projectiles, area effects, and buffs. My goal for the day is to implement at least projectile spells today, and if I have time, buffs as well. Hope everyone has a nice day!

Day 2 - Offsite working, so much to do

So, as I continue to think about my game, I realize just how many elements there are, and thus I will try to strip down some of the most important things. The last day was all about visuals, so though I have started looking at sprites, I think I will try to take a day off from that in order to try to implement the following features:

Adding Enemies / Allies to maps in a serializable way
Implement selecting / moving units
Start working on stats / combat [ for those unfamiliar with the Fire Emblem series, combat is very mathematically precise; I will however have to choose what formulas from 13 different games I will base mine off of]

Saturday, January 18, 2014

Day 1 Recap

Completed:

Created a camera which follows the player around

Spawn characters in a circle

Movement

( basically completed my last game in a couple of hours, embarrassing )

Moving forward to:

1. AI which decide to attack run or search

2. Items

3. Trait system

Friday, January 17, 2014

End of Day 1, goals basically met, maps and cursors and images oh my.

So,

Today I got a tile-based map system set up, as well as a cursor that can move around the map and drags the map around with it as it goes (as the map will be larger than what can be displayed on screen). This is now fully functional, other than the fact that the cursor does not have any alpha, so drawing it currently totally erases the tile below it, but that won't be too hard to fix when I get around to it. I am on track with my plans so far.

End of Day 1 -- Photoshop Inception Goes Youtube

Hello everyone,

I spent my day finding pictures I will need for later dates. Found out I know how to use photoshop a lot better than I thought I did and I have successfully cut out the maiden guide that will be taking the player on a great journey through multiple anime to determine what world they would be best suited for. Right now I am on schedule with my original time table and tomorrow (monday) I'll be getting started on just about everything else. Just so I have a picture here is my beautiful maiden! Oh and I had to photoshop a photoshopped picture and then go to youtube to make sure I was cutting her out of the picture right!

See you Tomorrow!

Day 1 Results: The skeleton has been laid down

Hello all! I spent most of my day fleshing out my ideas for the magic system in my game, and I've just begun writing all the functions necessary for it. I haven't gotten to the UI yet, so no screenshot today, but many of the essential functions for my magic system are now in place. Hopefully I'll have all the basic graphics and UI implemented by the time we get back on Monday so that I can jump right into spell casting. Have a great weekend everyone!

Day 1 #2 -- grid grid grid grid...

I'll see you again when I have a grid, some walls, and a sprite. Hopefully a sprite that moves left and right according to keystrokes and stops when it hits walls. But I don't want to get my hopes up.

Day 1 - Finally, Some Magic

Hello all! For today, my goal is to lay down the infrastructure for my magic system. This includes a queueing system for the symbols, and recognition when valid spells are queued up. I'll be spending some time fleshing out my ideas in a design doc before I get to coding. Good luck everyone!

Update: a picture of my design doc, written in real pencil and paper!

Day 1 -- The Circle of Life

Hello again,

This is like total de ja vu! It is almost like I did this same thing a week ago. Anyway I shall be starting on my next game. Based off the little time table I gave for myself in my Post Mortem post I should be getting picture stuff done today and maybe even some sound files, and then some code.

I will have more for you later :)

A new jam, with more game

So, I have decided to make something of a Fire Emblem clone game themed upon Pokemon elements...

What this means is that it will be a turn-based combat strategy game where you accumulate units whom you train and fight against enemy armies in a sequence of levels. My plan is to progress as follows:

First Steps: basic infrastructure (what to look forward to today)

1. Set up a system for tile-based maps, starting with ASCII creation, possibly being eventually replaced by a real GUI editor, but as the initial goal is to get one map working, I will stick with hand-drawing with ASCII for now.

2. Set up map interactions: showing details of things the cursor is on, selecting units, moving units

Next Steps: Stats / Combat Math - a rudimentary version of the game would be playable at this point

Next Steps: Levelling / Skill Acquisition

Next Steps: Capturing? If this is going to be Pokemon themed...

This all might fill up the game jam, but if I get all the above done, then I might try to add the following features:

-multiple levels
-JSON serialization of player progress so that players could save their progress and keep playing.

This will be my first game jam game with pre-drawn assets of any kind, so...stuff will be interesting.

As both this and my Dominion game have plenty of extensibility, I imagine I will have plenty of projects to work on in the weeks/months following Winter Stufy.

Thursday, January 16, 2014

Next Game, Conor

For my next game, I want to create the framework for a game similar to Civilization. Due to time limitations, instead of creating a multiplayer game, I plan on making a single player civ-builder so the player can build their civilization from the ground up.

My first step is to work with Morgan's hex grid code example and add the ability to place units on the grid when prompted and inspect the units and resources at any given square. This will also involve making unit objects and generating maps with resources. This should only take a day.

My next step is creating a model for supply and demand with prices for each of the resources. This could take a couple days depending on how complicated I choose to make it.

Adding towns, cities, different types of units, etc. should be easy once I have the framework set up. From here, I plan on expanding the game as much as possible within my time constraints.

Next Game, Shelton

Learning from past mistakes a lot more time will be put into planning this new game.
  • Goal 
    • A working, playable, and fun game as soon as possible
    • 2D platformer with a fully user controlled magic system and fully destructible and reactive terrain. 
  • Language
    • C++
  • What I already have:
    • A fully destructible static terrain system backed with box2d
    • A very simple particle system
    • An untested spell system
  • What I need
    • A player
    • AI controlled enemies
    • A simple working spell system
  • Plan
    1. Code Cleanup and non gameplay features
      1. Get rid of raw pointers
      2. Integrate code into G3D
      3. Find and familiarize a better build system than hand made make files
      4. Add a start screen
        1. Optional: Create a robust game state system
      5. Figure out scaling issues (probably could use seasoned advice for this one)
    2. Create a movable controllable player
      1. Create a basic controllable square player
        1. Ignoring box2d
        2. Need to abstract the controls away from the main file
        3. Make the camera follow the player
      2.  Hook the player up to box2d
        1. Player will need to respect the terrain
      3. Give the player a better texture
      4. Animate the player
    3. Create AI controlled enemeis
      1. Copy lots of code from the player codebase to make physical entities that respect the terrain
      2. Make a simple AI that just go towards the player
      3. Add a way for the player to attack the enemy
      4. Add a way for the enemy to attack the player
      5. Tweak until the combat is somewhat good
    4. Give the player a way to destroy terrain
      1. Explosions are a relatively simple way to start
    5. At this point a playable game should exist
    6. Create the magic system

Tony's Next Game - Design Doc

Game Jam #2 Plan

Basic Premise
  • take RPG framework from previous game jam, and add action elements
  • specifically, a magic system where spell symbols are queued as they are cast, with different symbol combinations resulting in different spells
  • scrapping the turn-based battles of my last game, have enemies onscreen with basic AI
  • going back to my original source of inspiration, have it be a rogue-like with 9 levels to advance through
  • spells are cast via mouse click on screen, with hopefully animations
I think this next game is feasible, especially since I have much of the RPG foundation already laid out. The focus this game jam will be on combat, which I kind of pushed aside during the last game jam.

Development Plan
  • Complete idea for magic system/develop the spell selection queue - 1 day (hopefully today)
  • Spellcasting via mouse click (sans animation) - 1 day plus outside work
  • enemy movement/animation/AI - 2 days*
  • Enemy/character interaction with spells/collisions - 2 days*
  • Spell animation - 1 day


I'm most worried about the enemy movement and AI, because that will by far the most complex thing I'll be implementing (along with the possibility of implmenting A*). Managing enemy/character interaction on screen will also be a challenge, as well as animations.  For all of these tasks, I'll need to find a way to make them good enough for the game to be fun without having them be too much of a time sink.

Next Game: Nick Wolf

For the new game I want to extend the game that I have to more closely resemble my original vision. I want to add an intro screen that launches a backstory animation to the game. I want to animate the enemies with sprites, I want to add more power-ups, and I want to extend the map variations. I want to have checkpoints in the game where you fight either a boss character or you fight hordes of the smaller characters. I want to add music and sound effects. I also want to add a conclusion animation to the game that is a resolution to the intro animation. I think that this is  mostly feasible, I probably won't be able to finish the closing animation.

1. add new power-ups: .5 days
2. add enemy sprites: 1 day
3. extend the map variations: 1 day
4. Boss fight/ horde check points: 1-2 days
5. intro animation: 3 days
6. end animation: whatever time is left

I am worried about the animation steps  and making the enemy sprites work because I don't really know how to do animation.

Post-Mortem: The beginnings of an RPG

For my first ever game jam, I felt that these past few weeks went fairly smoothly.  I accomplished most of what I wanted to accomplish, with some hiccups.

I think that the map editor and the management of items/stats/enemies (once they were finally implemented) will provide for a nice framework for this next upcoming game jam, and these implementations were aided a lot by JSON. The character movement, environment and menu system all pretty much turned out how I wanted them to be, albeit not without some significant debugging. As I look by at my goals and results day by day, for the most part I finished up what I set out to accomplish (besides a magic system, but that's for this next game jam).

The biggest obstacle I ran into when I was creating the game was my unfamiliarity with JavaScript, and consequently, the debugging.  Working with JavaScript has made me appreciate more structured languages such as Java. I had some of the strangest errors coming from things I usually take for granted in other languages (like rounding down integers, for example).  Because of how "flexible" JavaScript is (freely converting types, for example), a lot of the errors in my code were hidden and took a while to find and fix. These problems with debugging and utilizing JavaScript should be much better this upcoming game jam because I now have much more experience working in CodeHeart and JavaScript.

I was surprised at how easy some things were to implement, and conversely, how tricky some other things were to implement.  Movement and collision detection were straightforward tasks, as was managing items and enemies.  The map editor however ("It's just a 2D array of tiles, how hard can that be?") probably caused me the most trouble in terms of bugs, but in the end the system works pretty well and I can efficiently draw my environments now.  Also, JSON makes things so much easier. It's really, really great.

Development Time Breakdown (Roughly judged from old blog posts and memory)

  • Movement/Animation - 3 hours outside of class (used knight.js as a template)
  • Menu System - one class day
  • Map/Tile Editor - 1.5 class days, plus about 5 hours outside of class
  • Battle System - 1.5 class days, plus about 3 hours outside
  • Collision Detection/Actionable Environments/Moving Between Areas - With my map editor in place, ~1.5 hours total
  • Message Box - 2 hours outside
  • Items (Use/Management) - 1.5 class days plus some more hours outside of class
  • Random Encounters/Enemies - 1 class day
If I were to redo my plan for this game, I would've done the most fundamental things (Map editor/collision detection) first to lay down my groundwork for the RPG. I wasn't totally sure where I was going gameplay-wise, and I spent too much time thinking about the battle system instead of laying down the foundation of my game, so there was lost time there.

Regardless, I now have a nice basis for a 2D RPG, and I'm excited for the different possibilities for gameplay in this next game jam.



Post Mortem -- The Day the Code Stood Still

My dearest readers,

I come to you today with my post mortem insights, woes, and revelations. 

I will begin by saying that a lot of things went well with this project. It ended up coming out fairly close to what I was expecting it to look like, even a little bit better.  All the instructors, and levels were working the way I wanted them to. Only the "special features" like the word bank and a more aesthetically appealing user input didn't work out well. Before I talk about those special features that didn't work out the way I wanted them to, I'll focus on the things that went well. I think because I really did already have an idea of how I wanted it to look that it helped me stay focused on making sure that is the way it happened. I didn't have to spend a ton of time looking for pictures, backgrounds, or think of color schemes because I already knew what I wanted them to look like. 

As for what went wrong I realize that a lot of things that I implemented that were extremely time consuming like getting the unicode for kanji, putting in the meaning, making buttons, and drawing images on the screen I did naively the first time and at the end had to go back and spend time redoing them so that it would be easier to implement the next feature. For instance at first I had two separate arrays for the kanji and the meaning of the kanji, but in the end I had to go back through and make them a double object array (which was faster anyway) so that I could randomize the kanji and not lose the meaning so that the games wouldn't just cycle through the arrays in the same order every time. Also the time and effort I put into all the Chapter Buttons and instructor buttons could have been fixed if I had made them all objects instead of doing calculations by hand each time when really they all ended up being in the exact same positions on different screens. 

I think the biggest surprise for me was finding out that I could use html from Morgan. Things like my buttons or even successfully implementing the user input on screen instead of on a popup would have been so much easier if I had known about ui.innerHTML. I guess I was also surprised by how difficult it was to actually get all the unicode for the Japanese characters into my game since I had assumed there would be some sort of partner to them, but there wasn't. 

I think that my development time breakdown was fine actually. I only got off track when I had to go back and redo functioning things so that I could properly or more efficiently add a new feature, but as for how I had paced/scheduled myself for my code I stayed pretty on time with everything. 

If I could redo this project, I would definitely ask a lot more questions before I began. If I had asked beforehand about a lot of things it would have saved me the hassle of having to fix/redo them later. 

As for my next game......

I at this current moment really don't have any real idea of what I want to do, because I really like anime ( Japanese animation) I would love to do something based off of that. As I type I think that maybe I'll make a game/quiz of some sort that determines what anime world someone would be best suited for. It'll take them through various levels and at the end they will be sent to the world that is best for them. 

I do think this is feasible. I definitely think I just need to write down everything I want for the game though since it is something I just came up with. I'll definitely need to be a bit more on top of graphics as well since I want this to be a bit more visual based than my previous game. 

Estimated Time:
Day 1:
Find all the pictures that I can feasibly think of that I will need for this project, so that way I don't have to spend valuable coding time later looking for a picture. I will already have it. Limiting myself to....say 5 different anime world options that means I'll need at LEAST the following pictures:

1 Guide
8 Main World Pictures (2 for each)- Slice-of-life, Pokemon, Hell Girl, Psycho-Pass
1 Path of a Road
4 Main Characters (correspond to the anime)

I expect finding pictures should only take at least an hour and no more than two. 

In which case I should still have about two hours left in the day to find some sound files. If there is any time left I will begin making code for the pictures and definitely begin working on all the questions and short games. 
Day 2:
Begin/Continue to develop/code for short games and questions.
Day 3:
Continue making short games and questions.
Day 4:
Continue/finish making short games and questions.
Day 5:
Finish making short games and questions. 
Day 6:
Game should essentially be up and running at this point so it should just be detail work at this point.
Day 7: 
Finish detail work/ Functioning game. 

I am most worried about not being able to think of enough short games. I definitely want it to be more of a movement through a game based on decisions rather than just a quiz with pictures. I also am worried I am going to get really overwhelmed with making pictures and everything look perfect and I will get distracted with making pictures work than the code, but we'll see what happens. 

That is all for now. 

Ta ta!