Important Message

You are browsing the archived Lancers Reactor forums. You cannot register or login.
The content may be outdated and links may not be functional.


To get the latest in Freelancer news, mods, modding and downloads, go to
The-Starport

Burn''s Framework 2 - Section 2 - The Project

Here you can find anything related to the Open Source, Freelancer like game project Openlancer.

Post Tue Dec 27, 2005 7:25 pm

Burn''s Framework 2 - Section 2 - The Project

I'm posting this now for a number of reasons but also in direct responce to using or not using Source Forge to host this project. I've spent several days researching this so I hope its helpful. There is plenty of stuff I can add but I wanted to keep the section short due to the length of the rest of the file (now passing 25 pages). By posting this in its own thread now I can add more resource links or other ideas I left out due to the section length. So here it is, I'll add more soon...

Change Log:
1.3 - Added Openlancer Extreme Client product item description.
1.2 - Read through the full text and corrected mistakes and added some clarification, added a few links, suggest re-read before posting a reply.
1.1 - Completed posting and removed sig from first post.
1.0 - Initial Posting

Note: The edit tag on this post and the change log cover the entire framework section of this thread. If I edit something now it will be noted here.


Edited by - MegaBurn on 12/27/2005 9:03:49 PM

Post Tue Dec 27, 2005 7:26 pm

Section 2...

Openlancer Production:
This is a massive project and I have a few suggestions for how to organize it. Breaking this down into “phases of development” is probably the best system, this can be abstracted to any numbering or naming system you want (e.g. phase 1, 2, 3... or pre-alpha, alpha, beta, RC, R1, R2, etc... or goofy nicknames).

- Planning: The stuff we're doing now. The game design, technical design, and framework aren't the only areas that need to be mapped out in extreme detail. The storyline does too. Setting up project support systems is also important but that seems to be mostly covered, except for maybe a CVS server which you can get from Source Forge by creating a new project (its free, includes forums, CVS, bug tracking, file hosting, web hosting, listing in a public project directly, and a few dozen other features). Only other thing is to identify and start pursuing resources you will need later on, namely access to a high speed commercial web server with a block of high range ports and permission to run your own server software (the global server). You also need several highly detailed task lists, something like development team tasks so you know what you have to do, community tasks for anyone to just jump in to help with (e.g. writing), and special tasks for any professionals that hopefully offer to help (e.g. networking, AI). And finally, a set of mile marker objectives to help keep everyone motivated.

- Proof of Concept: I think it goes without saying that at this point the project needs to prove itself before it can gain more wide spread support. The best way to do this is by creating a mostly functional alpha build and release the source, content, some documentation, and a few dozen screen shots to the community. Hopefully then the project will get more attention and more overall support. This could very well take months to complete but again does not have to be fully functional or even stable. I think a heavily scripted well polished set of two solar systems should do it at minimum. It will also give you a litmus test on m$, I'm sure they're paying attention to TLR and if they try to shutdown OL it will be at that point (will require removing anything they attempt to lay legal claim to from the game design). After this proof of concept is released it will be time to split the project up into the teams outlined below.

- Full Development: Strip out the proof of concept demo stuff and push full force for version 1.0. Hopefully with some heavy support from the rest of the TLR community there should be no shortage of programmers, artists, talent, and general support. This thread is intended to cover most of this process in varying levels of detail. I should be back to work on the game engine at some point in here.

- Release 1: Setup the global server, technical support, detailed website, final documentation, and anything else left. At this point the game should be something roughly on par with Freelancer with mostly static core game systems. General work should focus on resolving bugs, adding a finite details to documentation, and creating tools and utilities.

- Advanced Systems Planning: Design dynamic systems, database systems, web/CMS systems, and general upgrades to replace or build on the static systems used in the first release of Openlancer. This is some of the really interesting stuff thats on the forefront of game design and development, and indeed the forefront of general software development. These are extremely complex state-of-the-art systems. We can do the bulk of this ourselves but help from professionals would be extremely helpful, so it might be a good idea to add a advanced planning job list to that effect.

