New-Eden themed space war game

This is the first project I’ve ever actually attempted to do anything more than basic blender things with (first time I’ve used Python, etc)
Idea - Based on the universe of EvE online (mainly because I’m both too lazy and incapable of modelling ships to that level of detail :wink: ) since this is my first game with Blender, I’m going to stick simple.

Menu screen -> set team size/fleet composition, select your ship, apply fittings/modules, fight with your fleet vs. enemy fleet. simple :slight_smile:

Complexity:
->Implementing things like tracking speed (large ships won’t be able to hit small, fast ships because the guns won’t turn fast enough)
->capacitor (ship energy… turning modules on will drain some energy, which will slowly regenerate. When you’re out of energy, all modules become inactive)
->drones (small AI ships deployed from your ship that will attack your active target. Won’t do nearly as much damage as your main weapons, but can implement stuff like tackling to the drones [they could slow the enemy down so you can hit it more easily, etc]

What’s done so far?:
-> watch the most updated video :wink: too many small things to say exactly what’s done so far.
Note that none of these videos are any form of representation of the final game, so far everything is done for testing/development.

So far I’m very proud of what I have and feel accomplished. I haven’t looked up and tutorials on “how exactly do I do this” because I’m a firm believer in figuring things out for yourself. Hours of looking at API docs and wondering “well, how will this method fit and do what I need it to do?” :slight_smile:
Thanks for looking :slight_smile:

first video (Feb 2, 2013) roughly 4 prior days of work put into this one:

https://youtu.be/wCCXwyWfbRM

update 1 (Feb 3 , 2013):

https://youtu.be/SLyUqSGAMXA

moving turret parts (Feb 6, 2013)

api progress/turret tracking w/ set speed (Deb 9, 2013)

https://youtu.be/bOF2bP8pOmA

Word! very nice lookin still! i love background atheistic’s !!! is that a single defuse texture or are you using layers of alpha maps each with different layers of particles?.

I went with the old Homeworld 2 style of using alpha’d planes randomly scattered and rotated to simulate partical clouds. There is a diffuse texture as the background but parts of it are not associated with that texture

Nice work

let me know if you need any help with any logic/python
I have a nice fire and forget homing missile I can add to your game(uses vision cones and almost no cpu)

:slight_smile:
:slight_smile:

The thing I am most concerned about right now is the fact that BGE has no implemented functions for an in-game GUI. Sure it’s possible to do it with textured planes and animation but that seems like a pretty… trashy way to do it. Even just having a way to draw text directly onto the screen (and not in 3d space) would be fine.
Thanks for the offer, I may very well take you up on it in the future when I get to working on projectiles and such.

you need menus etc?

you can use a text object, or just have objects bound to in front of the camera that are empties that spawn menus etc,

what are you looking for mouse controled or keyboard?

I can do alot of hud stuff easily enough

Sounds like you might be interested in BGUI, a gui library for blender. Heres the link: http://code.google.com/p/bgui/

module hardpoints added :slight_smile:


the ones shown in the picture were spawned like so:

       new = ships.Rokh()
    player.replace(new)
    for x in range(0, len(new.hardpoints)):
        hp.Hardpoint(new.hardpoints[x], [-190,0,0], GameLogic.player_data.obj).weapon("gun")

still needs refining but its getting there :stuck_out_tongue: using cones (named “gun”) as placeholders until I can reinstall EvE to grab the gun models

edit: can also see the node “ship lights” that turn on in darkness on the larger ship to the left in that picture. they are new since the original post

made everything entirely OO now. Most of the ship stats/etc were hardcoded as they were spawned in before… also, mass/inertia are calculated into the rotation speed and it looks pretty good :slight_smile:

class Ship(object):
    def __init__(self):
        self.obj         = None
        self.engines_act = False
        self.mass        = 0
        self.inertia     = 1
        self.hardpoints  = []

##########################
#               COERCER
class Coercer(Ship):
    def __init__(self):
        Ship.__init__(self)
        self.name       = "Coercer"
        self.health     = 100
        self.speed      = 252
        self.mass       = 1665000
        self.inertia    = 2.8985
        self.camera     = [5,   2,  -0.2]
class Coercer_AI(Ship):
    def __init__(self):
        Ship.__init__(self)
        self.name       = "Coercer_AI"
        self.health     = 100
        self.speed      = 252
        self.mass       = 1665000
        self.inertia    = 2.8985 
#               END COERCER
##########################

class Apotheosis(Ship):
    def __init__(self):
        Ship.__init__(self)
        self.name       = "Apotheosis"
        self.health     = 100
        self.speed      = 500
        self.mass       = 1600000
        self.camera     = [3,  1,    -0.2]
        
class Avatar(Ship):
    def __init__(self):
        Ship.__init__(self)
        self.name       = "Avatar"
        self.health     = 100
        self.speed      = 60
        self.mass       = 2278125000
        self.inertia    = 0.037
        self.camera     = [150,  60,    -0.3]
        
class Archon(Ship):
    def __init__(self):
        Ship.__init__(self)
        self.name       = "Archon"
        self.health     = 100
        self.speed      = 70
        self.mass       = 1113750000
        self.inertia    = 0.0455
        self.camera     = [25,  7,    -0.3]

class Rokh(Ship):
    def __init__(self):
        Ship.__init__(self)
        self.name       = "Rokh"
        self.health     = 100
        self.speed      = 89
        self.mass       = 105300000
        self.inertia    = 0.136
        self.camera     = [9,   2,    -0.2]
        self.hardpoints.append([-0.4,  4, -0.25])
        self.hardpoints.append([-0.4,  3, -0.25])
        self.hardpoints.append([-0.4,  2, -0.25])
        self.hardpoints.append([-0.4,  1, -0.25])
        self.hardpoints.append([ 0.4,  4, -0.25])
        self.hardpoints.append([ 0.4,  3, -0.25])
        self.hardpoints.append([ 0.4,  2, -0.25])
        self.hardpoints.append([ 0.4,  1, -0.25])

and here’s a pic of ship lights


guns are in. previously was having a problem with converting degrees to radians (blender can be weird sometimes o_O) … anywho, enjoy a Revelation :wink:



ship hardpoints are assigned like so:

class Revelation(Ship):
    def __init__(self):
        Ship.__init__(self)
        self.name       = "Revelation"
        self.health     = 100
        self.speed      = 65
        self.mass       = 1237500000
        self.inertia    = 0.0455
        self.camera     = [30,  15,    -0.3]
        self.hardpoints.append([[ 3.4, 1.2,  -0.75], [0,-90,-90]])
        self.hardpoints.append([[ 3.4,-2.2,  -0.75], [0,-90,-90]])
        self.hardpoints.append([[ 3.4,-5.2,  -0.75], [0,-90,-90]])
        self.hardpoints.append([[-3.4, 1.2,  -0.75], [0, 90, 90]])
        self.hardpoints.append([[-3.4,-2.2,  -0.75], [0, 90, 90]])
        self.hardpoints.append([[-3.4,-5.2,  -0.75], [0, 90, 90]])

to which any module can be attached with

player.ship().fill_hardpoints("xl-pulse")
    #player.ship().equip(0, "xl-pulse")
    #player.ship().un_equip(0)
    #player.ship().strip_hardpoints()

turrets with moving parts finally added. 3 days of experimenting with different ways of doing it. :stuck_out_tongue: link is on the first post

Nearing my first deadline! I want to have all basic methods done by the 18th (I’ve done so much that I haven’t bothered to post about… I want it to be a surprise :slight_smile: ) thanks to everyone who’s helped with my various small issues thusfar (you can find a blood trail of posts in this forum I’m sure) once I have a real demo of what the game’s going to be all about I’ll start a new thread… hopefully around the end of the month.

Just some points:
Rather than typing self.name = “” instead use

self.name = self.__class__.__name__

or just use that wherever you want to get the name of the class in string form.
Also, you don’t need to type Ship.init(). Instead use super():


class Ship:
    pass


class Archon(Ship):
    def __init__(self):
        super().__init__()

I had tried super() previously and it didn’t work… maybe I was just using it wrong though, I’m used to Ruby syntax. Thanks
ruby-


class Ship
   def initialize(health)
     @health = health
   end
attr_accessor :health
end

class Revelation < Ship
  def initialize
    super(100)
  end
end

It’s probably that you were passing self to Super without the base class.
See here; http://docs.python.org/3.1/library/functions.html?#super

Some progress screenshots. Next step is to write a real partical system instead of using “plane particals” heh :stuck_out_tongue: also I’m not doing so well on the GUI side of things; I’m a coder, not an artist… which is obviously going to cause problems as I get into more depth with this, as I don’t have nearly enough time to learn something new of that sort due to my unpredictable career.






Keep up the good work :slight_smile:

need any weapons etc?
also a neat easy effect for “almost alpha”
(you can see through it)

Item-Pulser
Properties X Booleen = FALSE
always------------and---------------Toggle X
If X = TRUE-------and---------------Visibility 0
if X = False-------and----------------Visibility 1

good for projectiles and engine exhaust etc,

as for the Gui
using text at first is not the worst idea, there is a text box in the attached file here (I use them for debugging as well)

then add in “widgets” like a armature that gets taller the more health you have
(health bar)

of a needle that rotates the greater a value is (RPM gauge etc)

Add in some little icons that get mesh replace based on a value (like a little missile, or a little laser)

and your good to go!

Attachments

CodeItAllWeapon.blend (488 KB)

If you are a coder, then look at BGUI for handling the GUI. You will find it efficient and it makes handling a fairly intense GUI much easier than having different 3D objects to make up the GUI.

Nice looking game you’ve got here, keep the updates flowing :slight_smile:

yeah I tried BGUI out a few days ago, it’s nice. ended up with this until I can draw some ideas from other games :stuck_out_tongue: