Archive for the 'PP:AFAA' Category
March 10th, 2008 by aeiowu
Mike and I have been chipping away at a little weekend side project of ours for a month or so. He’s got a prototype up and running, and while the swimming mechanic is similar to PP:AFAA, we’ve added some cool new stuff that I think will be pretty compelling gameplay wise. Basically it’s a very simple deathworm-like, where you command the likes of a studious Boto (amazon river dolphin) and fight the evil river-polluting humans on their way to refineries and such. With the aid of schools of flesh-starved pirahnas, you summon the power of the riverbed to take on impossible odds.

I’ve mainly been working on the logo, (this is actually a school project, so the logo was our first assignment) but have started in on the rough art style to help me finish the logo. It’s pretty close to done, hopefully we’ll have an alpha posted up here pretty soon.
September 7th, 2007 by torncanvas
Our apologies for the lack of posting over the last two weeks. Here’s a rundown of what we’ve been up to.
After working on the press kit a little, we did some more business stuff to make sure we’re going to be ok with Uncle Sam and protected from the “unknown unknowns,” as it is referred to in The Boondocks. Our lawyer Rush Nigut has helped out a lot with that. Thanks Rush.
Mike has been working on Professor Porpoise: Adjunct Faculty Advisor to the Apocalypse, mainly as a means to continue developing features for Melba Toast. He managed to get a simple scoring and health system in, in addition to spawning ships, one type of which shoots at you. He also implemented some awesome explosions that we’ve made in the past, which even shake the screen. So PP:AFAA is now made of action-packed awesomeness.

Check out PP:AFAA here (pardon the debug lines). We’ve decided to treat PP:AFAA as a side project that we’re going to pick at from time to time when we need a quick break. It will be developed more and more down the road. Hopefully we’ll get to see some of Ted’s awesome concepts in action.
An interesting side note about this early version: It’s not fully optimized for performance yet, being so early on in development, but, yesterday I found out that Adobe has released a new beta update of Flash Player 9. I was amazed at the performance increase it has with PP:AFAA. Previously, with a few explosions going off at once, my Macbook Pro 2 Ghz Core Duo would drop down to 10fps or so. With the new beta Flash Player, the game doesn’t get much below 24fps. I think game developers who are working on Flash games will really be excited when this new version gets released officially. I know I am.
Ted, Greg, and I have been spending much of the last couple weeks concepting, mostly for Dinowaurs. One of these days we’ll compile stuff together and maybe post it up for all to see. Greg is now officially in Rome, too. It was sad to see him go, but sometimes you just have to let go. He’ll be coming back to the nest soon enough. Be careful out there, Greg!
I’ve also been learning ActionScript 3.0 from a couple books, including an awesome one by Colin Moock, Essential ActionScript 3.0. His ability to explain the meaning behind things is great. Anyone who has a beginner-level knowledge of programming concepts or higher and is interested in learning about ActionScript 3.0 will really enjoy the book.
July 25th, 2007 by fucrate
Finally squared away the actual movement for the Prof himself… This was actually really agonizing and horrible more due to my lack of experience working with the trig functions of Flash than anything else, but damn this took a long time. I tried about 4 or 5 different methods for controlling the Prof both in and out of the water and I finally settled on a hybrid of vectors and degree modification. In actuality, the player is only in control of the directional vectors which move the Prof around in the gameworld, this allows for the easiest level of switching between aerial and aquatic maneuvering, though moving through the air and moving through the water are very different.
Essentially there are two modes of interaction, one for in the air and one for in the water. When the Prof is in the air, the player can “pull up” or “push down” similarly to a flight simulator. Pulling up will create a certain amount of lift, which is always less than the effect of gravity so the best you can do is glide a bit. Pushing down will increase the downward force in addition to gravity and lets you plummet to the ground more quickly. This is the simpler of the two control schemes, as you just have one acceleration vector which has both directional and magnitude. The rotation of the sprite is calculated by a simple trig function.
When the Prof is in the water, however, it gets horribly complex. First off instead of one vector there is now a scalar velocity value and a unit vector which is the Profs orientation. The rotation of the sprite is calculated with trig using the directional vector, just like above. This is the crux of what I was going for, so that the vectors controlling acceleration would be in control of the rotation of the sprite and not vice versa.
I ran into a problem, however, as previously in order to rotate the Prof in the water I could simply rotate the sprite and re-calculate the directional vector. Now that I wanted the vector to determine the rotation, I had to figure out how to change the vector to simulate an rotational object and maintain it as a unit vector. I’ve never used this kind of math before so I was fairly out of my element and I wrote about 3 different methods to attempt to change the rotation smoothly, all of which created a total clusterfuck of random rotations and what have you. I never really figured out what was wrong with those algorithms, even though I spent a few hours trying to fix them. I eventually decided to use pure math to control the vectors with a much more elegant solution.
Here it’s gonna get triggy and wavey, so bear with me. I created a new value, a 0 - 360 control value which represented the current rotation of the Prof while in the water. From this the directional vector could be calculated and from them the actual sprite could be rotated. Why this is better than simply using the rotation of the sprite as my guide I really don’t know anymore, though they seem to be essentially the same thing.
Anyway… The Y component of the vector, which is vertical movement, is determined by a sine wave with no offset. Essentially I use my new rotation control value and feed it into a sine wave every frame, and the control value determines where along a single period waveform the Y component of the vector is. Essentially this means a control value of 90 will make the Y a maximum, a value of 270 will make the Y a maximum negative value and values of 0 and 180 make it zero. The X component is determined the same way, using the same control value, except its waveform is offset by 90, so where Y is zero, X is a maximum (either positive or negative), and where Y is a maximum, X is zero. This is all pretty basic trig, but it took me a while to get up the nerve to trust myself to use it and figure it all out.
The final step was to make the transition from air to water smooth… which was more frustration, but I got it.
This was a pain in the ass, but now it’s pretty much what it needs to be. Now it’s pretty much all about tweaking for proper results.
ALSO, if you play around with the jumping out of the water, you can see that when the framerate is really low you can jump much higher than when it is high. This is ’cause I haven’t decoupled my physics from my framerate… I never had the problem well illustrated to me until this, so It’s neat to see the problem in action.
July 23rd, 2007 by fucrate