- Advanced Systems Development: The process of implementing the planned systems, this needs to be split up into multiple predefined Openlancer releases. For example, Openlancer release 2 could implement a basic database system, basic dynamic item creation could be implemented with dynamically adding sets of static items, and a rather basic web interface system. Then release 3 could implement a far more advanced database system, fully dynamic item creation (without static items), and a highly advanced web interface system complete with support for all major CMS, forum, and other web systems.

- Polishing and Upkeep: The process of redeveloping the entire game over the course of several Openlancer releases to fine tune, perfect, or otherwise improve everything in the game engine. The focus isn't adding content, thats up to the mod developers but perfecting content creation and management systems should be a major focus. At some point during this process a final release of the game should be released and everyone can move on to other projects. Another thing to consider is porting Openlancer to all possible platforms, including: Linux, BSD, OSX, Solaris/UNIX, QNX, BeOS (e.g. yellowTab), X-Box 360, Play Station 3, and possibly creating a standalone Linux based “live CD” version. Yet another option is content translation, this can be done via a translation SDK and a large wiki add-on. The translation SDK could include an interface for “developer supervised automated translation” using a direct language to language translation system (might even be able to use Google or some other web based system).

- Final Release: A general target year should be set for when the project will end. I think three to four years will be enough time.

Suggested Openlancer Teams:
Basically turns the Openlancer project into “wrapper” around the different parts of this massive project to make it more manageable. Each team releases its own “products” that are either used by the other teams or by players, admins, or other open source projects. Each one is a self contained project with its own team members, project web pages (hosted on the main OL site), and other dedicated resources. All of these teams may sound like a lot of people but each team will probably consist of two or three people and each team member will probably be on two or three teams. Once this project gets rolling I doubt there will be any problems filling all of the job positions, there might be a problem with managing the project though. Good project management will be critical to the success of this project and over sized egos are a common cause of death for projects like this, keep that in mind.

- Management Team: Acts as a sort of “board of directors” for the overall project. Sets guidelines, mission statements, and general objects for the other teams. Maintains a listing of job openings, news, announcements, and other general information. Defines individual products released by all projects. Acquires resources for the teams, including web hosting, finding middle ware systems, requesting resources from other open source projects. Allocates community resources, volunteers, and donated resources (including funds, commercial products, and professional time) to work on the different teams. Also handles any legal issues that come up.

- Support Team: A cross between glue that holds the different teams together and lube that keeps everything running smoothly. They're tasked with maintaining and moderating the project website, team websites, forums, communication directory, wiki, resource links, and other stuff. Also manages all credits listings for all publicly released products. Most of this stuff can be done by a few resourceful and responsible people who don't know how to work on the more technical or artistic stuff.

- Planning Team: Works with the entire development team and the community to create game design, technical design, story design, and other documentation used by other projects. The team members are mainly designers and technical writers (like myself) that draft documents for the Management Team to be given to the other teams. Specific products include: Master Game Design Document, Story Design Document, System White Papers, Technical Design Documents for each product, Manuals for each product, SDK documentation, and other stuff. The bulk of the work will be pulling information from the project wiki to create document files to include with projects and for individual download. I strongly suggest that all members of this team learn how to use DocBook or another system that uses style sheets and content classification (Media Wiki supports this to some degree but requires scripts to process the data).

- Programming Team: Develops the game engine, MP server, global server, OL manager and modules, and all other tools/utilities. The network engine will probably need to be coded by a professional or if given enough time I might be able to do it.

- Scripting Team: Implements all scripted behaviors, campaigns, missions, and develops static place holders for the dynamic systems that will be implemented later. They will have to work closely with the programming team to develop the script functions.

- AI Team: Develops the static AI for the first release and then designs and develops the dynamic AI system. AI can make or break game play, while this isn't more or less important than any other aspect it is one of the most underrated aspects of game development. It's also one of the most complex aspects of game development.

- Graphics Team: Creates all graphic content, including models, textures, icons, GUI graphics, website graphics, and other graphic content. Some of this may also involve working with the TLR community to use and port mod content to Openlancer.

- Audio Team: Creates all audio content, including sound effects, music, and works with voice actors to create spoken dialog. They also have a part in developing the VoIP and TV/radio systems. When the text-to-voice system is developed they will have to work on training the system to make the existing and possibly all future dialog sound as natural as possible.

