"Warped Space" - A Hybrid Space Shooter (Entry for Unity Student Awards 2012)

Warped Space: A space shooter with a twist(literally)!

ATTENTION MODERATORS

As I am not one of the Unity Awards Finalists (not a huge surprise :P), please change the title of this thread to this: “Warped Space” - A Hybrid Space Shooter (WIP Thread)

Click here to play this super awesome game!!

This is what I’ve been working on for the last few months. I’m going to release it as an app on the apple/android app stores once I’m finished development, but for now, it’s just in a WebPlayer. :smile: Give it a try, and let me know what you think, so I can continue to improve it!

Now, let me describe how my game works:

Warped Space is similar to any other 2D space shooter, such as Galaga, or Space Invaders, in that the player and enemies can only move on a 2D plane. However, in Warped Space, this plane has been “Warped” into 3 dimensions, kind of like how a 2D texture is mapped onto the surface of a 3D object. This way, the player can circle all the way around the outside of a cylinder, or any other 3D object. This allows for levels of varying complexity, from a typical cylinder, to a sphere, to a circular object with hills and valleys(not sure how else to describe this object :P). Confusing? It’s a lot easier to understand when you’re playing it :slight_smile:

In addition to this revolutionary new system(lol), there is a player customization system, where players can choose their weapons, spaceship type, and colour/special ability. There are currently 45 different player setups that can be chosen.

RECENT UPDATE

NEW GAME CONCEPTS

-The “Star Map” (Level Selection Screen).

CHANGES TO GAMEPLAY

-Level is no longer “Survive until you are overwhelmed by enemy hordes” -type gameplay. Instead, you are given a time limit, and an amount of enemies to destroy. You must destroy at least the target number of enemies before the time runs out. At the same time, you must survive until the time runs out.

-Level is now considered a tutorial level. As such, only one type of enemy (one of the easy types) is present in this level.

-Enemy fire rate has been reduced by half. It is now possible to dodge in-between enemy fire bursts without getting hit, which was previously impossible.

-Many minor health, stats, and GUI tweaks.

NEW FEATURES

-A new level selection screen, known as the “Star Map”, is present. The Star Map allows you to choose which Warp Tunnel (level) you want to play. The longer the Warp Tunnel, the more time you have to complete it. Currently the Star Map is not very polished looking or pretty, but it works. NOTE** Clicking on the RED warp tunnel will load the (currently) only level in the game. CLICKING ON OTHER WARP TUNNELS WILL DO ABSOLUTELY NOTHING.

-An explosion sound now plays when an enemy has been destroyed.

-A win screen is has been added, and it appears if you manage to beat the level. If you do manage to beat it, let me know! It’s definitely not super easy :stuck_out_tongue:

-If you fail to destroy enough enemies by the end of the alloted time, a planet (the one you are travelling to on the Warp Tunnel) will appear in your path, and cause the failure of the level.

NEW VISUALS

-The Level has had a HUGE visual makeover. Instead of 4 enemy spawners, now there are only two. The Warp Tunnel (Cylinder) that you move around on now has a visual presence, to make it easier for the player to understand the movement scheme. Stationary, background planets have been removed, as the player is moving through space at a rapid rate. Other visual elements that accentuate the feeling of movement through space have also been added.

Here are some awesome screenshots:

Screenshots

Main Menu Screen(Animated with sound!)

NEW Gameplay

NEW Gameplay

NEW Failure Screen

NEW Win Screen

NEW Star Map

NEW 5 Seconds Before Failure

Some Enemy types and colours:

Some Player types and colours:

Questions? Comments? Critiques? Let me know what you all think!

Cool screens! I’m looking forward for the webplayer and then playing it, hope it works soon :slight_smile: And i hope you will win the student award! :wink:
And nice idea with the cylinder!

Looks interesting. It will be interesting to see how this game works.

Bump…Working on AI. Customization system is fully integrated with the rest of the game now, WebPlayer also working, should have some sort of playable demo sometime later today.