So, I spent some time getting back to PP:AFAA today and worked out some hacky solutions to the floaters. Getting buoyancy to look good was actually fairly challenging for my tiny brain, however I created a fairly convoluted algorithm which should supply all the requirements for the prof. This got me thinking hard about the purpose (porpoise? haha!) of Melba Toast and what exactly I am trying to accomplish with the engine. The original intention of the engine was to create a fast, reusable codebase which I could go back to for multiple games and maybe share with other developers (though i’d probably have to start commenting…) who are trying to accomplish similar goals. This is especially important for Intuition as our goal is to create multiple games on a shorter time frame in order to iterate on lots of cool ideas, find a broad market and have fun.
The problem is that engine development is not quick, it takes a lot of work and research to find optimal algorithms for every facet of functionality, and while I can work with the unfinished engine to create quick games like PP:AFAA, I have to fill in the missing functionality with hacks which don’t take as long to research and work fine enough in the mean time. So this gets to my point, which is I am struggling with deciding whether to take a longer time to write solid code now and take a lot longer on development for negligible short term benefits (i.e. PP:AFAA don’t really NEED collision based on separation of axis theorem or a spring system) or do I just hack it up and get it out the door? I need to learn how to do it the hard way, but I’m also a lazy american who wants it and wants it now.
The obvious third option is to use an open source physics library like APE or Motor (though i’m not sure Motor is going to be freely available) though the obvious down side of third party physics solutions is that they are not tailor made to my specific problems and I don’t know their interfaces…
For now I’m hacking it, and if I need to I’ll fix up the code later. That’s generally the accepted choice of game development, from what I understand, but as a programmer I still hate writing code I know is bad and needs to be replaced.
July 15th, 2007 by aeiowu
Recently we nicknamed Prof. Porpoise, “The Professor” due to his extreme agility on the court as well as his radical dissertation on The Crossover: An Application of Metafluid Dynamics and Quantum Mechanics Subsystems to Underwater Basketballs. The Professor isn’t all sneakers and snow globes. When he’s not drainin’ half-court PS-triples he’s sinking sea-faring vessels in the name of the Almighty’s Reckoning.

