Sunday, January 15, 2012
Hungry Monsters Prototype
While on my recent business trip, I spent my time at the airport and on the plane programming a game concept I've been thinking about a lot lately: Hungry Monsters (the first prototype). Fair warning, there is no game play yet, but merely a rapid prototype of the game play elements, specifically the resource management of employees, work stations, ammunition and the actual playing field.
Hungry Monsters is very similar to Plants vs. Zombies, but with my own engineering spin on it. What's different, at least in my design, is that the player will have to decide how to spend their resources differently by running a bakery to provide the food (the ammunition), as well as place weapons to fend off (feed) the onslaught of hungry monsters. Players will have to decide if they place another muffin shooter, an oven, or another employee for instance.
The prototpye at this stage doesn't allow the player to do anything yet, but was built to allow me to investigate the idea. Through the Unity Editor I'm able to try different combination of things. Considering this took me about 6 hours (built from scratch in airports and on the flight for a recent business trip) I'm pretty happy with the outcome and excited to move on. Please excuse the Microsoft Paint artwork and simple geometry, it is a first pass prototype!
In the next version I hope to have the basic interactive elements working to allow placement of work stations, workers and weapons. (I need a better word for weapons too!)
Labels:
developer,
indie,
programming,
simulation,
unity,
video games
Saturday, January 14, 2012
Booth Bunny Me
I was out of town this last week, employed as a booth bunny for a simulation demonstration we made to showcase a number of our systems. It's fun and frustrating and exciting and boring, all in one!
Sunday, November 27, 2011
Photograph is Fun!
I'm working on a freelance gig for a mobile app. I won't go into much detail, but its very entertaining. I'm building some interesting photography setups to take some pictures of things I never thought I'd be taking pictures of.
Friday, November 4, 2011
Minnetron 10,000 Arcade Viewer
I've made a Unity Web Player version of my Arcade Viewer for the Minnetron 10,000 Arcade Cabinet I've been building. My intent was that this would both show how the cabinet goes together (since I built it digitally in Blender first, why not use it?) and to allow others to try out paint job concepts.
To see the "game" click on the image. You may need to install the Unity Web Player, but it will be worth it! Or just download the Windows executable.
To see the "game" click on the image. You may need to install the Unity Web Player, but it will be worth it! Or just download the Windows executable.
http://ryanfoss.com/games/prototype/arcadecab/
FYI, the name "Minnetron 10,000" is a play on the Minnesota nickname "Land of 10,000 Lakes".
Tuesday, November 1, 2011
Halloween 2011
I went crazy with costumes this year and got the family to do a Plants vs. Zombies theme.
We even made it onto the Plants vs. Zombies Facebook page!
More pictures in my Google+ Plants vs. Zombies Halloween 2011 gallery.
We even made it onto the Plants vs. Zombies Facebook page!
More pictures in my Google+ Plants vs. Zombies Halloween 2011 gallery.
Sunday, October 23, 2011
Arcade Wood Construction Almost Done
Construction continues as you can see in the image below. I'm almost done with all the major cutting and nailing. Just four more cuts on some plywood and I should be ready to sand and poly. I was about to finish the control panel but I decided to take a step back and think about how I can build it so I can get at the controls and wires without a lot of trouble.
I learned from my controller experiment is that my wiring connections needed to be checked and rechecked. Even though I was using the right connectors, I was fighting the contacts. I think I know what to do right this time, but my test controller was open on the bottom which facilitated working on the button and IPac2 connections. For this arcade, I want to make sure I can build and get at the buttons without too much trouble.
I learned from my controller experiment is that my wiring connections needed to be checked and rechecked. Even though I was using the right connectors, I was fighting the contacts. I think I know what to do right this time, but my test controller was open on the bottom which facilitated working on the button and IPac2 connections. For this arcade, I want to make sure I can build and get at the buttons without too much trouble.
Wednesday, October 19, 2011
Blocks that Fall in Unity
If you've been to the IGDA Twin Cities meetings, or have seen any of the videos (here and here) where I presented the idea of collaborative game developing, you know that the group is off and running. We're moving forward with a Mr. Driller inspired climbing game of block destruction.
We've done a lot of development over the two months we've been at it. However, at the last meeting a number of bugs showed up during the live demo. Due to certain circumstances (my laptop fell to ground and quit working) I ran the game demo on a netbook. Although the game still played well, a number of bugs appeared more often than in my play testing, probably related to framerate and physics calculations.
As a game developer, something I've always wanted to do was program a Tetris clone. Why? Well, because although its simple, its also a good exercise in programming for a novice game programmer. Alas, its also one of those things I've never done (but always think about). Given the troubles we're experiencing with the existing block falling code in the game, I decided it was time to take a crack at it.
We've done a lot of development over the two months we've been at it. However, at the last meeting a number of bugs showed up during the live demo. Due to certain circumstances (my laptop fell to ground and quit working) I ran the game demo on a netbook. Although the game still played well, a number of bugs appeared more often than in my play testing, probably related to framerate and physics calculations.
As a game developer, something I've always wanted to do was program a Tetris clone. Why? Well, because although its simple, its also a good exercise in programming for a novice game programmer. Alas, its also one of those things I've never done (but always think about). Given the troubles we're experiencing with the existing block falling code in the game, I decided it was time to take a crack at it.
Wednesday, October 5, 2011
Acrade construction continues
I'm building my arcade cabinet in three parts: top, bottom and controls. These pictures show me putting the top and bottom together. It's the right height and seems pretty stable.
Tuesday, October 4, 2011
Three Riker Picard
I made this last night for the IGDA Twin Cities Podcast Episode 9, titled Three Riker Picard. Listen to it if you want to hear how this idea came to be.
Check out "Three Wolf Moon" on Amazon if you don't know what it is to see the inspiration for this work of art!
| Lady Killer T-Shirt Design |
Wednesday, September 14, 2011
Thursday, September 8, 2011
IGDA Twin Cities Podcast #8
We've published another IGDA Twin Cities podcast. We had some recording problems, but its still full of interesting conversation.
Friday, August 26, 2011
I presented at IGDA Twin Cities
I presented at this month's IGDA Twin Cities meeting. I want to find others with similar interests in Arcade machines and video games and see if we can start something. I would love to see a Winnitron in MN, and I'd love to make a game for it.
Anyway, check out my presentation. I was awesome like usual.
Arcade Games and Independent Games on the Winnitron.
Anyway, check out my presentation. I was awesome like usual.
Arcade Games and Independent Games on the Winnitron.
Friday, July 29, 2011
Arcade Design
I've made some interesting progress with my Arcade cabinet design. I've experimented with the idea of it being more modern that typical arcade cabinets, and emphasizing the smaller depth that I can get using newer and smaller hardware, such as a flat screen monitor. I built it in Blender to help me visualize it, as well as think about how to put it together.
I took it a step further and built an approximate 1/3 scale model using foam board. I measured the thickness of the board and assumed it would be equivalent to 1/2 inch thick MDF and scaled from there. It stands 27 inches tall, where the real design is 6 feet tall. The "monitor" in this case is just black and blue construction paper the scale size of a 24 inch monitor.
I took it a step further and built an approximate 1/3 scale model using foam board. I measured the thickness of the board and assumed it would be equivalent to 1/2 inch thick MDF and scaled from there. It stands 27 inches tall, where the real design is 6 feet tall. The "monitor" in this case is just black and blue construction paper the scale size of a 24 inch monitor.
Tuesday, July 19, 2011
Arcade Controller Progress
![]() |
| 2 Player Controller |
![]() |
| Stick and button configuration. |
I started using a semi-glossy latex wall paint which went on well, but left a lot of texture. It was also sticky, even after drying for weeks, such that if you rest your hands on the paint you had to peel them off. I painted about 7 coats of the latex paint, each with a thorough sanding after drying. The tackiness wasn't right so I sanded again with a real rough grain and switched to an enamel gloss paint. It turned out great!
The controls are pretty simple using the I-PAC 2 from Ultimarc. It works great, acting like a keyboard plugged into the computer.
Friday, July 1, 2011
E3 2011
I love E3, its so much fun to see happen. A combination of what they say and how they say it.
It was a great subject for the IGDA Twin cities podcast, though I only said half of what's on my mind. We talk E3 at great length, covering everything from Microsoft’s Kinect boner, to Sony’s apology and Nintendo’s new console. Check it out.
It was a great subject for the IGDA Twin cities podcast, though I only said half of what's on my mind. We talk E3 at great length, covering everything from Microsoft’s Kinect boner, to Sony’s apology and Nintendo’s new console. Check it out.
Sunday, May 29, 2011
Podcasting, Episode 5
Perhaps we were a little crude, but it was fun. We had a guest on too. Check IGDATC.org to listen to the podcast, or check it out the on iTunes.
Monday, May 2, 2011
Another podcast published
Portal 2 consumes me... but I managed to find the time to record a IGDA Twin Cities Podcast and talk about Portal 2.
Check IGDATC.org or on iTunes to listen to the podcast.
Check IGDATC.org or on iTunes to listen to the podcast.
Friday, April 15, 2011
Arcade Controller
I've finally built and arcade controller. It was pretty easy, though I changed my mind about using a KE72 and decided to use I-PAC 2 from Ultimarc instead. It was brilliantly simple to assemble and has been a lot of fun. I've also toyed with Hyperspin as a front end, but without many games and content, Hyperspin is a chore to find games that work. However, it does come with a lot of documentation and helper programs to organize lists and everything, so I'm going to go forward with it.
Thursday, March 31, 2011
Rolling Average Smoothing
At the IGDA Twin Cities meeting in March, the lead developer for Just Jam, Matt Heinzen, mentioned using rolling averages to do animation. This caught my attention, since it was a perfect phrase for a trick I have used a number of times in my programming. I thought I'd take a shot at explaining it here since I did a horrible job on the IGDATC Podcast.
A rolling average is also known as a moving average along with a few other cute names. Wikipedia does a good job explaining it in that Wikipedia way. You know, the equation way with complicated, but accurate, descriptions. I say a rolling average is just a way to take the average of a select part of data set. For example, in the last 7 days, I've averaged 0.6 cans of Mt. Dew a day. If, tomorrow, I don't consume any Mt. Dew, my 7 day average will go down.
So how does this help in programming? For me, its usually a matter of convenience. You may have binary data and you want to smooth it out some for instance. To really smooth it out you may want to be aware of your time step, acceleration/deceleration, velocity, motion time, time into motion. Maybe even more. With a rolling average all you need is a target value.
Lets say you've got an arrow and you want to have it point somewhere. You don't want to have super control over the animation of the arrow like I mention above, you simply want to tell it to point up or point down. However, it would be nice if the arrow rotation had some motion.
Let's set up this example. There is an arrow pointing up, lets call that 0 degrees. Now at some moment you want to say point down, rotating 180 degrees. If all you do is say at one moment your 0 degrees, and the next moment your 180, there is no animation. Let's use rolling average to smooth it out. All we need to know is the target rotation angle, which in this example is either 0 or 180, and the current angle. We need to pick a period, which in the Mt. Dew example was 7 days. In a typical game, and in most cases I've designed, they end up depending on the frame rate, lets not concern ourselves with that at the moment and pick a period of 10.
With that example, the first frame after the target angle is changed from 0 to 180, the rolling average will calculate it to be as follows.
That is to say instead of it immediately snapping to 180 degrees, the first frame after its told to go to 180 degrees it rotates to 18 degrees. The next frame would look like this:
And continuing on.
To help illustrate this I've made a little XNA program. You can either download it and give it a try (no guarantees), or watch this video.
A rolling average is also known as a moving average along with a few other cute names. Wikipedia does a good job explaining it in that Wikipedia way. You know, the equation way with complicated, but accurate, descriptions. I say a rolling average is just a way to take the average of a select part of data set. For example, in the last 7 days, I've averaged 0.6 cans of Mt. Dew a day. If, tomorrow, I don't consume any Mt. Dew, my 7 day average will go down.
So how does this help in programming? For me, its usually a matter of convenience. You may have binary data and you want to smooth it out some for instance. To really smooth it out you may want to be aware of your time step, acceleration/deceleration, velocity, motion time, time into motion. Maybe even more. With a rolling average all you need is a target value.
Lets say you've got an arrow and you want to have it point somewhere. You don't want to have super control over the animation of the arrow like I mention above, you simply want to tell it to point up or point down. However, it would be nice if the arrow rotation had some motion.
Let's set up this example. There is an arrow pointing up, lets call that 0 degrees. Now at some moment you want to say point down, rotating 180 degrees. If all you do is say at one moment your 0 degrees, and the next moment your 180, there is no animation. Let's use rolling average to smooth it out. All we need to know is the target rotation angle, which in this example is either 0 or 180, and the current angle. We need to pick a period, which in the Mt. Dew example was 7 days. In a typical game, and in most cases I've designed, they end up depending on the frame rate, lets not concern ourselves with that at the moment and pick a period of 10.
rolling average rotation = ((current angle) * 9 + (target angle) * 1) / 10
With that example, the first frame after the target angle is changed from 0 to 180, the rolling average will calculate it to be as follows.
rolling average rotation = ((0 degrees) * 9 + (180 degrees) * 1) / 10
rolling average rotation = 18 degrees
That is to say instead of it immediately snapping to 180 degrees, the first frame after its told to go to 180 degrees it rotates to 18 degrees. The next frame would look like this:
rolling average rotation = ((18 degrees) * 9 + (180 degrees) * 1) / 10
rolling average rotation = 34.2
And continuing on.
To help illustrate this I've made a little XNA program. You can either download it and give it a try (no guarantees), or watch this video.
Wednesday, March 30, 2011
Zombie Game Prototype
I'm working with Robert Green at Battery Powered Games on another game, this time its a action game. About 4 months ago, Rob and I got together for a meeting to discuss our next efforts and discussed ways to learn from our mistakes on Deadly Chambers. We each came with five game ideas and pitched them to each other, back and forth. At the end we picked one idea and went with it. The idea we picked was mine and goes something like this:
Combine Flight Control with Tower Defense, best described with with humans and zombies. You control the humans and try to get them to a safe house, they may or may not have weapons. The zombies try to eat your humans. I'm not going to go into the details beyond that because, along with a designer we've hired, we working on many of the details to make sure the game is fun, engaging and rewarding.
Since the pitch, I've been thinking about the game play and I've come to many conclusions. This is a problem, since we have yet to see the game in prototype form. Rob (and me to some extent) has been busy on some other projects, one of which is Battery Tech, and another is an android game that will be hitting the market within the month (fingers crossed). (My friend Bill and I did the art for this soon to be released game FYI so look for future blog posts about it). Rob hasn't had the time to make a prototype as he's also executing some other business ventures and contracts.
As I said we hired a designer but he has become confused about the game which is primarily my fault. With so much time thinking about the game play its hard to keep an open mind, to be flexible. It's hard to explain things well and succinctly, at the same time to not seem contradictory to previous statements. We've gotten buried in communication issues and semantics. It has been interesting to see the designer's interpretations and opinions, and his designs given our flawed descriptions and requirements. Its also been problematic because we each have our ideas we're pretty adamant about, but no way to see them in action, get a feel for what works and further the discussion. I was contemplating making some level drawings and animating them to show how I expect game play to work, but then I decided I should just program a prototype.
This is what I love about programming. I started at about 9pm and fired up some XNA sample and just had at it. 6 hours later the clock reads 3am and I reluctantly call it quits. But at the end is a partial prototype allowing for human path drawing, basic zombie AI seeking/attack, a safe house, turning (human becomes zombie), weapon pickup, and human AI targeting.
In the above picture, the grey blue lines are paths for the humans. The purple diamonds are zombies. You can also see some of the humans are armed with little guns. The lines from humans to zombies show that the humans are targeting and within range of a zombie. I'll be adding some code to do shooting next as well as see what Rob and the designer say.
Needless to say, I'm excited to program again and wonder why I never really get into it when its so much fun. I'm excited to build up some momentum on this project as well. I'm art lead with two artists on my team, so I'm anxious to get them working.
Combine Flight Control with Tower Defense, best described with with humans and zombies. You control the humans and try to get them to a safe house, they may or may not have weapons. The zombies try to eat your humans. I'm not going to go into the details beyond that because, along with a designer we've hired, we working on many of the details to make sure the game is fun, engaging and rewarding.
Since the pitch, I've been thinking about the game play and I've come to many conclusions. This is a problem, since we have yet to see the game in prototype form. Rob (and me to some extent) has been busy on some other projects, one of which is Battery Tech, and another is an android game that will be hitting the market within the month (fingers crossed). (My friend Bill and I did the art for this soon to be released game FYI so look for future blog posts about it). Rob hasn't had the time to make a prototype as he's also executing some other business ventures and contracts.
As I said we hired a designer but he has become confused about the game which is primarily my fault. With so much time thinking about the game play its hard to keep an open mind, to be flexible. It's hard to explain things well and succinctly, at the same time to not seem contradictory to previous statements. We've gotten buried in communication issues and semantics. It has been interesting to see the designer's interpretations and opinions, and his designs given our flawed descriptions and requirements. Its also been problematic because we each have our ideas we're pretty adamant about, but no way to see them in action, get a feel for what works and further the discussion. I was contemplating making some level drawings and animating them to show how I expect game play to work, but then I decided I should just program a prototype.
This is what I love about programming. I started at about 9pm and fired up some XNA sample and just had at it. 6 hours later the clock reads 3am and I reluctantly call it quits. But at the end is a partial prototype allowing for human path drawing, basic zombie AI seeking/attack, a safe house, turning (human becomes zombie), weapon pickup, and human AI targeting.
Ryan's Zombie Prototype Version 1
In the above picture, the grey blue lines are paths for the humans. The purple diamonds are zombies. You can also see some of the humans are armed with little guns. The lines from humans to zombies show that the humans are targeting and within range of a zombie. I'll be adding some code to do shooting next as well as see what Rob and the designer say.
Needless to say, I'm excited to program again and wonder why I never really get into it when its so much fun. I'm excited to build up some momentum on this project as well. I'm art lead with two artists on my team, so I'm anxious to get them working.
Subscribe to:
Posts (Atom)












