The Jovian Incident: Post #3

I’ve finished setting up the controls system essentially. I pretty much copied from Tricorn, because it actually works with multiple pointers (touches on the screen) whereas Planes only deals with one. After some modifications, I’ve removed several redundancies and added adaptability. The controls allow for as many on screen touches as the device can handle (incidentally, my phone can handle 2, my tablet can handle at least 10). So far I’ve only added controls for steering and throttling, which will be the same control. Pressing anywhere on the left side of the screen will prompt the initial point of the control circle. Your bird will fly towards the direction your finger is from the initial press (similar to that of first person shooters). The distance your input is from the initial position will control your throttle, the further the more throttle. So you’ll be able to control the direction and speed with a single finger, allowing you to do whatever with the other finger.

Along with the controls I have finished rotation for the ship. Which by itself doesn’t sound difficult, but with the light glare effect being entirely separate from the ship, I had to deal with rotation and position offset conversions for the light glare positions. The glare, by the way, will not rotate as compared to the screen.

Next I’ll work on motion, which will include velocities for X and Y positions and also for rotation (turning speed).

The Jovian Incident: Post #2

I have now largely over complicated the mechanisms required to build a new ship.
Excerpt from coding, this is a temporary throw in for testing purposes but essentially shows what information is needed to show a 4 frame animated ship.


//Debug Ship
shipTypes.add(new Ship());

//First Frame Kea
shipTypes.get(0).Anim.add(new ShipAnim());
shipTypes.get(0).Anim.get(shipTypes.get(0).Anim.size()-1).bitmap=R.drawable.ship_kea;
shipTypes.get(0).Anim.get(shipTypes.get(0).Anim.size()-1).dimension=D80x80;
shipTypes.get(0).Anim.get(shipTypes.get(0).Anim.size()-1).frame=0;
shipTypes.get(0).Anim.get(shipTypes.get(0).Anim.size()-1).tSize=TFrames4;
shipTypes.get(0).Anim.get(shipTypes.get(0).Anim.size()-1).tSlot=0;

//Second Frame Kea
shipTypes.get(0).Anim.add(new ShipAnim());
shipTypes.get(0).Anim.get(shipTypes.get(0).Anim.size()-1).bitmap=R.drawable.ship_kea;
shipTypes.get(0).Anim.get(shipTypes.get(0).Anim.size()-1).dimension=D80x80;
shipTypes.get(0).Anim.get(shipTypes.get(0).Anim.size()-1).frame=30;
shipTypes.get(0).Anim.get(shipTypes.get(0).Anim.size()-1).tSize=TFrames4;
shipTypes.get(0).Anim.get(shipTypes.get(0).Anim.size()-1).tSlot=1;

//Third Frame Kea
shipTypes.get(0).Anim.add(new ShipAnim());
shipTypes.get(0).Anim.get(shipTypes.get(0).Anim.size()-1).bitmap=R.drawable.ship_kea;
shipTypes.get(0).Anim.get(shipTypes.get(0).Anim.size()-1).dimension=D80x80;
shipTypes.get(0).Anim.get(shipTypes.get(0).Anim.size()-1).frame=35;
shipTypes.get(0).Anim.get(shipTypes.get(0).Anim.size()-1).tSize=TFrames4;
shipTypes.get(0).Anim.get(shipTypes.get(0).Anim.size()-1).tSlot=2;

//Added effects for Third Frame Kea
shipTypes.get(0).Anim.get(shipTypes.get(0).Anim.size()-1).effects.add(new ShipEffect(-27f, -20f, R.drawable.glare, 0, TFrames1, D30x30, Color.argb(255, 255, 0, 0)));
shipTypes.get(0).Anim.get(shipTypes.get(0).Anim.size()-1).effects.add(new ShipEffect( 27f, -20f, R.drawable.glare, 0, TFrames1, D30x30, Color.argb(255, 255, 0, 0)));