This looks pretty good!!! Looking forward to play demo on web! :slight_smile:

Finally finished the WebPlayer! It’s not perfect…I’ll be doing some more work on it after school today…but it works! I’m mainly looking for feedback on how the customization system flows, and how the actual gameplay feels. Please ignore any visual elements that suck(that stuff is coming next! :smile: ). Click here to play it!

Here’s a summary of the whole thing:

Summary

-Controls

Customization System Controls
-Left Arrow Key to select the next player configuration to the left;
-Right Arrow Key to select the next player configuration to the right;
-Up Arrow Key when you’re happy with your choice in body type, weapon type, or colour type, and are ready to advance to the next type of customization;
-Down Arrow Key to return to the previous type of customization;

Game Controls
-Left Arrow Key to move the player left around the cylinder-space;
-Right Arrow Key to move the player right around the cylinder-space;
-Space Bar to fire projectiles(depending on weapon type, you may have to press the button once each time to fire, or hold it down to fire)

-Main Menu
-Only “Start Game” is functional right now (except for “Homepage”, for some reason that leads to www.realestate.com, lol);
-GUI isn’t pretty yet, so don’t criticize it please :smile:;

-Customization System(The super awesome part)
-45 different possible combinations of body type, weapon type, and colour type
-Cool “Camera-look-at” interface;
-Integrates into Level One;
-Weapon scripts not all finished yet (so some weapons will function the same as others in the Level);
-When finished Customizing, the GUI popup for entering the level is off to the side, almost out of sight. If you’re happy with your selection, press the top button to enter Level One :slight_smile: ;

-Level One
-AI spawn in increased numbers over time
-Awesome camera view
-Full rotation around semi-invisible cylinder-space
-Once Player is destroyed, you are re-directed to the Customization System(need win/loss screen still);

-One type of AI(four more in the works)
-Move forward, backward, left and right at random;
-Lively and animated;
-Shoot when moving left or right;
-Do a ninja attack on the Player when close enough to the Player;
-Doesn’t go behind the player and out of sight
-Each enemy has different strenghts, weaknesses, and amount of health points
-Each type of weapon effects enemies differently;

That pretty much sums it up. Let me know what you all think please!(Especially about the AI, the customization system, and the way the player can go around the cylinder) :slight_smile:

Working on making the game “look” better right now. Adding some art elements, music, and setting up the other 4 AI types. Should be finished everything sometime tomorrow.

Any feedback?

Main Menu is now completely finished. Making GUI stay in the center of the screen no matter what is painfully hard…Here’s a screenshot from the Windows build on fullscreen. The WebPlayer build doesn’t have quite as many planets visible…should fix that I guess, but still, it’s finally starting to look awesome :smile:

My only complaint thus far is the handling on the spacecraft. It is very hard to know what is in front of you and where the enemy bullets are. As far as i can tell it is like you are riding on a cylinder. The camera is on the outside so all sense of bearing is lost. There is no 3d control, just left and right. So if I wanted to shoot the guy who is shooting me, I have to be in his bullet trail. (which mind you I have no bearing on)

Thanks for the feedback :smile:

Yes, you are riding on a cylinder, that is intentional, as it is the main thing that separates it from a 2D space shooter. It’s supposed to be a 2D shooter with a 3D environment. So the 2D controls are supposed to be that way. I see what you mean though, it’s impossible to hit the enemy without getting hit yourself. I think I’ll fix that by giving the enemy a decreased rate of fire, so you can “dodge and shoot” like in any other classic 2D space shooter (think Galaga).

As for the camera, you are right, I originally had it attached to the player, and you could see a lot better, with a proper line of sight, but I changed it to make it a bit harder. I guess it just made it impossible to see, lol :smile: Will change camera back to the way I had it before :stuck_out_tongue:

Thanks for the feedback/criticism! Changes/updates coming soon!