- Writing Team: Works with the community via the wiki to create all text content. The team members will have to outline all content on the wiki for community members to fill in with details. Will also have to work with the development team to help implement the dynamic dialog system and AI chatter bots.

- Solar Design Team: Develops all solar systems, planets, bases, stations, and solar objects. Works with the graphics, audio, scripting, teams to develop solar system content. Sounds simple enough but we're talking in excess of a hundred systems. When the dynamic creation system is implemented they will also create the templates for dynamically generated solar systems, planets, stations, bases, and stations.

- User Interface Design Team: Develops game play modes and creates highly detailed concept material to help the graphics, audio, programming, and scripting teams create the content for the user interfaces. They also create the default HID control maps, Neural Net system, game menus, and most of the TV/radio system. I can help with some of this stuff but its a large volume of work.

- Web Development Team: Creates project websites, CMS modules, forum plug-ins, “OLmin” system, and all other web related systems. Basically web designers, PHP programmers, CSS designers, SQL developers, and maybe perl programmers. I can help with most of this stuff but its a large volume of work.

- Quality Assurance Team: Glorified beta testers. They find bugs, rough spots, and problems in game content. They also need to test the game engine on different hardware systems. Like the Support Team, this is another area most people can help with if they don't know how to do the more technical or artistic stuff. They'll have to run the game engine in debug mode and send error logs to the development team, other than that their jobs are mostly non-technical. The planning and development teams should work together to write a manual for these guys.

- Translation Team: One or more permanent team members that seek out volunteers to help with translating game content. Most of this will probably be maintaining a wiki pages but could range into working with the audio team to translate audio dialog and possibly train the text to voice system when its implemented.


Openlancer Project Resources:
A lot of resources will be required to keep this project and all of the content organized. Some of my suggestions are probably unconventional but should work. I know you guys already got a web host, I'm not sure what that includes but assuming its a LAMP based system I suggest the following:

- CPG-Nuke: People shy away from *nuke CMS's because they're so common but there is a reason for that, they're damn useful. Some also have a bad track record for security but CPG-Nuke is generally considered more secure than other CMS's and even most forum systems. It includes phpBB forums, member management (access control), news system, photo gallery, private messaging, sponsors/affiliates, group management (access control), extensive statistics tracking, search system, theme support, support for multiple languages, website administrations system (with a database manager).

- CPG-Nuke Modules: There are a wide range of downloadable add-on modules available, including: Content manager (HTML pages), downloads system, work board, user blogs, web links, IRC client, web chat, user profile pages, personal user pages (personality module), RSS feed manager, newsletter, Team Speak display (not a TS client), FAQ, encyclopedia, “never ending story” system, calender, and other stuff. There is a CVS module but I can't find the download for it. There is also a wiki system but its substandard and MediaWiki can be built in to some degree (can have a shared user database).

- CPG-Nuke Blocks: There are a wide range of add-on blocks available, including: Topics, polls, shout box, RSS feeds, forums, Goggle search, and others.

- CPG-Nuke Usage: Aside from being a general community portal we can use this directly for development. The work board can track everything from the entire development project to the development of individual items (e.g. ship models or features). The news system can be used for general news and design documents. The photo gallery can be used for some of the graphics content. The forums and download modules can be used for managing models and audio content (unless something else can be found). Most of the other stuff is self explanatory.

- Media Wiki: One of the most popular and probably feature rich of the wiki systems available. It's the system developed by the Wikimedia Foundation and used on Wikipedia. Great stuff. Usage should be fairly self explanatory...should manage all text content. There are a large number of Media Wiki Extensions available but I'm not familiar with them. I've haven't ran a wiki before so some research will have to be done to figure out how to make the most of it. I know it can be setup to use the same user database as CPG-Nuke via the phpBB user database mod but I'm not sure what else can be done to integrate it into CPG-Nuke. I also know the text can be dumped to a number of different formats that can be imported directly into game data files (both INI and databases), this will require some complex scripting (and some trial and error). The wiki needs to require user registration for adding and/or editing content to control vandalism, to make sure everyone is properly credited, and because it will shared the same user login details as the CPG-Nuke site.

