Saturday 14 July 2012

Progress Update

Well basically...there has been no progress haha. I don't have time during the week anymore now that I work. On the weekends, like today, I need to study for my online course and do other things that must come first. So for now, my project is on the back-burner until I am done my online course at school. That should be around August 13th. Once that is complete, I should have my weekends back and will invest greatly into my project. I still think it is going to be awesome and I can't wait to get into again!

Aside from that, work is pretty cool. I still need to learn all the tools that have already been made and also to learn the coding information that I need. Namely programs that interact with excel files as well as networking. Hopefully I can learn that as quickly as possible so that I don't spend my days trying to figure out code but rather make or improve new tools to help out my team.

Friday 6 July 2012

Inspiration Update #1

Since my last post, I've spent quite a bit of time planning out how I was going to tackle my latest project. 90% the way through, I came up with a better, simpler and potentially cheaper way of doing it. I still finished my initial plan to see if it was in fact feasible, which it was, though more expensive and much more complicated. My new revision of the implementation no longer requires transmission towers, in fact, to prototype, I only need to purchase a few new parts. For the rest, I already have the hardware required! So what I am learning now is networked multiplayer over an ad-hoc wireless connection. Right now, things are looking pretty good, one key element is functioning (tested it last night), I'm going to start learning networking, and the rest of the hardware is coming in next week. If everything works out semi-nicely, I should have my prototype up and running next weekend :-)

Wednesday 4 July 2012

Latest project inspiration

For a while now, I've been trying to think of a way to bring games into the real world, mainly to get gamers out and about. I think I've finally found the way to do it. I don't want to speak to much on the idea yet until I have a prototype running, but it will require me to learn a lot of things I have no clue about. I will need to learn augmented reality, set up a server as a hub for players to connect to, and finally, I need to learn how to build small transmission towers to communicate with the players. Yup, this is going to be quite the adventure...

Things are looking good!

It's been a while since I last posted, since then I changed some game mechanics in Slime Jumper, got my XBox 360 and Kinect from Microsoft and got a job at THQ! :-)

Starting with Slime Jumper, instead of having a "slime boost" mode when you can do some crazy stuff, I instead added counters for the items you catch. When the counters reach 0, you can drag an item specific bomb onto the screen that will cause some stuff to happen (more trash falling, player duplication, etc). Last thing I completed was the dragging gestures of the specific items into the middle of the screen. I had problems with that because tapping and dragging can both be gestures, but it only sees a "tap" if the fingers touches down, doesn't move much and lifts off. But that means that you can hold your finger down, wait for the right time to jump, then lift off and jump. This is not what I wanted, I wanted the tap-jump to occur immediately. This was conflicting with my use of the dragging gestures however. In the end, with some boolean flags I was able to distinguish between immediate taps and dragging gestures to achieve the controls I wanted.

As for the XBox, I got it in the mail...some time ago, I actually don't remember exactly when hehe. Anyways I've been playing quite a bit of that lately, I had my spurt of gaming at the beginning and now it's under control. :-P I've mainly been playing Forze Motorsport 3 (because I got it for free last year from the Great Canadian Appathon), and some arcade games. It was fun looking through and playing trials of the arcade games because it gave me ideas for the games that I want to make. Oh and Fruit Ninja Kinect...amazing!

Lastly and definitely most importantly, as of Monday July 9th, I will be a full-time permanent employee at THQ!!! I'm too excited to say much more lol

Saturday 16 June 2012

Slime Jumper Upgrade

Since my last post, I've been doing things here and there, some more important than others, but yesterday I put more time into improving Slime Jumper to make it more the game I intended from the start. 
So what I've changed are the spawn chances for negative items, so now its easier to lose and harder to get high scores. 
I added tar drops that come down the sides of the walls and when the player grabs one, it acts as armor and absorbs one hit with cleaning products.
There is also a 1-up life orb that will come floating from the bottom of the screen that adds a life to the player when they catch it.

When that was done I still felt like the game didn't have anything that the player was really trying to play for, there was no motivation to play even a little intelligently, you can easily survive keeping your finger pressed on the center of the screen. 
So I removed the lives, and instead now there is a vial on the side of the screen that is filled with "slime-life". A little flame under the vial burns away the players health over time and the only ways to change that is to collect garbage. So depending on the garbage, the more life is recovered.
The tar drops will make life burn away more slowly for a time, 1-ups will refill the vial and I plan on adding combos that change certain player characteristics. So for instance, 3 banana peels could give the player a slippery skin that makes cleaning products bounce off. Or 5 trash balls will make the player temporarily unaffected by cleaning products. And so on...

