[Titled] IVA: 6DoF FPS: 2nd tech demo now available!

Hello everybody. I would like to show off what I’ve been able to put together so far for my as-of-yet untitled Descent-esque shooter. I have been focusing pimarily on the basic gameplay and flight control functions, so the graphics are bare-bones at this point, so bear with me in that regard.



A basic scene, on a very foggy little moon :wink:


Another angle, showing off the freedom of movement

More screenshots will be posted in the future, once I get an art direction/style worked out.

A .blend file can be downloaded here. (This is an obsolete build! Go HERE for the latest build)

This is my first time sharing blend files in this manner, so there’s a good chance this file is broken and will not work. Please let me know if this is the case, so I can fix it. It was mostly developed in blender 2.6, but I’ve recently moved the project over to blender 2.7. At this point, it should be compatible with both, although future versions will probably require 2.7.

CONTROLS:
WASD slides you forward/backward left and right.
SPACEBAR to ascend, LEFT SHIFT to descend
Q and E to roll left and right.
Hold TAB while moving forward for a speed boost (a little fiddly ATM).
Mouselook steers the ship. Left click to fire pew-pew lasers.

The scene is fairly small, but it’s enough to zip around in. Those who explore long enough may find some surprises :wink:

All assets were created by me, except for the terrain texture, which was taken from CGtextures.
Sound was done in Linux Multimedia Studio, with liberal use of this Gameboy Advance soundchip emulator, and cleaned up in Audacity. Sound levels have not been tested on anything except my personal headphones, so please let me know if the sound seems too loud/quiet/annoying/etc.

The ultimate goal of this project? I’m not entirely sure yet. The idea of a linear ‘get to the end of the level without dying’ doesn’t excite me too much, although that would probably be the most approachable model.
If I were to get ambitious enough, I could see this evolving into something like a (small) open-world trade/combat sim; something along the lines of Hard War, or a terrestrial micro-version of Elite.

Like I said, it’s just me working on this project. I am not a professional game designer, and don’t necessarily aspire to be one. I have been at this business long enough to know not to set my sights too high.

Anyway, check out the demo if you’re so inclined. Feedback is much appreciated! Thank you!

Attachments


A Few Updates:
-Cleaned up collision a lot: The move over to 2.72 threw my previous collision models all out of whack. With some tweaking though, I think it’s working much better than it ever did with 2.6. It is still far from perfect, however.

-Cockpit View: Added an interior cockpit model. A ‘Dashboard’ if you will :wink: The player camera has also been set to ‘slow parent’, which paired with the 3D cockpit gives a nice feeling of momentum while flying around.
-Energy: Your ship now has an energy bank which is used to power the ship’s energy weapons. Current energy level is shown in a yellow bar across the top of the central display unit. Other ship systems (such as its turbo booster, or a shield repair) may also draw upon this energy.
http://vignette3.wikia.nocookie.net/soliaworld/images/9/92/Ship_anim1.gif/revision/latest?cb=20150103003204
A quick animation showing some initial functions of the dashboard; Floodlight and Turbo indicator lights, an navigation (square)ball, and the energy level indicator. The blue glow is from the engines; it’s energy (brightness) is tied to the ship’s mean velocity.

And a preliminary sketch of what the player’s ship might look like.

Next, I will be implementing shields/health, and hopefully some simple enemies. Stationary turrets, most likely.

Looks like a good start,
Keep at it,
Also, there are some excellent assets in blendswap.com , like enemy robots etc.

Pretty cool. The controls are great. The ship should probably go quite a bit faster.

Good ol’ trichording. Allowing you to get places 1.7 times faster…
You still play descent?I do.
I also made my own clone of it once in bge.

I’m keen to see where this goes. I’ll be keeping my eye (yeah, the one on the left) on this thread.
My only comment so far is the same as henrymop. The ship could do with going a little faster. Prehaps invstigate servomotion. I once had a resource for this. No idea if it still works but here you go.

Thanks for all the feedback!

