Tuesday, January 3, 2012

My Robot is Hiatus

0 comments
Just wanted to make it official that My Robot is Fight is on indefinite hiatus while I finish up Trials of Droids.

Wednesday, November 30, 2011

0 comments

Thursday, November 10, 2011

Trials of Droids

3 comments
Click the Trials of Droids tab up above! I double dog dare you!

Monday, November 7, 2011

What I've Been Doing

0 comments
Hey all. Here's the first screenshot from a new game I've been working on called Trials of Droids. It was designed by my could friend Eddie Rogers, and I've been programming on it for the last two weeks or so while he does a lot of the art. It's a platformer / puzzle-game where you switch between two droids trying to escape imprisonment on an alien space craft / planet. It's getting really closed to being "finished," at least in as much as all the parts function. It needs more art an levels, but expect a demo soon!




So... as far as My Robot is Fight is concerned... It's on the back burner for now while I work on Droids. In fact, when I resume work on My Robot is Fight, I may completely overhaul the level generation code and the way much of the interface works, using a lot of the knowledge I'm gain programming Droids.

Things I hope to accomplish:
-Use tilemaps to make the randomly generated levels a lot more RANDOM. That is to say, don't just shuffle the order of several different rooms around within 1 of 6 possible layouts, but actually generate a lot more random content within the rooms. Currently, the levels in My Robot are constructed from large pieces of oddly shaped art which has proved restrictive for a while. Using tile-maps should open things up a lot. Also, I've developed a way of importing bitmaps in as tilemaps for Droids, that should speed up the process of room design and workout a lot better than scripting every room.

-Load everything at once. This may not be possible, but I'm hoping to optimize my collision code enough to load the large zones like Level 1 all at once, so that monsters won't reappear every time you enter a room. I have mixed feelings about that mechanic of the game (monsters reappearing), but among the problems it causes are some big ones, like having the lil' cretins come back after you enter shops or you inventory and making grinding extraordinarily easy and also BORING. I'm still not 100 percent on this idea, but I'll probably try it.

-Separate weapons from the skill tree, and make skills more interesting. Having a rocket launcher isn't much of a skill.... being able to rapid fire your rocket launcher or shoot multiple rockets might be. There's a lot of redundancy in the current skill tree. The Gatling gun is just a shittier, more energy-expensive machine gun and the freeze ray / freeze-thrower is pointless when there are equippables that make your flamethrower or blaster do the same thing. I'm thinking of having weapon categories you can equip energy-types to (acid-thrower, gatling fire-bolts), or maybe just having 4-5 energy type skills you can select that change the function of every weapon.

Also, I'd like to add more interesting non weapon skills like a gun the makes blocks you can step on, a power dash, a mario type stomp attack, space jumping, a portal gun, all sorts of crazy things. More stuff for the option bot.

I'm also considering that in addition to a level requirement, certain quests will unlock skills. Like a quest to rescue Fight Ship 0x....Whatever his name is for robot purgatory will unlock the turn-into-a-jet skill.

I have a lot of big ideas for MRIF, but they're going to take a long time to implement, and I'd rather actually finish a game first before practically restarting a game that's been taking me years.

Look forward to Droids and more updates. And look forward to making custom maps for it too!

Tuesday, October 4, 2011

Real Life Intruders

0 comments
Real life is currently interfering with My Robot is Fight production. Hopefully I'll have a big update with new areas in November, but don't expect much before then. :(

Tuesday, September 27, 2011

Game Pad Support

0 comments
I've done quite a bit of research and I can't find any way to directly include Game Pad support in an Adobe Flash app. However, there is an easy work around if you care to use it. There are several programs available that will convert game-pad input to keyboard input. Here's what I would recommend:

For PC:
JoyToKey

For Mac:
ControllerMate

For Linux:
QJoyPad

Friday, September 23, 2011

Minor update. Who plays this game?

1 comments
Hey all. I uploaded a new version. If you're one of the folks who have figured out how to activate debug mode, then you might find several significant changes in the "in-progress" areas. Otherwise, most of the changes are to back-end stuff in preparation for the next version. There's a few minor graphic changes, some tweaks in the level generation code and some more item preffix/suffix.

Please play the shit out of this and report bugs! Pretty please? With robo-sugar on top?

Also, please just report... anything. I get quite a few hits a day and would like to know who's been playing, what they think, what they'd like to see changed / added. There are also a few things I might need help with down the line so....

Don't be afraid to speak up.

Monday, September 12, 2011

Update (Sooner or Later)

0 comments
Just to let folks know what I've been working on...

I've been designing some functions to draw level art for future zones (The Cave and The Town mostly). Where-as Level 1 is composed of larger pieces of odd-sized art, future levels will be more tile based, with smaller more versatile pieces of art.

That's all to say I've been working on the Cave Zone and The Town. After you defeat the eyeball boss you'll find yourself in this underground shelter, which will serve as a town with shops and kind of a central hub for the rest of the zones in the game. Zones are going to be divided into 3-subzones, each about twice the size of Level 1. The first of these zones you'll usually explore is going to be The Cave Zone, which will play similar to a lot of the areas in Super Metroid. Lots of hidden rooms, large caverns to explore, simple monsters that follow patterns. I've been working on something of these monsters as well.

Anyways, the next update is a ways off. But it will be a big one, hopefully with whole new areas to explore.

Friday, September 9, 2011

Working on Items...

0 comments
I'm knee deep in items right now, raiding the thesaurus for Diablo style prefix's and suffix's

Here's all the weapon prefix's thus far:
public function genWeaponPrefix(roll:Number, level:Number):String
        {
            if (roll > 0.90)
            {
                stats.levelReq += 1;
                stats.skillBaseDamage = 1;
                stats.skillRateOfFire = 1;
                stats.red += 1;
                stats.green += 1;
                stats.blue += 1;
                stats.value += 300;
                return "Blaster's ";
            }
            else if (roll > 0.8)
            {
                stats.levelReq += 1;
                stats.skillBaseDamage = 1;
                stats.red += 0.5;
                stats.green += 0.5;
                stats.blue += 0.5;
                stats.value += 400;
                return "Marksman's ";
            }
            //RATE OF FIRE
            else if (roll > 0.78 && level >= 20)
            {
                stats.levelReq += 5;
                stats.skillRateOfFire = 5;
                stats.red += 0.6;
                stats.green += 0.6;
                stats.blue += 0.6;
                stats.value += 1000;
                return "Hair-trigger ";
            }
            else if (roll > 0.76 && level >= 15)
            {
                stats.levelReq += 4;
                stats.skillRateOfFire = 4;
                stats.red += 0.7;
                stats.green += 0.7;
                stats.blue += 0.7;
                stats.value += 10000;
                return "Breakneck ";
            }
            else if (roll > 0.74 && level >= 10)
            {
                stats.levelReq += 3;
                stats.skillRateOfFire = 3;
                stats.red += 0.7;
                stats.green += 0.7;
                stats.blue += 0.7;
                stats.value += 5000;
                return "Automatic ";
            }
            else if (roll > 0.72 && level >= 5)
            {
                stats.levelReq += 2;
                stats.skillRateOfFire = 2;
                stats.red += 0.6;
                stats.green += 0.6;
                stats.blue += 0.6;
                stats.value += 1000;
                return "Nimble ";
            }
            else if (roll > 0.7)
            {
                stats.levelReq += 1;
                stats.skillRateOfFire = 1;
                stats.red += 0.5;
                stats.green += 0.5;
                stats.blue += 0.5;
                stats.value += 400;
                return "Quick ";
            }
            //DAMAGE
            else if (roll > 0.68 && level >= 15)
            {
                stats.levelReq += 4;
                stats.attack.minDamage += 5;
                stats.attack.maxDamage += 15;
                stats.red += 1;
                stats.green -= 0.4;
                stats.blue -= 0.4;
                stats.value += 5000;
                return "Vorpal ";
            }
            else if (roll > 0.65 && level >= 12)
            {
                stats.levelReq += 3;
                stats.attack.minDamage += 2;
                stats.attack.maxDamage += 12;
                stats.red += 0.8;
                stats.green -= 0.2;
                stats.blue -= 0.2;
                stats.value += 1000;
                return "Leathal ";
            }
            else if (roll > 0.62 && level >= 9)
            {
                stats.levelReq += 3;
                stats.attack.minDamage += 4;
                stats.attack.maxDamage += 9;
                stats.red += 0.7;
                stats.value += 1000;
                return "Deadly ";
            }
            else if (roll > 0.58 && level >= 6)
            {
                stats.levelReq += 2;
                stats.attack.minDamage += 1;
                stats.attack.maxDamage += 8;
                stats.red += 0.5;
                stats.value += 250;
                return "Savage ";
            }
            else if (roll > 0.54 && level >= 4)
            {
                stats.levelReq += 2;
                stats.attack.minDamage += 2;
                stats.attack.maxDamage += 5;
                stats.red += 0.5;
                stats.value += 250;
                return "Brutal ";
            }
            else if (roll > 0.5)
            {
                stats.levelReq += 1;
                stats.attack.minDamage += 1;
                stats.attack.maxDamage += 3;
                stats.red += 0.3;
                stats.value += 100;
                return "Strong ";
            }
            //COLD
            else if (roll > 0.49 && level >= 20)
            {
                stats.levelReq += 5;
                stats.attack.minCold += 10;
                stats.attack.maxCold += 20;
                stats.red -= 0.5;
                stats.green -= 0.5;
                stats.blue += 1;
                stats.value += 10000;
                return "Hyperborean ";
            }
            else if (roll > 0.47 && level >= 16)
            {
                stats.levelReq += 4;
                stats.attack.minCold += 4;
                stats.attack.maxCold += 13;
                stats.red -= 0.2;
                stats.green -= 0.2;
                stats.blue += 0.8;
                stats.value += 5000;
                return "Glacial ";
            }
            else if (roll > 0.46 && level >= 12)
            {
                stats.levelReq += 3;
                stats.attack.minCold += 2;
                stats.attack.maxCold += 12;
                stats.blue += 0.7;
                stats.value += 1000;
                return "Arctic ";
            }
            else if (roll > 0.45 && level >= 9)
            {
                stats.levelReq += 3;
                stats.attack.minCold += 3;
                stats.attack.maxCold += 8;
                stats.blue += 0.65;
                stats.value += 1000;
                return "Frigid ";
            }
            else if (roll > 0.44 && level >= 6)
            {
                stats.levelReq += 2;
                stats.attack.minDamage += 1;
                stats.attack.maxDamage += 6;
                stats.blue += 0.5;
                stats.value += 500;
                return "Cold ";
            }
            else if (roll > 0.44 && level >= 5)
            {
                stats.levelReq += 2;
                stats.attack.minCold += 2;
                stats.attack.maxCold += 4;
                stats.blue += 0.45;
                stats.value += 500;
                return     "Icey ";
            }
            else if (roll > 0.42 && level >= 4)
            {
                stats.levelReq += 2;
                stats.attack.minCold += 1;
                stats.attack.maxCold += 3;
                stats.blue += 0.3;
                stats.value += 150;
                return "Chilly ";
            }
            else if (roll > 0.4)
            {
                stats.levelReq += 1;
                stats.attack.minCold += 1;
                stats.attack.maxCold += 1;
                stats.blue += 0.3;
                stats.value += 50;
                return "Nippy ";
            }
            //FIRE
            else if (roll > 0.39 && level >= 22)
            {
                stats.levelReq += 5;
                stats.attack.minFire += 15;
                stats.attack.maxFire += 30;
                stats.red += 1;
                stats.green += 0.6;
                stats.blue -= 0.6;
                stats.value += 15000;
                return "Hellfire ";
            }
            else if (roll > 0.38 && level >= 18)
            {
                stats.levelReq += 4;
                stats.attack.minFire += 8;
                stats.attack.maxFire += 20;
                stats.red += 0.9;
                stats.green += 0.5;
                stats.blue -= 0.4;
                stats.value += 8000;
                return "Vulcan ";
            }
            else if (roll > 0.37 && level >= 15)
            {
                stats.levelReq += 3;
                stats.attack.minFire += 5;
                stats.attack.maxFire += 15;
                stats.red += 0.8;
                stats.green += 0.4;
                stats.blue -= 0.3;
                stats.value += 2500;
                return "Blazing ";
            }
            else if (roll > 0.36 && level >= 10)
            {
                stats.levelReq += 3;
                stats.attack.minFire += 1;
                stats.attack.maxFire += 12;
                stats.red += 0.6;
                stats.green += 0.3;
                stats.blue -= 0.3;
                stats.value += 800;
                return "Flaming ";
            }
            else if (roll > 0.35 && level >= 9)
            {
                stats.levelReq += 2;
                stats.attack.minFire += 3;
                stats.attack.maxFire += 8;
                stats.red += 0.5;
                stats.green += 0.25;
                stats.blue -= 0.25
                stats.value += 800;
                return "Scalding ";
            }
            else if (roll > 0.34 && level >= 6)
            {
                stats.levelReq += 2;
                stats.attack.minFire += 1;
                stats.attack.maxFire += 6;
                stats.red += 0.5;
                stats.green += 0.25;
                stats.value += 400;
                return "Firey ";
            }
            else if (roll > 0.32)
            {
                stats.levelReq += 1;
                stats.attack.minFire += 1;
                stats.attack.maxFire += 3;
                stats.red += 0.4;
                stats.green += 0.2;
                stats.value += 100;
                return "Hot ";
            }
            else if (roll > 0.3)
            {
                stats.levelReq += 1;
                stats.attack.minFire += 1;
                stats.attack.maxFire += 1;
                stats.red += 0.3;
                stats.green += 0.1;
                stats.value += 50;
                return "Toasty ";
            }
            //ELECTRIC
            else if (roll > 0.29 && level >= 22)
            {
                stats.levelReq += 5;
                stats.attack.minElectric += 15;
                stats.attack.maxElectric += 30;
                stats.red += 1;
                stats.green += 1;
                stats.blue -= 0.6;
                stats.value += 15000;
                return "Voltaic ";
            }
            else if (roll > 0.28 && level >= 18)
            {
                stats.levelReq += 4;
                stats.attack.minElectric += 8;
                stats.attack.maxElectric += 20;
                stats.red += 0.9;
                stats.green += 0.9;
                stats.blue -= 0.4;
                stats.value += 8000;
                return "Scintillating ";
            }
            else if (roll > 0.27 && level >= 15)
            {
                stats.levelReq += 3;
                stats.attack.minElectric += 5;
                stats.attack.maxElectric += 15;
                stats.red += 0.8;
                stats.green += 0.8;
                stats.blue -= 0.3;
                stats.value += 2500;
                return "Lightning ";
            }
            else if (roll > 0.26 && level >= 10)
            {
                stats.levelReq += 3;
                stats.attack.minElectric += 1;
                stats.attack.maxElectric += 12;
                stats.red += 0.6;
                stats.green += 0.6;
                stats.blue -= 0.3;
                stats.value += 800;
                return "Brilliant ";
            }
            else if (roll > 0.25 && level >= 9)
            {
                stats.levelReq += 2;
                stats.attack.minElectric += 3;
                stats.attack.maxElectric += 8;
                stats.red += 0.5;
                stats.green += 0.5;
                stats.blue -= 0.25
                stats.value += 800;
                return "Electric ";
            }
            else if (roll > 0.24 && level >= 6)
            {
                stats.levelReq += 2;
                stats.attack.minElectric += 1;
                stats.attack.maxElectric += 6;
                stats.red += 0.5;
                stats.green += 0.5;
                stats.value += 400;
                return "Spark ";
            }
            else if (roll > 0.22)
            {
                stats.levelReq += 1;
                stats.attack.minElectric += 1;
                stats.attack.maxElectric += 3;
                stats.red += 0.4;
                stats.green += 0.2;
                stats.value += 100;
                return "Shocking ";
            }
            else if (roll > 0.2)
            {
                stats.levelReq += 1;
                stats.attack.minElectric += 1;
                stats.attack.maxElectric += 1;
                stats.red += 0.3;
                stats.green += 0.3;
                stats.value += 100;
                return "Static ";
            }
            //KNOCKBACK
            else if (roll > 0.1)
            {
                stats.levelReq += 1;
                stats.attack.knockback = 100;
                stats.green += 0.3;
                stats.blue += 0.3;
                stats.value += 100;
                return "Gust ";
            }
            //OPTION BOT
            else if (roll > 0)
            {
                stats.levelReq += 2;
                stats.skillOptionBot = 1;
                stats.red += 0.3;
                stats.blue += 0.3;
                stats.value += 400;
                return "Helpful ";
            }
            return "Glitched ";
        }

Tuesday, September 6, 2011

Version 0.43

0 comments
Hey all, fixed the inventory bugs. Turned out to be a nasty error that was causing event listeners and arrays and other objects to stick around after exiting the play state. That's what I get for maintaining my own piece-meal, extensively modified version of Flixel since version 1.2.

Tonight or tomorrow I'm going to go over the newest version of Flixel and see if I can incorporate its better features, and makes some other tweaks and changes I've been thinking about to all the graphics buffering stuff.

Also, this version has visible armor, boots, and sprites. No new gfx yet, but color-shifting works.

I plan on working more with items in the next update and have them generate more appropriately to the area they're in. I'm tired of Lvl Req 5 Items dropping at Level 1.

Other plans:
-Make spikes deal damage instead of auto-kill
-Figure out ongoing damage
-Add lava that auto-kills.
-Make a pop-up frame for item descriptions instead of using the narrow hint-bar.
-Figure out how to show quest goals on the automap.
-Add a quest log.

Monday, September 5, 2011

Inventory Bug

0 comments
I just caught some bugs with the new inventory system while working on visible armor. I've fixed most of them, except one involving saved games. I'll upload the fixed version tonight after work.


Update: This bug is trickier to fix than I thought. Maybe a new version tomorrow

Sunday, September 4, 2011

Comments

0 comments
I just enabled comments for anonymous users, so folks that don't want to register for blogger can have input as well. Let me know if you find any bugs or have any ideas as to how I might better game-play.

Wednesday, August 31, 2011

Version 0.42

0 comments
Just updated again with the following changes based on input from the comments on indiegames.com:

-Overhauled the inventory so that all your items appear withing two screens so that you don't have to jump all over and wander around just to equip stuff.
-You no longer have to be standing over an empty inventory slot to drop an item, you can simply click the stash key, and it will dump it in the first empty slot.
-You can now minimize your item belts.
-Changed the shitty math behind the "defense" stat so that armor won't make you immune to certain monster attacks.

Soon I'll add weighted difficult to the level generation code, so that certain rooms won't generate till later on.


Tuesday, August 30, 2011

Blurb on IndieGames.com

0 comments
Michael Rose at IndieGames.com wrote a little blurb about My Robot, with some nice things to say. You can check it out here: http://indiegames.com/index.html

In response to the comments on that blurb I've uploaded a new version with less ice-skating-rink-ish physics.

Friday, August 19, 2011

0 comments

MY ROBOT IS A JET WITH A FLAME THROWER

Tuesday, August 16, 2011

Work, work, work.

0 comments
So I've put the level editor on the back burner. I started exploring MFC for C++ and trying to understand the windows API and it became clear it would take far longer than I expected to accomplish what I wanted. That time could be better spent continuing to develop the game as I have been.

So in the past two days I've been sketching out design for the main town in the game. You'll enter this area after you defeat the giant Jell-Eye Fish Beast at the end of Level 1. The town is going to have at least three shops: one for consumables, one for weapons, and one for armor. I know none of this appears on my to-do list, but I'm just getting the urge to expand the actual territory one can explore in the game. I'm tired of Level 1.

I've also been working on including more NPCs. At the beginning of Level 1, your ship talks to you now, explaining how and why you need to find 3 switches.

I've got a rudimentary jet-mode working to, where My Robot can turn into a jet and fly around.

More to come...

Update soon? I hope...

Friday, August 5, 2011

New Project!

0 comments
I'm going to resume work on My Robot is Fight, but don't expect much more than slight updates for a while. I'm going to design a level editor for a procedurally/randomly generate rogue-like. Check back later for more info on what that really means.

Monday, July 11, 2011

I promise this game will not become abandonedware.

0 comments
Sorry for the lack of updates lately. I've just been getting my ass kicked by the real world and haven't been able to focus on programming. I can't promise an update soon, but I promise I'll resume work eventually.

Tuesday, June 7, 2011

Update! Version 0.38!

0 comments
I just added shops. One random spawns in every variation of Level 1. Look for them where you find dead ends.

I'm going to get armor working next I believe.

Test for BUGS! BUGSBUGSBUGS!

Added/Changed in 0.38
-Added a shop to level 1 that offers 3 items for sale. Full sprite set for this.
-Monsters now drop moneys in addition to items, health-ups and energy-ups.
-More tweaks to the inventory. Equipped items can now be stashed using the stash button. Looks like "^". Weapons auto equip to slot 1, boots to slot 4.

Followers