All-in-all I'm very much more satisfied with the way things are going now. Slime Jumper is improving, finishing up the first of two summer courses this summer. An interview at THQ this Monday!!! Things are looking good indeed. :-)

Saturday 9 June 2012

Redirection

Since my last post, I've been turning ideas over in my head about how to approach the lag and collision detection issues for my Tunnel Flyer game. None seem like they would help and I can't do more than speculate about solutions since I can't really profile the game and see where the major bottlenecks are. All these issues combined, I've decided to put that project on the back-burner. I will still keep it in mind and see if I think of some way to solve the problems, but I won't sit blankly in front of the screen trying to push something out.

That being said I will continue with learning Unity of course, and swap-out completing Tunnel Flyer with polishing and updating my two published games, Slime Jumper and Keep Running. Back to work!

Friday 1 June 2012

It Works! Mostly...

My method for tracking the player along the tunnels in Tunnel Flyer is working! I am also able to make the player bounce off of the walls most of the time, issues arise when flying perpendicularly towards the wall, but I should be able to fix that with collision prediction. Something is causing the game to lag however. Currently I am only ever checking against two of the three tunnel segments that I am tracking, when tracking 3, the game was unplayable. Now when only tracking 2, the game is playable but the lag is noticeable. In all, I am excluding 1/3 of the tunnel segments the player is near, and excluding any triangles in the mesh that are too far away from the player. The next best thing second to only ever checking 1 tunnel segment (which seems like a bad idea) is to perhaps make the tunnels larger while keeping a similar triangle count. This way, the player will only ever be nearer to a smaller number of vertices so less computations should be required.

I will try to find a way to profile the game as it is playing to see exactly where the issues are (though I have a pretty good idea), as well as continue to make optimizations until the game is running smoothly.

On a side note, I have begun learning blender for modeling and animations. I'm not that bad though I can't say I'm all that good either, my humanoid ended up looking like someone wearing baggy overalls with an Easter Island head. So now that I know my way around the basics of blender modeling, I am going to start learning animations when I have time. Oh and I won't be using my model, I found a much nicer royalty-free one online and will continue learning with that one instead. Haha

Thursday 31 May 2012

Even Simpler!!!

I was just thinking about the hashing function when I realized...I can make my life even SIMPLER! Scrap the hashing altogether. At the beginning of the game, I check the dynamic objects positions against all the tunnel segments, I get the index of that segment and store it. THAT is the main index I need to check against, every frame I only ever check against the one that the dynamic object is at, the one before and the one after. After that I check to see which of those three I am nearest to and use that one as the main segment. This way, I only ever check against 3 segments and I adjust which is the main one accordingly moving up and down the list of segments as needed!!

This is what I was hoping to achieve when I first started thinking about how to deal with the collision detection, now finally after a round about through octrees and hash tables, I've got the best/simplest method I can think of that is the least demanding. With a few clever tweaks I can even spread the collision checks to have it check only the tunnel segment I am most likely to be colliding with, reducing the checks to 1-2 max per frame per dynamic object!

Out with Octrees, in with Hash Tables!

So as I was reading up on Octrees and beginning to implement them and I realized that although they would be great for a world that is more or less square-ish in shape (or you could even use a number of them for longer worlds), for my purposes it's not ideal. The levels I will be building are by nature going to be more elongated, which doesn't seem to be well suited to be used with octrees. So I have decided an easier way to get things done; first of all, all the level segments are contained in a list, what I plan to do is store the indices of the tunnel segments in a hash table using their unique locations in some hashing function (haven't figured it out yet). That way, I could hash everything once before the game starts, and then using the player's location with the hashing function, find out which tunnel segment the player is nearest. From there I have the player's location relative to the list of tunnel segments and can easily check the immediate segment and the one before and after (to take care of the boundary case of collision detection).

It may not be the most space efficient (to ensure I don't get too many clusters, I may need to increase the size of the hash table if I can't figure out a better hashing function) but that is why I limited the hash table to hold only the indices, therefore only integer values. I could even use a smaller data type since I won't have nearly as many segments as an integer could represent. All the computations for the tunnel segments are done offline and only any objects that are dynamic will recalculate their hashing values online.

Overall I'm feeling pretty good about this method, the implementation is very simple, it should work great, all I need to do is spend the time to figure out a quality hashing function.

Tuesday 29 May 2012

Moving Along...

While I was thinking over how to organize the collision detection last night, I remembered the spatial hash grid I had been using for my school projects and then remembered Octrees! I've never done them before so first I will read up on them in a book I have (the octree section being one I haven't reached yet), and then implement it and see how it runs.