On ship speed: It’s nice that people are complaining it’s not fast enough! I was afraid people were going to think it was too fast!
The ship object has a fair amount of damping applied to it’s physics, to slow you to a stop once you take your foot off the gas. This seems to impart a sort of terminal velocity I can get the object to reach. Turning the damping down increases this max speed, but quickly makes the ship very hard to handle.
One idea I’m playing with currently is to have the afterburners temporarily reduce this damping. This will result in greatly increased velocity with the trade-off of reduced handling. With this, however, you increasingly run the risk of clipping through any geometry you’re meant to collide with.

I will check out your take on the issue, sdfgeoff. I certainly want to give this game a good sense of speed; something the Descent series was lacking in.

And, for the screenshot of the day:



We now have a little outer space scene. A large space station ahead, with a small freighter flying through with his navigation lights blinking. For sense of scale, the station is about 2,550 meters from end to end; the player ship is about 6 meters. The freighter measures in at around 55 meters.

Stay tuned for an updated blend file soon!

I’ll check this .blend out when I get home, but these screenies are looking great! I’m excited to see where it goes, I love space shooters. :3

Instead of using damping to slow an object down, apply a force in the other direction until it slows down (typically using whats caused a PID controller, built into the servo motion actuator). Have a look at the resource I linked you to. I think it has the motion you’re looking for.

I have tried to. When I follow the link, it brings me to a page where I’m logged out. To download the .blend, I need to log in. When doing so, it fails to log me in, therefor I cannot get the file. Searching for the title of the thread does not bring it up in the results, so I’m not sure what is going on.

I do believe I know what you’re getting at, though. My first iteration of this, which was aimed at being much more of an Orbiter clone than a Descent clone, did something exactly like what you’re talking about, for killing translation and/or rotation. I simply figured using less python-heavy approach may be easier on the engine, once more things start getting added to the mix. Of course, I am probably totally wrong, and the opposite is true.

For now, I’ve simply reduced the damping factor by about 1/3rd, and I think it gives good results. Note: Next build should have a speedometer…

I think python is great, for initiating when logic changes, to extend what is possible,

Logic is very powerful, however python gives you access to more.

Like
Keypress ----------and -------------add object missile

Weapon impact

Ray (1.1, y+)--------------python

Always--------------------and---------------------motion 1 y


import bge
cont = bge.logic.getCurrentController()
own = cont.owner

Ray = cont.sensors['Ray']

if Ray.positive:
    if 'health' in Ray.hitObject:
        Ray.hitObject['health']=-own['Damage']
    Ray.hitObject.applyForce(own.getVectTo(sens.hitPosition)[1]*own['Damage'],0)
    Explosion = bge.logic.getCurrentScene().addObject('Explosion',own,1)
    Explosion.worldPosition = Ray.hitPosition 
    own.endObject()

So this imparts force and damage and adds a effect at the hit positon

It assumes the + y axis of the missile is forward

It assumes your enemies have a property health

It assumes you have the property Damage in your missile/laser etc,

It assumes you name a effect mesh, or empty, Explosion,
(Pinning a lamp to a explosion gives a nice effect)

Just makes sure if you scale the speed you scale the Ray length,

Ah right, the elysiun vs blenderartists problem. Try this link:
http://www.blenderartists.org/forum/showthread.php?216747-6DOF-python-movement-script

And, unless you do silly things in your python code (eg iterate through million-long lists), don’t worry about execution speed. When you get to AI, you’ll be doing way way more complex stuff. Don’t worry. Modern computers really are very very powerful.

Here is a new tech demo with lots of updates!

Get it here.

-Added a background scene, which all parents to a central empty which mimics the player’s worldPosition. Stars are randomly-generated halo-aligned planes. The normal map used on the asteroid was created using this wonderful image by NASA.

-Set up a simple sun to follow the player and provide real-time shadows within a decent range.

-‘Afterburner’ replaced with a Mass Depressor Drive, which draws energy to effectively cut your ship’s mass by one-third, giving you increased velocity.

-Updated HUD: Added velocity indicator, indicator lights for floodlights and MDD usage, and prograde/retrograde indicators (handy for maneuvering in tight quarters!), as well as information and range on valid targets under the crosshair.

-Downward movement is now C (used to be left shift). Holding shift while pressing other keys it seems was giving problems…

-Toggle floodlights with F

-Mouse sensitivity can be adjusted with the F9 (sensitivity down) and F10 (sensitivity up). If a game like this is going to have any options, this is a real important one :wink:

