About Gallery SF.net Project Bug tracker Downloads Forums Manual Wiki DevBlog News

Archive for January, 2008

Moving Along

Friday, January 4th, 2008

Beta 5.0 is out for the most part.  I say most part because of the obvious lack of linux binaries.  Many have complained about the lack of a linux binary and to that i have only one response I have for that besides the fact that I work in a different area, is that in linux, we have a much more efficient way of distribution than possible in Mac and Windows environments.  In Linux, distributions will package up the game as they require and link against their specific libraries and distribute from thier mirrors.  I can only assume we are waiting for that to occur and that those maintainers are waiting on a stable release from us so they dont spend all that time packaging up 200MB of data for nothing.  So, unless someone does build a linux beta, the only current solution is locally building the game.  A feat that takes about 20 minutes or less on most machines. 

 The good news is, that a stable release really isn’t that far off.   The holidays and real life have definitely put a road block on being able to give VS some much needed attention.  I know it has for me.  I think the main issue is realizing that we aren’t going to get everything in this release that we’d like.  We’re not going to get everything working 100% for all people in this release.   Thing’s aren’t going to be complete even though it’s a stable release.   We’re going to have to accept that even a stable release, has bug fixes released for it and it’s just the nature of software to require some polishing.   A stable release simply signifies a concrete api and functionality, not a lack of bugs.  We’re not calling this 1.0 for a reason, it’s not going to be complete, it’s not in the form that we’d all like it to be.   So I dont think people are expecting it to be full and complete at 0.5.  That being said, I have no doubt that it’s better than 0.4.3, and that is what really matters. 

So that brings us to what is actually still to be done.  I’m really happy to see the new layout of how development is done on the art side of things is going along nicely. I’m not sure if any name changes are still being debated for directories or what not, and I know we need to spell out how to go about interfacing with the Masters repository but that is all going well.  The artwork changes and thus the repository changes were a major change and we’re still making sure everything in-game is happy with it.  The shader support is another late addition that is fairly major, though it can be disabled and ignored by users that it doesn’t work for.   And as always, more unit work is and has to be done in the ways of data sets.   And definitely, not to forget networked play.

 I think we’re really stuck at that point where, as a developer, you want your work to reflect your level of skill and you want people to be awed and love it, and another point where people are losing interest because of a percieved lack of activity.   We need to basically shore up the api for the game (which has changed very little , most real show stoppers for mods lie withing the changing api of python), and turn off shading as a default (unless it’s complete enough for the guys behind it) and just put out the stable branch.  It’s ready now, it needs a little polishing, but it’ll be more beneficial to the game to do that polishing along a stable branch than to continue in this beta phase that is too unstable ( in the changeable sense) for most people to stomach.  

