A blog of group project progress made throughout the assignment.
|
|
comments (0)
|
Splash Screen 5 NONE
Credits – Who did what 5 NONE
Instructions screen 5 NONE
Sound 5 SOME
Downloadable Installer 5 SOME(needs to be finalized when rest done)
Collision detection 5 DONE(land and ents)
Weapons/damage or scoring system 5 SOME(may need tweaking)
New meshes 5 NONE
AI 20 SOME(boats use, some tweaking(so they don't hit land and stop))
Physics 20 DONE (let's not mess here anymore)
HUD/UI/GUI 20 SOME(ship display, could use an instruction button maybe
TOTAL 100 MAX:80
Extra Credit
Islands and island avoidance 10 DONE(world border won't let ships pass)
Camera innovations 10 DONE(camera follows player)
New physics 10 ?
Multiple selection 10 NO
Fun to play – as judged by your peers 20 HELL NO
New textures 5 DOES RUSTY COUNT? LET"S MAKE SOME!
Linux/Mac executable 50 HELL NO< YOU KNOW HOW LONG WINDOWS TOOK?!
80 + HELLNO = 100 maybe?
![]()
|
|
comments (0)
|
The camera now follows the boat, I disabled the camera controls except for q and e. We'll need to put some more boats in so they are kind of all over the place moving around...maybe have a list of points that they move to, so they keep moving in a circuit? I'll see about that now.
|
|
comments (0)
|
Downlowd NSIS, then open the menu and click option: create from zip. Take folder of exe and create zip. Now select that zip in NSIS, and create a self-unpacking zip file, labeled whatever and default install location at $Desktop.
Check that it works...turning is acting funny, and I think I'm going to attach the camera to the boat now.
|
|
comments (0)
|
The setup.py has been uploaded, and some other files too. Additionally cg.dll, wrap_oal.dll, and OpenAL32.dll may need to be copied and pasted into the created dist folder, which needs to be run from the Desktop if it has any hope of finding your Python Ogre and Python26 code.
|
|
comments (0)
|
Now we have hit points and scoring. new variable gameOver in state, become one if the player's ship runs out of hitpoints. New panels, and cursor.
|
|
comments (0)
|
I've made progress: we have a terrain now, and that makes a border around our world, but I couldn't figure out how to move the terrain, so instead I moved the water and all the boats: That means our game must now exist from (0, 380, 0) to (10000, 380, 10000). So I still have to move all the boats over, and the camera so they're inside the lake I made, and then I have to get terrain collisions working so that they can't go through the border. That may require some changes in helm and move to or some sort of overide so things don't steer through terrain when we aren't controlling them...
I'm really tired. First final done, and two more projects...I'll do more tomorrow, or in an hour after I've napped.
|
|
comments (0)
|
I moved collisionManager into the main folder and have it init and ticked there in coreSimple. We need to fix the naming of new boat spawns. add time onto the strings or something. Where do they get created?
|
|
comments (0)
|
Despite recent madness and lack of time, we have a basic untested collisionManager class, its in eva, and should be initialized in state, and ticked in state as well. gfx should be the one to get the collision list, so that it knows what ships should be sinking (and animate those).
potential problem: You have to get the bounding box off of the entity, not its node. The ents in the entity list are not the entities, just the dictionary representation, so we need to either get the entity from the gfxNode (hopefully the entity can be found using getAttachedObject and the entity's name). The other way requires the SceneManager (and getEntity()), and would then require collisionManager to be initialized and ticked in gfx instead of state (so that the SceneManager exists already and is accessible). Currently it is in state and uses the gfxNode, but this is untested.
another concern is making sure we don't test for collisions between an ent and itself. I wasn't sure what we could use for this, ent names maybe, or positions, (since hopefully it would detect collision before the boats have actually reached exactly the same position.) It currently uses the names, and hopefully that will handle it.
I'm not sure about using the random function to decide when to check for collision and when not to. The small chance that the generator produces a string of small numbers (or large) would mean that collisions would be checked too often (and slow everything down) or too little (and risk missing collisions). It may be better to have a set time like the toggle in gui.
|
|
comments (0)
|
bool Ogre::IntersectionSceneQuery::queryResult ( MovableObject * first
MovableObject * second )
[virtual] Self-callback in order to deal with execute which returns collection.
Implements Ogre::IntersectionSceneQueryListener.
|
|
comments (0)
|
PyOde uses faces and vertices of meshes to detect collisions. Not sure how compatible that is with our code though
myspace = ode.Space() #space to put collision objects
meshdata = ode.TriMeshData() #create the data buffer
meshdata.build(verts,faces) #Put vertex and face data into the buffer
mesh = ode.GeomTriMesh(meshdata,myspace) #create collide mesh
from elementtree import ElementTree
def get_verts_faces_from_xml(path):
"""Returns vert,face data from the xml model file"""
#print dir(ElementTree)
tree = ElementTree.parse(path)
root = tree.getroot()
submeshes = root.find("submeshes").getchildren()
facedata = []
vertdata = []
for submesh in submeshes:
faces = submesh.find("faces").getchildren()
vertexbuffers = submesh.find("geometry").getchildren()
for face in faces:
indices = [int(face.get(x)) for x in ["v1","v2","v3"]]
facedata.append(tuple(indices))
for vb in vertexbuffers:
if "positions" in vb.keys():
verts = vb.getchildren()
for v in verts:
pos = v.find("position")
xyz = [eval(pos.get(x)) for x in "xyz"]
vertdata.append(tuple(xyz))
return vertdata,facedata