//Forth Frame Kea
shipTypes.get(0).Anim.add(new ShipAnim());
shipTypes.get(0).Anim.get(shipTypes.get(0).Anim.size()-1).bitmap=R.drawable.ship_kea;
shipTypes.get(0).Anim.get(shipTypes.get(0).Anim.size()-1).dimension=D80x80;
shipTypes.get(0).Anim.get(shipTypes.get(0).Anim.size()-1).frame=40;
shipTypes.get(0).Anim.get(shipTypes.get(0).Anim.size()-1).tSize=TFrames4;
shipTypes.get(0).Anim.get(shipTypes.get(0).Anim.size()-1).tSlot=1;

//Final Frame Kea -- to allow Forth Frame to have adequate time
shipTypes.get(0).Anim.add(new ShipAnim());
shipTypes.get(0).Anim.get(shipTypes.get(0).Anim.size()-1).bitmap=R.drawable.ship_kea;
shipTypes.get(0).Anim.get(shipTypes.get(0).Anim.size()-1).dimension=D80x80;
shipTypes.get(0).Anim.get(shipTypes.get(0).Anim.size()-1).frame=45;
shipTypes.get(0).Anim.get(shipTypes.get(0).Anim.size()-1).tSize=TFrames4;
shipTypes.get(0).Anim.get(shipTypes.get(0).Anim.size()-1).tSlot=0;

Essentially what this is doing is defining all of the parameters of each animated frame of the ship. Leaving each frame independent from the others allows me to have drastic changes at any time. So if I wanted I could have one flap its wings, change colors, or oddly grow and shrink. This’ll definitely be useful in the future, I’m sure.

I feel that I’m done with that portion of the engine for now. Next I’m going to work on control and ‘Flyer’ independence from each other (the ships moving by themselves, animating individually, etc). I haven’t set my mind on a control theme quite yet. I’m not sure if I want to go with very light circles, or something more interesting like a literal control stick, or a thumb print maybe? Iunno, I’ll be working this weekend, so prolly Monday morning.

The Jovian Incident: Introduction

I’ve talked about making this game for a long while and have finally decided to start working on the inner parts of the game engine, largely taking from Planes’ design with quite a few thought out modifications.

The game will be played horizontally and will be controlled with a single digital circle on the left and buttons on the right. The circle will control throttle (distance from center) and direction to fly towards. I still need to think out the button layout, as several buttons will be needed including previous and next target, fire, launch drone, navigation, mail, and night vision. I suppose I could put some of those in menus, but I had an idea for something that I call “Sticky Buttons.” Essentially what you do is hold your finger on a button, which will then display other buttons for you to slide your finger to. Example, ‘Target’ will tree out to ‘Previous’, ‘Next’, and ‘Unlock’, and all you have to do is slide your finger to the option you want then let go. This will allow me to add a dozen or more buttons to the screen without taking up tremendous amount of important canvas.

The art style will be cell shaded like Planes but will feature straight lines and symmetry with a few artistic effects like static glass shimmer.

This ship is called the ‘Kea’. All ships will be named after birds, a bit of a jab at HardWar’s ‘Moths’ all being named after species of moth. After some thought however, I think the light glare will be an after effect so that the stay static to the screen despite rotation of the ship.

As far as development goes, I have already gotten the game to render images with a thread.

More Artwork

I decided to think about Level Two, which I want to be placed inside of a ‘Jungle Base’ of sorts. I was thinking of adding in a new badguy, more specifically a turret. But then my creativity got to me and I decided to make them “Wheeless Tanks” that can only shoot in one direction. Here are the blue prints of said machine.

Also, as you can see in the background of the blueprint, I’ve created a concept logo for the evil corporation. The current name I’m going with is “HindenCorp”. The logo itself is the front of a blimp with “HC” written on the front of it.

Level Selector

I’ve settled for simplicity for time’s sake. The selector will display 6 levels, a next/previous page button, and a quit to menu button. I’m going to draw each button to be unique to that level’s description. Here’s a peek at Level One’s button.

The next update will have a completed Level Selector menu, 6 levels, and some added bad guys and background tiles.

What’s Left

After last week’s update, I’ve been trying to determine exactly what I should work on next. As it sits, Planes is short a weapon leveling system, a pre-mission store, and a level selector menu of some sort.