So I drew a few of those ships that he’ll be snacking on. I’m going to illustrate them fairly soon based on these drawings. Right now we’re just gathering ideas on the different types of boats and which would be funnier and more effective. For now this is a pretty good smattering of boats, ranging from early level rafts, to millionaire customized yachts. When I draw I use a ballpoint pen, preferably a Bic Cristal but normally it’s just whatever is lying around. If enough people want tips, I’ll post something about the technique in greater detail later on.
July 14th, 2007 by torncanvas
The official work has begun on PP: AFAA! This project is so important to Intuition, that we’ve decided to use our secret weapon, a creative think-tank known as Team Yesss (that’s yes with three s’s). Team Yesss was able to choose a preliminary color scheme, get the professor made based on Ted’s design, and get him into Melba Toast swimming around. Great work guys! Some excellent concept art has been sketched up for the boats, too. That should be posted soon. [Update: Greg has a post with the concept art] The next steps are putting in gravity, damping for swimming, buoyancy (a first for a Flash game as far as we can tell), and boats and humans for content. Intuition is confident that Team Yesss can pull this off with no problem. Here’s a screenshot of Professor Porpoise in action, enjoying a swim before he partakes in his duties of bringing on the apocalypse.

July 13th, 2007 by fucrate
We’ve been working full steam on PP:AFAA tonight, and I’ve finally gotten back on track with Melba Toast and breaking out teh codez. I actually started out on prototyping water yesterday and thought I’d have an easy time of getting some wave action going… Boy was I wrong.

Actually in theory, it would have been pretty simple to just throw a line on the screen and use a sine wave to do some nice wave effects and the just move on. However, I have decided to use Melba Toast in the most responsible manner possible and that means avoiding shitty shortcuts and hacks. I determined that I wanted my water to be a tile, which means it has to be subjected to all the culling algorithms I wrote for my MelbaTiles. This set me right in the face of one of the two problems my tile engine currently has, the other of which is I have no faculty for actors which are able to move across the tile sectors (see Tile engine tutorial to get an idea of how the tile system works), and I only register tiles with the sector that contains their registration point, i.e. the upper left corner. This second issue is a problem for any tile which overlaps two sectors or especially tiles which are larger than a sector. I decided that the water shouldn’t be split up into multiple objects, a decision I may change later for efficiency, which forced me to solve the problem of super sized tiles before I could even make my water show up on the screen.
So anyway, I came up with 14 different cases of tile orientation on a single sector and was about to write up a massive nested if() clusterfuck when I remembered the collision lessons the Metanet Software crew (makers of N, check it out) released. Using their “Maths”, I was able to reduce the statement to about 8 lines of code and was very pleased with myself.
Long story short, there is no longer a limit to the size of tiles Melba Toast can support, and we got neato water effects, though it’s not too dynamic at the moment. You can use the arrow keys to scroll around, but you can get lost quick.
Also, tilde brings down the console, though the only command right now is fps.
July 12th, 2007 by aeiowu
It has been over two months since we all decided to get together and start something up and we still haven’t worked on any actual games, until now. I don’t think any of us envisioned the process of actually starting taking so long, but it has, and it seems to be a necessary evil of looking for funding our development. While nothing has been approved for sponsorship, we have decided to just go ahead and make a game already, something simple, fun and humorous. The idea is to build our brand and portfolio while still searching for a place to lie our creative heads at night.
Enter… “Professor Porpoise: Adjunct Faculty Advisor to the Apocalypse”
He’s the smartest dolphin (Porpoise is just his Christian name) in all of the seas. Since retired from the rigorous research of university life, he now looks after a small school of gifted younglings who call him Papa ‘Poise. But he has a secret, as a babe he was branded as part of a holy order, and now he must take action in his role as one quarter of the Four Horsemen. The Professor suits up with super-cop spear helmets and magick horn blades, cutting class to take care of business, fire & brimstone style!
We’re currently using Mike’s Melba Toast engine to make a simple prototype that we will hopefully have within a week or two. The logo above is something I whipped up this evening, and while I’m not thrilled with it, I think it gets our concept across well enough. We’ll post more images, concept work, demos, and assets as they get pumped out, but for now I think we’re all pumped to make something fun.