- Subversion: Source code repository and revision control system, Subversion (SVN for short) is a replacement to the old CVS system and adds a large number of new features. TortoiseSVN is a windows SVN client that integrates into windows explorer and AnkhSVN integrates into VS.NET (warning, its in alpha and should be used with caution). This is kind of up to the web host unless someone has a reliable server on a solid broadband connection to run the SVN server. CVS is fine but not great either, the only major benefit is the wide range of web based clients available. SVN is based on WebDAV which can run on a number of servers but mainly on the Apache 2.x mod_dav module, there are other WebDAV based systems available if there is some problem with SVN. For that matter you could always use Source Forge to manage source code, they use a CVS server and ViewCVS for a web front end. You need to come up with something though, a centralized source code repository with revision management is critical. This system should manage ALL source code, including ALL C++, C#, VB, game script, PHP, and any other source code. Note, this has nothing to do with the game data database system I'm designing, this is just for source code management just like the wiki is for text management.

- Groupware: I'm not sure if you need groupware or not, if you do its easy to setup and there are about a dozen different systems available. See Open Source CMS for a listing of groupware packages with reviews and demos. Basically the idea is to provide a closed/private common project website with team member directories, contact information, chat, private message boards, file manager, news, task management, centralized document posting, and just about anything else within a secure website. This can also include a private wiki, SVN/CVS interface, and other content management but that stuff should really be open to the whole community. I have past experience with “More.Groupware “ but cannot recommend it (I think its dead anyway, never hit ver 1.0), eGroupWare (feature rich) and phpCollab (integrates into some *nuke CMS) and dotProject (seems to have slightly better project management) all seem to be well regarded. Having a private system just for project members might be nice but you can also create private forums on phpBB, then keep everything else open to the community (and public).

- Graphic Content Management: I can't find anything free that can effectively maintain and manage a centralized graphic content repository with revision control (or at least a meta version listings with notes). I will continue searching but worst case scenario is using a mix of the photo gallery in CPG-Nuke and the SVN server. There are some commercial systems that would work rather well but I doubt anyone is about to buy a copy and publicly using pirated software is just asking for trouble.

Note: I formally requested that TLR add a DAM (digital asset management) server to TLR for community mod and game projects. I suggested using a modified version of SVN as the basis for the system so it should have no problem managing source code or other text content. I tend to doubt they will honor the request but you never know...

- Audio Content Management: I can't find anything free that can effectively maintain and manage a centralized audio content repository with revision control (or at least a meta version listings with notes). I will continue searching but worst case scenario is using the SVN server. I'm sure there are some commercial systems out there but I didn't find any.

- Product Packaging: Use 7-Zip (free open source) for ZIP, TAR.GZ, and self extracting 7-Zip archives. 7-Zip is better than Zip (and most other archive formats) but Zip is the most commonly used archive format so 7-Zip should only be used for self extracting archives. For windows installers use Inno Setup (free but not open source) and/or NSIS (free open source), Inno Setup is better than NSIS (Nullsoft Scriptable Install System). Most other OS's come with installer or package creation software (e.g. RPM for Linux). For document formats I suggest only supporting the Open Document Formats and Acrobat PDF format (both are ISO standards). Then suggest that people use OpenOffice.org and their choice of PDF viewer, or another standards compliant program to read/edit the files. Screen shots need to be in JPEG format for the CPG-Nuke photo gallery auto formatting feature to work correctly (e.g. thumbnail generation, I think it supports PNG too but older versions of IE don't support PNG because of m$'s general half-assedness). For audio formats I strongly suggest using Ogg Vorbis (replaces MP3), Speex (low bitrate, good for VoIP), maybe FLAC (lossless audio), and XSPF for playlists (XML based open format).


Openlancer Products
This may sound like a huge array of products but I think its all realistic for a large project that will take a few years to complete. Ports and translations are just different versions of each product, not different products. Most of this stuff is described in detail in this thread.