-Take screenshots with the 1 key. This is a dirty hack and will just plop them into your blender folder.

-There are a few plasma-flinging drones floating around the scene now. Their shots wont damage you (yet) but they can give you ship a good jolt. They will die if they take enough damage, but for now they simply.endObject()

=======

I am still using the physics damping method to control the speed of the ship, although I’ve loosened it up a bit since the first demo. Despite playing around a lot with the ‘counter-force’ method was just not working well with the rig I have set up. If it really becomes an issue where I have to implement it that way, it would mean a lot of re-writing of my movement code. For now, you can get the ship just up to the speeds where the physics start to get sketchy. Any faster than that, and you start running the risks of doing things like out-running your own lasers :wink:

Try it out and see what you think!

I’ve edited your newest file to make some changes to speed and control. Tell me what you think. Don’t be afraid. :slight_smile:

http://www.filedropper.com/iva

I don’t recommend changing anything as far as ship movement goes. As far as I can tell, it’s perfect.

you don’t need to counter forces,

object.worldLinearVelocity*.9

object.localLinearVelocity.x*=.9 etc

“carving” force is handy as well,

(this assumes X+ is forward)


if own.localLinearVelocity.x>0:
    own.localLinearVelocity.x+=abs(own.localLinearVelocity.y*.2)
    own.localLinearVelocity.y*=.75


so this dampens side to side, as well as transfers some of the force forward…

you can do the same for up/down

this makes the vehicle handle more like a jet,

Just a quick post, if anything to let everybody know this project is still very much alive.
I have been busy trying to work out some ground-level pre-design stuff I probably should have taken care of in the first place.
Needless to say, much is subject to change. The bar must be greatly lowered, lest this thing ever have a chance of seeing the light of day.
The open-world tactical sim I originally dreamed up this will no longer and can no longer be. Expect something much more along the lines of a traditional arcade shooter.
I can save the big stuff for the sequel :wink:

To BPR: I humbly take back every word of the previous post. The inevitable re-write of the ship code is happening already, and I’ve been able to clear out dozens of lines of code, and just as many logic bricks. obj.localLinearVelocity has certainly played a big part in that. I had always used getLinearVelocity() and setLinearVelocity(), not really knowing about this little beauty! Hats off to you, sir.

Please forgive the horrible jaggy edges in these screenshots. No AA enabled + resizing of images brought these out, and I didn’t catch them until it was too late. But I just wanted to quickly show off how things are looking…



I am using Multitexture mode now rather than GLSL. With the flat-textured ‘StarFox’ look, there was little benefit to having GLSL gobbling up resources. Things are much more limited as far as lighting and surfacing, but I see that as a good thing.


Things are pretty bare at the moment, but will eventually be populated with more debris, machinery, and other things. With this particular style, though, I found it’s very easy to over-detail. I am studying closely the philosophies of focal points, eye flow, and other things like that. I have been happily dabbling in level design since Duke3D, and never really considered these things (and ironically enough, was never successful at level design!).


Physics objects work nicely in these simple geometry environments. Although I was not able to capture the laser bolt itself, I did get the sparks resulting in the laser’s impact with the crates. Each spark particle is a dynamic physics object, and will bounce around and get pushed around when you fly through them.

I have pretty much started over from scratch here. Everything is re-written. This ship code is much more streamlined and modular now, and should have room for expansion. Gameplay will consist of linear levels of ‘get the key to open the door to get the other key to open the other door to blow up the bad thing’. I am not going to attempt any more story-telling or cinematic elements than is required to make the game more than a shooting gallery.

Wow looks cool. Would love to see a short video :smiley:


A first-draft modelling of the first couple of enemies you will be coming across. Comments&Critiques welcome.

Turns out, I have an ancient Google account I had to perform some muckery with to get active again (apparently they thought there was something fishy about ‘the way I was typing’ my password…), but here is some gameplay!
It took me a bit to find screen capture software for linux, but finally stumbled across SimpleScreenRecorder, which is doing exactly what I want it to, and on the first try too! Hooray.

Wow, love the particle effects and how the sounds come together. You know what would be awesome? Having some more zero gravity objects floating around (if it is meant to be in space, which I assume it is).