Steampunk Ace Combat style game

araagon: The radar is quite easy to do, its a bit of a kludge but it works well! Its an overlay system with the following script:



def Map(cont):
    ow  = cont.owner    
    sce = bge.logic.getCurrentScene() 
    obList = sce.objects

    realScene = bge.logic.getSceneList()[0]

    for ob in realScene.objects:
        if 'enemy' in ob:
            ow.scene.addObject('point',ob,1)
                   
    renderedContacts = [i for i in sce.objects if "blip" in i]
        
    for blips in renderedContacts:       
       distance = ow.getDistanceTo(blips) 
       if distance > 11:
            blips.endObject()        

def Position(cont):
            
    ow  = cont.owner    
    bge.logic.globalDict["playerPosition"] = ow.worldPosition
    bge.logic.globalDict["playerOrientation"] = ow.worldOrientation
    
def Position2(cont):
            
    ow  = cont.owner    

    ow.worldPosition = bge.logic.globalDict["playerPosition"]
    ow.worldOrientation= bge.logic.globalDict["playerOrientation"] 
    
def PositionWorld(cont):
            
    ow  = cont.owner        
    bge.logic.globalDict["worldOrientation"] = ow.worldOrientation
    
def PositionWorld2(cont):
            
    ow  = cont.owner        
    ow.worldOrientation = bge.logic.globalDict["worldOrientation"]


Its hard to explain how it works but here goes:

You have an overlay that essentially generates a marker for any object in the main scene. The overlay camera is parented to the player icon in the radar so as the player moves in the main scene, the players position and orientation are copied. In reality the overlay is spatially the same as the main scene (just the camera is further away).

In the overlay I do a simple distance check from the radar player icon to the enemy markers, and cull them a set distance (in my case, as the markers go over the edge of the radar ‘disc’.

The other orientations are for other radar ‘furniture’ like the background ‘hoops’ which use vertex parenting. They themselves have their nromals flipped (so they vanish when needed!)

The radar is fully 3D so in the overlay you could have logic to have the radar look down, 3D view (as is here) or behind. You could do it all at once (although there is a slight CPU cost).

If you are confused by that (and I would not blame you :wink: ) here is a blend. Its scrappy (I havent cleaned anything) but it works:

EDIT: Nice game you have too!

Attachments

RadarNew.blend (608 KB)

…very nice work so far, cool radar-script!

Thanks! Hopefully I can get some more tweaks sorted for extra functionality!

Hi Rubbernuke ! Great idea for a game ; Keep up the good work :slight_smile:

solarforge: Thanks!

araagon / jester elly:

If you use this snippet to replace the same sections in the script posted it adds the following:

Radar ‘blips’ have the same orientation as their ‘real’ counterparts in the main scene
The closer a ‘blip’ is to the center of the radar (i.e. you!) the bigger it will get (and scale to nothing the further away it is)
Objects behind you are coloured blue on the radar


import bge

def Map(cont):
    ow  = cont.owner    
    sce = bge.logic.getCurrentScene() 
    obList = sce.objects

    realScene = bge.logic.getSceneList()[0]

    for ob in realScene.objects:
        if 'enemy' in ob:
            marker = ow.scene.addObject('point',ob,1)
            marker.worldOrientation = ob.worldOrientation
                      
    renderedContacts = [i for i in sce.objects if "blip" in i]
        
    for blips in renderedContacts:       
       distance = ow.getDistanceTo(blips) 
       distance2 = 1 / (distance / 2)
       if distance2 < 1.5:   
           distance2 = distance2         
       else:
            distance2 = 1.5
       blips.localScale = [ distance2, distance2 ,distance2 ]
       if distance > 11:
            blips.endObject()        
       (dist, glob, loc) = ow.getVectTo(blips)      
       if loc.x > 0:
            blips.color = [ 1.0, 0.0, 0.0, 1.0]
       if loc.x < 0:
            blips.color = [ 0.0, 1.0, 0.0, 1.0]
       if loc.z > 0 and loc.z < 0.1:
            blips.color = [ 1.0, 1.0, 1.0, 1.0]

EDIT:

This adds WHITE blips if the enemy contacts are level with you, and changes the colours a tad (red behind, green in front

I have now decided on the final ‘structure’ of the game.

Firstly, a rough blocking out of what I mean:


In a similar vein to my favorite Miyazaki anime, Castle In the Sky, the player will be up against six giant flying islands (one per level). Each island is held aloft by magical gemstones- the player’s compass points to these hidden within the islands walls / structures, and when destroyed the corresponding section of island will fall away until the large core gem is found. When this is destroyed the island will fall to earth. Just like finding the weak spots in Shadow of the Colossus it adds an action puzzle element to the game.

Some more blocking in of a more functional city:

Its quite a challenge balancing polygon count with detail, not to mention trying to convey an architectural style too.

More fiddling:


Fleshing out some low poly detail on the outer walls:


Still too high poly though at 485 triangles…this is one modular section (cities will have eight in a ring)

Doesn’t matter, it’s beautiful! :smiley:

Did you have seen the Anime “LAST EXILE”? cause some of those screenshots have an familiar (do you write it like that? xD) style… if not you should do that cause thats maybe a good inspiration for you (its also steampunk). Anyways your game looks interesting till now. Good luck with the project!

MichelleSea > thanks!

LioKon > I have indeed seen Last Exile (and highly entertaining it is too!), and it provides inspiration along with ProGear (an arcade game), Castle In the Sky, Starfox/ Starwing, and PropCycle (another arcade game).

Haha okay cool! Yea Castle in the Sky was awesome too xD

Some more:



I upped the count a little- now the city is about 3600 polys in total so far.

<3 anime <3

***** Steampunk Anime

don’t forget

I forgot about SteamBoy! Two more I forgot: Nausicaa (manga was better), and Nadia and the Secret of Blue Water (more sci fi ish but cool though).

But practically anything by Studio Ghibli is great. Howls Moving Castle and Porco Rosso are particular favorites, and might pop up in some way here.


Slightly more complete…I like the ring wall but the egg dome feels a bit wrong to me somehow. Here is a quick video showing rough rotor blades:

And started playing with mist to see what it does with RenderToTexture:


Looks pretty scary…and cool!

my all time favorite is still princess mononoke (i know its not steampunk but i dont care xD)! but i have a nother question will it be possible to visit one of those citys? So when you fly near to the city you can press a key and the you will get a short loading screen and then you are in a small area with about 5 houses. i think that would be cool for some of those citys because it would mix up the gameplay a bit and you could show what kind of city it is (for example more industrial)… but maybe thats to much work :confused: How ever i still like the design of your assets! and again good luck with the project :slight_smile:

sorry what i said was crap i forgot that this game is about dogfighting so visiting citys doesnt fit into this game :confused: maybe i saw to much star citizen videos… so ignore my comment :smiley:

Nice idea though! A bit like Panzer Dragoon Saga. But for this game, the player must destroy each city. They do so by using the compass in the top centre of the screen that points to gems that levitate part of the city. As each gem is found and destroyed, the city slowly falls apart until the main gem is found. When that is destroyed, the whole city goes.

Imagine the Big Core bosses from Nemesis/Gradius where you destroy the little blocks that hide the core, but in 3D.