While on the subject of the level selector, I’m not entirely sure I want to do something like that. It would make the game feel too much like a super typical phone game. Then again, I do want the player to be able to go back get 100% completion or get all the collectibles or whatever. How will it look? Will it just be a vertical list? I know that if I implement any kind of list, I’ll have to compensate for smaller screens or larger lists with some of screen scroller, which I have had little success with doing. Maybe pages, but that feels really lazy.

For the store, I’ve had the idea of something like a hangar with the horribly drawn airplane center stage and stick figures walking around in the background. Then you tap on the part of the plane you want to upgrade. The weapons will be different, maybe the weapon selector style. I eventually want to allow for multiple planes to be purchased, which will look like multiple hangars, but that’s for much later.

The weapon leveling will have two requirements. First you’ll have to level your weapon by using it on bad guys, you’ll get XP for the damage dealt. Second you’ll have to make the purchase of the next level of the weapon, rendering previous levels non-selectable.

After those systems are complete, the only things remaining will be content, typical bad guys, atypical bad guys, weapons, levels, and hopefully tween-mission cut scenes. Which, now looking at it, actually seems like a pretty daunting task.

After having written all this, I think I’ll work on the mission selector first, as it’s kind of necessary for the other systems.

Had an idea, gonna have the different menus have different backgrounds tiles. I guess I’ll have to make some stuff up.

Google’s Awesome

I was looking at some stuff on my developer account on Google Play and eventually got linked to licensing. Licensing, as when referred to by Google Play, is used to allow or disallow access to an app usually based on time. For instance I might require the app to download a new license every few days or every few runs of the application. What this is usually for is to prevent piracy by requiring online interaction with Google’s server and then the app comparing keys. Frankly I like the idea, but I am annoyed of how I’ve seen developers utilize it. Games shouldn’t be required to obtain a new license every single time it starts. That’s just regular DRM, preventing players from playing offline. Although the more I think about it, the more I actually don’t like licensing. Sure I do want to protect my games from piracy, but at no cost to my players. I’d hate to be about to hop aboard a plane just to find out that my license hadn’t been renewed quite yet.

I think that if I can’t prevent piracy on the first run of the game then I shouldn’t try after that. I want my game to check once and only once if the game is legit. I want there to be a way for me to able to check if the .apk file has been downloaded within the last 30 minutes to 1 hour. This makes sense because there’s no point in holding on to the .apk any longer than that other than to install it. This would mean that if I copied it to another device at a later date then that file would essentially be garbage.

Maybe I won’t try at all. I’ll publicly admit that I haven’t paid for every single game I’ve played. I know that not everyone can pay for entertainment (even though Planes+ will be no more than a dollar, you cheap ass).

Anti-piracy will jus be future-me’s concern. Currently I don’t give a shit.

Planes Version 0.8 Release

I finally got the next update out, it’s only been a few months!!

Version 0.8
-Boss system designed and implemented:
|Bosses will have ‘children’ that need to be destroyed first
|Bosses have significantly more health and stronger weapons
-Level1 changed to implement new Boss “Double Blimp”, level still repeats (on purpose)
-Increased App’s Content Rating to “Medium Maturity” for planned content (tobacco usage probably)

***
Sorry it’s been so long since I’ve released an update, but I do plan on getting more work done from here on
***

Newest version added to Google Play (Version 0.8)

Boss Fight!

So I’m currently contemplating how bosses are going to work in the game. I’m thinking of having single entities be attached to a parent entity. Something like turrets attached to a mother ship or something related to that. I suppose to have that, I would need 4 extra variables for each entity, parent entity, offset x, offset y, and isBoss. The isBoss variable will pretty much mean that no damage can be done to the boss (completely untouchable, but will do damage to the player) until all child entities are dead/removed. This will make for a very retro style boss, very typical for this style of game. I suppose I’ll add in special death animations for isBoss entities as well.

First Boss Concept Drawing

A weapon of some sort will be placed on the center platform.
Approximately 4 times larger than “plane1” (the player)