Lets get the mods up to date (the ones that are still alive) and get 0.5 out there and put our effort towards 0.5.1 as far as more shader additions, more units/new artwork, and fixes to the data set.  Sure, some people will point out the defects and that’s great.  We will only benefit from both the good and bad but nobody’s talking about our beta releases.  We have a lot of little work to do in 0.5 and that should keep us busy for a while before we start looking towards 0.6. 

 I havn’t touched on the networked side because I think that can be worked on during 0.5 and it will probably dictate when a 0.6 development branch should be forked because I’m sure some aspect of it will require a major change somewhere along the line.   But for now, it wont effect the main game.

 So that’s my little plea with everyone working on VS to really decide what is absolutely neccesary for a stable release and what we can push off for subsequent patching.  I think the main holdup is simply time and we all have so very little of it this time of year. 

 Since I’m at work right now, I figured it would be a good time to talk about the data set, something I haven’t been really involved in since I dont know python and the I prefer to work on backend stuff.  We all have ideas that involve huge changes, both in the backend and in the front that is innapropriate for 0.5.x, so I’ll limit to stuff that is.   What is appropriate, is Unit specification changes, weapon and such availability, economic values and most importantly, missions.  Well defined campaigns and missions.  Picking up python is going to be aggrivating, since it’s whitespace sensitive, but it shouldn’t be too hard and there’s a lot to build off of.  But I hope to do at least a little work in this much starved area.  I hope to create “missions” not for the player, since he can do what he wants, but for the AI.  I want to create generic missions that go into effect for the AI when certain criteria are met or situations accur, so that rather than have to worry about inter-AI communication and juggling units, the game can give all the AI units of a given faction in an area, the same “mission” which it will then play through as a real player would have to.  Only, these “missions” would compel the AI to work towards the goal, and since all the AI units loaded up with the mission would have the same goals, they would be appearing to work together.  Without ant real reworking of the way the game functions.  These “missions” would vary greatly for various situations, and have mirrors per factions with alterations to play to that faction’s characteristics.  The idea of the fixer for the AI would be replaced by some changes to how the default mission file functions.  Every N seconds, it can scan the entire unit list, sort it and depending on the results of the sort, it forces a “mission” onto the appropriate units.  This “mission” will basically be a set of goals just as a regular mission would be, but the computer AI would be forced to try and complete them.  That may require some minor changes to some backend AI work.  Either the mini-mission will change or the unit will complete it and do what it normally does now.    I think this will alter gameplay greatly, but it still falls within a stable change, because it shouldn’t alter mods or savegames and in-fact, can be a “campaign” option rather than the default privateer/explore one.   This is my idea of how 0.5.0 AI should be and I’m hoping to get some work done towards that soon.   I think it will give the user a perception of factions that doesn’t exist right now, a perception that factions work as a group and have characteristics that make diplomacy and actions effect each differently.   It’ll make gameplay much more immersive due to you now having to deal with factions actually directed towards things meant to change the play of the game.   Watching the news will suddenly be necessary.   I am really excited about the prospect of this and what it can open up.  

 for example.   A new universe is created and you’re privateering around making money transporting cargo and patrolling.  The game would probably see a pretty dispersed unit list.  The first thing it can do is give all the factions their basic mission ( a mission made dependent on their characteristics).  Remember, each unit gets the mission just as the user would get one from the computer.  Pirates first goal could be to attack a small ship that is not a pirate.   The next goal could be to goto their base. Then back out to attack a ship.  Repeat.  Then say the game finds a large number of large cargo type ships in a system with pirates.  The game then loads a “coordinated” mission to all the pirate ships.  This causes the pirate ships to return to base and then target the nearst large cargo ship.  All the pirate ships in the system would then targe the same ship and attack.   Giving the appearance of a coordinated attack.   After the attack they would return to base and repeat, until loaded with a new mission or all the cargo ships are destroyed.   

 In a similar manner, aera ships could take over and Hold systems.   And equally, if factions are friendly enough the computer could load similar missions on both factions to cause them to work together against a common enemy.   Imagine the epic battle that would take place if all the factions were enemies of the aera and they entered a system in force.  The game would load up an “AttackAera” mission into all non aera units.   Units may be recruited from neighboring systems.  Alliances would then become important to monitor..   Your own vessel may become the target of all the units in a system if you’re enemies with the wrong people.  

 I really think something like this is doable within the confines of a stable release, while simultaneously providing a level of AI that has been extremely hard to implement.  So basically we would have this as the game layer.

 Core:  Game super structure.  Controls scheduling and non-mission things. 
             Missionizer:   Runs every N seconds instead of the schedular for a cycle.  It reads unit list and if various situations that match various criteria exist, it loads affected units with the appropriate mission. 
                                      Missions:   Every faction gets a mirror set of missions for various situations. 

              Campaigns/Missions:   This is the user directed missions that are possible.   Work should be done to interoperate with the missionizer so that they dont conflict, with the user campaigns/missions taking precedence in most situations.

Missionizer should be fairly fast, so it wont impact gameplay.   The key to that is to keep the criteria simple and small.   It isn’t cycled per unit, but per faction so it’ll cycle through it’s criteria for each faction (each faction has different criteria) and they are listed in order of importance.  The fist to match is the mission that gets loaded to all of that faction affected. 

 Anyway that’s enough for now.  I really just wanted to voice about how it’s ok to release now, and fix the details later.  The rest about the missionizer will be in a forum post where it belongs.   I hope to get working on it asap.   Since it will be a different Mission than the default game one, it shouldn’t destabalize normal gameplay at all (since it wont exist in the default misson file).   just gotta learn some python.