- Openlancer POC: The first proof of concept for the game engine.
- Openlancer Client: The game itself.
- Openlancer Server: The MP server package, includes server tools.
- Openlancer Master: The global server package, includes website tools.
- Openlancer Web: Includes CMS modules, forum plug-ins, fan site kits, SQL databases, help desk, server stats, etc...
- Openlancer Manager: Includes both the Manager and Module Loader Programs.
- Openlancer Manager Modules: Packages of modules and individual module downloads.
- Openlancer Demo: A scaled down demo versions of each Openlancer Client release. Practically this is just stripped down client in a smaller download with a self extracting loop back file system.
- Openlancer Live: A “Live Image” for DVD's and flash memory units based on the Linux port of the game and includes all Openlancer products, boot menu should include: boot to client, boot to server, boot to X with tools, system configuration menu (generates boot command line), Install to HD, and boot to command line/failsafe. The HD installed version of this will have the lowest “OS overhead” and give the best possible game engine performance (assuming there are no hardware issues).
- Openlancer Extreme: Customized versions of the client that use proprietary drivers for direct hardware access instead of using DirectX or open libraries. This will give anywhere from 25% to 50% increased rendering performance on high end gaming systems. It's hard and time consuming to implement but by adding this we can leave the door open to “extreme gamers” that know how to program, they can get involved to develop these extreme editions of the client. Note: Once these extreme editions are dreamed stable they can be shifted into the main Openlancer Client product release.
- Openlancer SDK: Different SDK's targeted at different tasks, including: content creation (modding), scripting (modding), game engine development, utility/tool development, web development, porting, translation, and a full SDK that includes everything.
- Openlancer Content Packs: “Official mods” for general players and examples to help modders learn how to work with the game engine. This can include repackaged mods with extra team created content. If mods are hosted on the Openlancer website a hosting condition could be added that submitted mods must be released under GPL with the understanding that the content can be freely used by the Openlancer project and/or other mod projects so long as proper credit is given to the author(s). Other content packs can include new campaigns, missions, unique characters, ships, systems, etc...
- Openlancer Documents: Dozens of different files including all design documents, manuals, star charts, item creation charts, etc... Source code can be rapidly documented with Doxygen (free open source).
- Openlancer Resources: Packages of game content, source code snippets, plug-ins, libraries, and game engine systems packaged to be easy to plug into Realm Forge GDK and other game engines. All to help support and promote open source game development. There may be some objections to this at first but remember that the game engine is built on open source middle ware and as such something should be given back to the open source community.
- Openlancer Source: Source code and raw content used in the creation of all products as individual item downloads and as a single massive all in one download.


Openlancer Services
General service offerings to support Openlancer.
- Openlancer Master: Global listing of all MP servers (excludes MP servers using a different master server, like large mod communities and total conversions).
- Openlancer Chat: Global chat via master server, includes P2P VoIP linker (not direct connect like a TS server, e.g. not a data relay, just a sort of automatic address book with “click to call” style support)
- Openlancer Media: Global listing of all radio/TV channels (aims at creating a 24/7 media network with this server as the “TV Guide of Openlancer”.
- Openlancer Patcher: Global game engine update server (patches mirrored in website downloads).
- Openlancer Update: Global game data update server (updates mirrored in website downloads).
- Openlancer Events: Global event listing (listed on both the OL master server and website).
- Openlancer Membership: Users can self register on CPG-Nuke to use the various website resources or get involved with project development.
- Openlancer Links: Affiliate listing for MP server communities, clans, mod teams, development teams, other open source projects working with Openlancer, and maybe other games.
- Openlancer Help Desk: A FAQ, troubleshooting, knowledge base, support forums, and trouble ticket system to provide a full range of technical support to all registered Openlancer players, admins, modders, developers, and webmasters. This is just a repackaged help desk system with some extra “canned data” that specifically covers Openlancer in addition to the normal array of PC, windows, and hardware support information. Our “official version” will be built into CPG-Nuke but a standalone version will be available as a downloadable product.


Edited by - MegaBurn on 12/27/2005 9:02:35 PM

Post Tue Dec 27, 2005 7:27 pm

-

Post Tue Dec 27, 2005 7:29 pm

Thats it, hope its helpful. Sorry it its a little weird out of context with section 1...


-Burn

"Only the dead have seen the end of war"-Plato

Return to Openlancer