Well, I stepped away from BSG for a few weeks. I needed the rest. I started working on it again this past week. I created a new destroyer which should be more visually pleasing than the original one I created a few months ago. In addition, I created a model for the Scropion fighter that will be used as the "starter" fighter.
Here are a couple of images of the untextured versions (I don't have a good texturing setup at this time - btw, you can click on an image to enlarge it):
The Battlestar Trident (Destroyer):
Scropion Class Fighter (mk1):
I wanted both of these ships in the first tutorial, even if they aren't textured at this point. Both ships play a predominant role in the early game. It just makes sense to create both ships. In addition, it gave me more practice at the model creation process. In addition to these ships, I do have plans to build some asteroids (low polygon count, which is difficult to find), a space station and a "starter" Cylon fighter craft.
As for the tutorial, I have started some work on it. I have created a means to access the database and a means to retrieve player and vehicle data from it. I started to create another access module for mission data related to vehicles and objects. There are some issues that I need to consider before proceeding with this module.
First, there will be very few static models in a mission. Models, whether it is an asteroid or fighter, will be instantiated by the resource manager. The only static objects will be manager objects, even some of these will be instantiated by the resource manager. This will require a great deal of information to be stored inside the database. For example, the positions of all fighters in a mission will need to be stored in the database. When the mission loads, the resource manager gets each fighter along with positional and rotational data and instatiates it into the mission at time index zero.
Second, triggers need to be incorporated into the manager early in the development cycle. Triggers can be a time index or the player entering a trigger area. Each of these triggers need to be recorded into the database. The resource manager will load this data and track the triggers. The problem is identifying and implementing the triggers. Timed triggers are relatively straightforward. Other triggers can be problematic. Here are some triggers that I can think of (along with some variables associated with the trigger):
Timed - requires a time index value - what is the event
Enter - requires a triggering object - triggering distance - what is the event
Enter (delayed) requires a triggering object - triggering distance - time delay value - what is the event
Exit - requires an triggering object - triggering distance - what is the event
Exit (delayed) requires a triggering object - triggering distance - time delay value - what is the event
Destruction - requires a triggering object - what is the event
Health Trigger - requires a triggering object - triggering health value - what is the event
While I covered instantiate events, there are other events: audio execution, destroy object and others.
Third, the system needs to be flexible enough to implement new trigger events and actions. While the tutorial will have a timed, enter and delayed enter trigger events that involve executing audio, the systems needs to be able to easily implement code to include other trigger events and actions like instantiating an object. This also applies to the database. If the database cannot hold the data, it design of the code won't matter.
So, what is the solution? I'm going to think about it some and attempt to plan out the interactions between the code and database. If anyone has a suggestion, I'd love to hear it...