the shots themselves are on a flat plane. (so you fire 8 bullets in a spread and the fly off the cylinder, thus never hitting the target.) is this intentional? Seems like 99% of your bullets never even travel towards the enemy. (for that matter, it doesn’t appear that the enemy is even on the same cylinder you are)

Aha, forgot to give the same cylinder-snapping physics to the bullets. The bullets are supposed to snap to the cylinder like everything else…forgot to implement that. Thanks for noticing :slight_smile:

About the enemies not being on the same cylinder…hmm, why does is look that way to you? I can assure you that they most definitely are…is it the way they dance around when they are moving left/right? Please clarify :slight_smile:

With the new menu and the “moving” stars its now much better :slight_smile: Realy cool!

OK, I see that part now. I think its more that I have to hit them with 10 shots or so, and they feed out the same number of bullets as I do. (and there are like 10 of them on the screen shooting) makes it real hard to kill anything before they just overwhelm you.

Course, I am old… lol

The biggest part that got me is the ships that shoot in a spread, you can never hit anything because no bullets ever stayed straight. Very big disadvantage when all of theirs do.

Next, make a small visual explosion where the bullet hits. As it sits they just disappear. That would help people recognize their efforts.

Yes, I accidentally changed the WebPlayer’s amount of enemies…I need to fix that. They’re not supposed to overwhelm you, only wear you down bit by bit until you die :stuck_out_tongue: Lol.

I’ve currently got the spread sort of working…but not really. Still working on it :stuck_out_tongue:

More visual elements are in the works; gotta fix the bugs in the code first :smile: Lol @ “recognizing their efforts” :smile:

As far as the bullets. I assume that you are using just direction and forward momentum. Perhaps you could add RotateAround (the center of the cylinder) in place of any horizontal movement.

And enforce the radius from the cylinder center.

Yes, that’s what I’m doing. I’ve run into what appears to be a technical limitation though…maybe you could help? Here’s what’s wrong.

I have 5 GameObjects as spawn positions for each of the 5 bullets from the spread weapon. Each has a different rotation on the z axis.
I Instantiate 5 “bullets” at the position and rotation of the GameObjects. This creates a spread effect.

Problem is, I have the GameObjects rotating towards the center of the cylinder on the Z axis. This effectively negates whatever Z rotation for spread that there was before, causing no spread.

Hmm, I’ll check out RotateAround. It’s not what I’m using right now…but it just might work.

EDIT
I really don’t have time to fix this right now. I’ve got to concentrate on polishing up the rest of the game itself and getting it ready for the awards, so I think I’ll scrap the shotgun at this point and replace it with a guided-missile weapon. I’ll fix it (eventually), but right now, I’ve got to concentrate on other things.

Fairly easy:

untested but you get the point.

using UnityEngine;
using System.Collections;

public class bullet : MonoBehaviour{
	
	private float moveSpeed = 0;
	private float angularSpeed = 0;
	
	// use this to modify the angular speed to get good results
	private float angularModifier = 10;
	
	public Init(Vector3 startPoint, Transform shooter, float speed, float angle){
		transform.position = startPoint;
		transform.rotation = shooter.rotation;
		Vector3 offset = shooter.InverseTransformPoint(transform.rotation * transform.forward);
		moveSpeed = offset.z;
		angularSpeed = offset.x * angularModifier;
	}
	
	void Update(){
		lastPosition = transform.position; // use this for Raycasts to see if it hit something.
		transform.postion += Vector3.forward * moveSpeed * Time.deltaTime;
		transform.RotateAround(Vector3.zero, Vector3.forward, angularSpeed * Time.deltaTime);
	}
}

Final Day! Working hard on putting the final touches on this project…added some GUI to the customization system. Just need to tweak the AI, add some sound effects, and visual explosions now!

Aaaand…Finished! It’s finally finished!!! It’s also 11:58 PM. Lol. I am tired. Been working on this all day. But it’s finished! Can’t believe I actually made it…

Anyway, here are some new screenshots from the final build!

I know that last picture isn’t right, but I’m too tired to fix it right now lol.

Feels triumphant at having beaten the deadline