June 26 Progress Update
Posted on June 26th, 2009 07:15:34
by landon
Comments
Today has been uneventful. I spent most of the day trying to get a good damage text system set up (you know, the little floating text ala WoW.) Right now there seem to be two good solutions to this:
- Using particle effects
- Using an ObjectTextDisplay
Both have their own unique little challenges. With the particle effects I would basically be setting up a point particle generator on the ship being damaged and generate a texture with the damage amount. Two roadblocks I ran into here were that I couldn't find much documentation on how to render a font into a texture and I had no experience with particle generators.
On the other hand ObjectTextDisplay looked promising, but I wouldn't automatically get a floating number, which was fine for now. David Mandelin was kind enough to post his python port of the OTD code on the ogre wiki, so I used that and fixed a few blatant errors. However, it isn't displaying anything at all after I enable it. Perhaps this is one of those Ogre workflow issues I have trouble with :) .
Tomorrow? I want to debug this OTD or see if I can maybe get a basic particle effects thing going without too much hassle.
June 25 Progress Update
Posted on June 25th, 2009 02:40:37
by landon
Comments
Today I was able to finish the bare bones for two events, Fire and Death. The fire event for now is just lasers, which are implemented with a BillboardChain. ( pictures ship to planet, ship to ship)
I also discussed improevements to this event code with mithro:
- Shield and hit animations
- Tapering the laser when shot at a planet
The other event I finished tonight was the death event, which for right now is very simple. It just turns the SceneNode containing the Entity invisible. The major improvement on the way for this is adding a debris field afterwards (right now it looks kind of sparse) and creating a death animation for planets as well as ships. As inspiration, mithro pointed out a few clips from scifi shows.
Tomorrow's goal? I'd like to get the damage event done and the move event started so I can spend friday catching up on the other event TODOs.
June 24 Update
Posted on June 24th, 2009 05:48:01
by landon
Comments
Today I've been working on getting the fire_event stub filled out. I ran across one Ogre user's code for creating Star Trek-like phasers, so I turned that into python. Several hours later I finished fixing bugs in my port of his laser code that kept it from working at all only to find that for some reason it moved the attacker to the right every time the fire method on the laser was called. After I wake up I'm going to see if this can't be better done with a Billboard or BillboardChains (which have very little documentation other than the API material >.< )
Week of June 14 Progress Update
Posted on June 23rd, 2009 00:18:27
by landon
Comments
This week was pretty uneventful in every way, shape, and form. I initially had the idea to make a function generator and then attach the functions to Entity objects after they were created (not my most brilliant moment). However, it turns out that Entity objects lose all of their attributse when you put them into the SceneNode. The SceneNode keeps them however.
What I began implementing at the end of the week was a Participant class that wraps Entity. I haven't tested it yet, but I'm pretty sure it should give me the results I'm looking for.
WRT midterm goals, I would like have a few basic events done this next week: Fire, Damage, and Death (Log is done already and I'm not yet sure how to work out Move in 3D.) After this I want to get round progression up, which should be simple enough since I can just loop through event lists and call the appropriate methods on appropriate Participants. It would also be great to have a GUI for round progression, but that will have to wait until I get the underlying bits worked out (nothing ever seems to take near the order of magnitude of time that I imagine it will!)
June 13 Update
Posted on June 13th, 2009 03:19:33
by landon
Comments
Finally moved into the house, have internet, and they're almost done working on it! That's the real life update, but for Thousand Parsec I've been working on the battleviewer, which is now sporting two new classes: BattleManager and RoundManager.
BattleManager takes the place of TestBattle, with some extra functionality to keep the battle progressing (or regressing!) For the most part though, it maintains a list of RoundManagers.
The RoundManager itself contains a list of BattleScenes, which can be called up when needed via the next()/prev() methods in RoundManager.
This upcoming week I'm going to be finishing up these classes so a battle will be able to progrses smoothly between all event scenes as well as the important bit, actually having event specific scenes other than the initial scene where all the battleships and scouts and frigates (and planets) are just staring at each other.
While my mind is on the topic, some elaboration on how BattleManager keeps the battle rolling. Right now it checks for the next/prev flags on the current scene (this is because each scene handles gui events, probably a better way to go about this, but it hasn't popped into my mind yet.) If it catches one of these flags it calls its own respective method which checks the current round for any more scenes to view and if the round is completely over it moves on to the next. The current round/event is tracked via a simple tuple in the BattleManager itself. After all rounds have been expended, that's the battle and the viewer will exit/pass control back to the client (ok, so client integration isn't started yet, but that's the plan eventually.)