At the same time I've been following tutorials on making a Hack 'n Slash using Unity:(http://www.youtube.com/watch?v=YYqzz1dy3Ak&feature=BFa&list=PLE5C2870574BF4B06).
So far some basics about game components have been done, a decent amount of scripting and GUI design and now integration of a 3D model with animations has come up. I've decided to take a small break from the tutorials and learn how to make a simple model and animations using Blender. I don't want to make anything super fancy because I want to get back to the tutorials A.S.A.P., so I will make a simple humanoid character with a basic walk, idle and attack animation. If I struggle too much with that I will simply make some kind of vehicle that will hover around and shoot (bare minimum in terms of animation).

Friday 25 May 2012

Tunnel Flyer Progress

So the collision detection seems to be working, it gets the vertices from the models near the player, constructs the triangles, then uses the collision detection algorithm to determine if there is a collision. I implemented two levels, one where the player is warned that they are near the wall, another when they hit the wall. Unfortunately the latter does not work all that great. I could do something simple and effective if the tunnels were uniformly shaped, but my goal is to have jagged walls and protrusions to make it look like its underground or something. Going to need a decent amount of time to work on it.

I need to improve my algorithm so that it tracks which walls the player is near rather than cycling through every single model. I also tried a simple collision resolution, that didn't go so well either. While I was mulling over how to solve those issues, I tweaked the controls so they feel nicer, also made some simple aesthetic additions, and a simple culling feature so that when I create much larger levels, the game won't be bogged down with drawing the things that aren't in view.

When I feel I need to take a break from this project, I am trying to make myself work on learning Unity rather than resorting to playing games. Kinda working, but I'll be getting more and more focused on work as time goes on.

Monday 21 May 2012

3D Mesh Collision!

I've come back to Tunnel Flyer now that the controls work. I added randomly generated tunnels using small segments (simple ones for now). Currently I am working on the collision detection between the player's ship and the tunnel walls. I can't see a nice way of using primitives to detect the collisions so I figure this is a good time to learn how to use the model geometry for collision detection.

What I have so far is: when a player is close enough a segment, it checks how far the player is from each triangle in the model. Given that the models are rather simple I was hoping it wouldn't be too intense. I didn't want to attempt optimizing too early on but right off the bat I'm at what looks like ~10 frames per second! I'll need to make improvements to when I do the checking and maybe spread it across a few frames.

The collision detection itself is an algorithm I got from a book I'm still reading; "Real-Time Collision Detection" by Christer Ericson. Before I even consider improving that (which I'm sure they little to nothing I could do) I'm going to fix the code around it first. Hopefully by the end of the week I'll have the collision detection working correctly and I can see to what limit I can push it.

Saturday 12 May 2012

Taking a short break from Tunnel Flyer

Until Tuesday, I won't be working on Tunnel Flyer. This is because I signed up for a design3 webinar showing how to use the Unity Shuriken Particle Engine! Problem is I don't know how to use Unity! So that is what I will be doing until the webinar is complete. I've got plenty of resources to learn from so it should go pretty quickly.

Thursday 10 May 2012

Second Developer Movement Game Certified!

Just got the email today that my second developer movement game for Windows Phone 7, "Keep Running!", has passed certification! :) I may need to make it easier though given the initial reactions when my friends played it for the first time. Either way, its certified and will be published shortly! :)

Tuesday 8 May 2012

Tunnel Flyer 3D Flight Controls Complete!

I just completed the 3D flight controls for Tunnel Flyer. The ship is controlled using the accelerometer. Riemers XNA Tutorial on quaternion rotations and flight kinematics were extremely useful for quickly wrapping my head around a nice easy way to rotate vectors. When using the accelerometer data for inputs, the movements were very choppy. I looked into using a filter of some kind, I quickly came across a low-pass filter but that wasn't what I was looking for. So I resorted to making my own smoothing algorithm that uses two previous input values to smooth out the current value. Overall the controls need a bit of tweaking but for now I'm quite happy with the result as now the ship moves around mostly fluidly. :-)

Monday 7 May 2012

Slime Jumper Certified!

I just got the email informing me that my first Windows Phone 7 game "Slime Jumper" has passed certification and will be automatically published after 24 hours!!! No better motivation to continue developing video games!!

Saturday 5 May 2012

Tunnel Flyer Revisited

Yesterday I went back to my old Tunnel Flyer game that I had been having problems with. I've decided that I will change the game so that I may proceed along with development rather then be stuck surfing the internet trying to figure out how to properly export .fbx models that have holes in them.

So the way the game is going to play NOW is basically you control a flying vessel and you have to navigate your way through tunnels of various types. Control of the ship is done using the accelerometer and there will be a brake and a boost button on either side of the screen. The tunnels will be complex enough having twists and turns, going up and down and likely to have obstacles floating around in them. I've chosen this idea because I can learn more technical skills rather than how to properly use a 3D modelling program. Those techniques I will need to learn are proper 3D flight controls, some kind of mesh collision and I'm hoping to have a choice of level designs. The levels either being from a preset list with varying ranges of difficulty, or a tunnel that is generated on the fly, making it different each time its played. The latter being the more difficult one.

Tuesday 1 May 2012

Second Developer Movement Game Completed!

I just finished submitting my second developer movement game on the Windows Phone 7 MarketPlace!! This one is called "Keep Running!" The game is basically a side scrolling platformer where the player's position is fixed and the world comes at her/him. The player must avoid obstacles that come in from the right side of the screen, while trying to grab coins and purses to maximize their score. The levels are generated using predetermined "segments" that get loaded in piece by piece.

Now that both of my submissions are completed, I can start working on perfecting them to what I have in mind. Slime Jumper will have more items, special power-ups and maybe a few other things. Keep Running will have a more dynamic collision response system where the player can trip over obstacles (slowing them down but not dying), a more dynamic level creation procedure so that each player is different from the last, and maybe some power-ups as well.

So that's all for today! Both games are submitted! Yay!! Oh and I can't forget to complete my 3D Tunnel Flyer game that has caused me a few headaches. Haha.

Monday 23 April 2012

First App Hub Game Submission!

Yesterday I had completed the basis of my Windows Phone 7 game "Slime Jumper" and submitted it for certificated and publishing on the MarketPlace! As it is still the base game, a lot of overhauling and features are still planned for the near future. The main one being art assets! I did all the all using Paint and Gimp...which explains...well everything to do with the art. These changes however will only be started after I have submitted my second app for publishing. I have the game laid out already in thought, so that is what will be occupying my time for the next little while.

Friday 20 April 2012

Developer Movement Tunnel Game - Revised

I have not been able to work on my tunnel game for some time because of school work piling up (not from procrastination, just had 4 class projects due in the same week). So when I finally came back to it, it turns out that I can no longer export .fbx models from Maya! Wonderful! Now I needed Maya because I needed to make holes in my models for the player to pass through and Maya was the simplest way I found (admittedly I didn't look very hard for alternatives). Once Developer Movement is over, I will be returning to that project and completing it once and for all.

In the meantime, I have started another simple 2D game for Developer Movement that I am aiming to have completed by Sunday evening or Monday. That way I can submit my first app on the Market before the deadline. The new game is called "Slime Jumper"! More details coming in a later post.

I will do my very best to not play the Diablo III open beta this weekend....LOL

Tuesday 21 February 2012

Developer Movement Tunnel Game

It is finally reading week! Though all that means is that every teacher piles all the work onto us for this week, and puts the midterms for right afterwards. I am still going to try and work on my Tunnel game though. All the components are working so I can put together the basic game. Tunnels are moving correctly, collision detection works great and my models are finally cooperating! All that's left now is to polish to graphics, add the proper menus, put in particle effects and the base of the game will be completed! But first, 3 more assignments need to be completed...

Sunday 5 February 2012

Developer Movement

I started yesterday on one of the games that I will be submitting for the Microsoft Developer Movement. Going to be a simple tunnel game. Basically you are constantly moving forwards through a tunnel and obstacles are placed in your path, however to navigate around them you will need to actually move your phone. I'm not sure yet how large the tunnel will be (determining how much you will need to move your phone) but I'm thinking that the whole tunnel will not be visible on screen at once, that way you NEED to move your phone around to get play the game. Hopefully I can get some good progress done today so that I can focus on school when the week starts again.

UDK Inputs

I finally got around to doing some more UDK tutorials on uscript. I now have a pretty good idea about how to get/configure/manipulate user inputs. I've covered so far for the keyboard/mouse and gamepad but what I really want to do is figure out how to implement my own custom inputs from other non-default devices. Don't know when I will be able to get around to that, school is picking up now but hopefully I can squeeze in some time.

Saturday 7 January 2012

UDK Project

Nearing the end of October 2011, I began playing around with the Unreal Development Kit. So far I have learned the majority of level design and have started with UnrealScript. I'm hoping that throughout my busy semester I will be able to get something working so I can post it here before exam period.

Advanced Game Development course

This semester I am taking "Advanced Game Development" at Concordia University. My team and I are trying to figure out what type of game to make. The game itself does not have to be spectacular but must implement some of the techniques we will be learning in class. Some of those techniques are pathfinding, flocking, strategic pathfinding, spatial partitioning, etc. One of the more popular ideas we have been throwing around is making a game similar to Dynasty Warriors so we can show some interesting AI and get practice with scheduling, collision detection and rendering optimizations.