|
From: Seth Y. <sya...@gm...> - 2005-08-27 17:21:39
|
Hi, I have a little plan to kick start the coding side of BoL development. 1) Start with a fresh CS project template. The current code is obsolete, and is hard to develop with. It makes it rather difficult to add new functionality. Additionally, there are some old things that can be removed and others that are not needed. Specifically, BWS is obsoleted by the CEGUI wrapper and the housebuilder is not something that is particularly useful to our project, seeing as a house is better created in a 3D modeling package. The project has been through several years of joining/departing members. Therefore, it is not unexpected that some parts of the code are obsolete and do not follow the best practices. My suggestion is to start a new CVS module and reuse only parts of the code that are needed. The rest will be left behind in the old module. That said, I don't believe that there are many parts of the old code that are useful. Since this plan explains an approach that uses CEL extensively and some new plugins, it is highly unlikely we'll use very much of the old code. As for the name of this module, I think "bol" would be a good choice, as this is how most of us refer to the game (and we wouldn't have to worry about case sensitivity). If possible, the old module can be renamed to "bolold" or similar. 2) Start making the GUI using CEGUI (http://www.cegui.org.uk/). Swedishcoder and I have just finished the CEGUI wrapper plugin, which integrates the CEGUI toolkit into CS. It is not in the Crystal Space CVS yet, but will be shortly. CEGUI is a good choice for our game GUI because it is mature, flexible, and does not require us to spend extra time developing one specifically for our game. Here are the screens that we need: 1) Main screen - New Game, Load Game, Options, Quit 2) New Game - This is the character creation screen. 3) Load Game - Allow the user to browse through saved game files by name. 4) Options - Controls, Graphics, Audio, Game screens At this point, the GUI will be there, but not yet functional (except for Quit and the buttons leading to other screens). 3) Implement new game screen. Basically, enter character name and race. This will be expanded later. Hitting the Create button will create a new CEL entity representing the character with appropriate property classes (inventory, pcmesh, characteristics, actormove, pclinmove, etc). Then an intro can be played (this is for later, there's no need to wait until it's ready). 4) Place player into starting zone and use zone management. We will use the CEL zone manager to handle loading/unloading of zones. For more info, read the Zoned World Proposal discussion. At this point, the player should be able to walk around and go freely about the world with the zone manager handling all loading/unloading. 5) Implement saving and loading using CEL serialization. The easiest way to implement saving and loading is to use CEL for everything that matters to the game state. Then these objects can be serialized and deserialized to a file to save and load the game state. At this point the player can walk around, and save and load their character. 6) Create in-game GUI. Create a small panel of buttons that can be used to access different character-related windows: Stats, Inventory/Equip, Spells. Create health and mana bars. Create any other HUD items we need. 7) Implement stats. This will require us to go back to the character creation screen and add a GUI for stat allocation. Then, on creation, these stats will be attached to the player entity. They will be saved appropriately. We will also implement the stats window. 8) Implement inventory dragging/equip. Make the functionality to drag items from the inventory to different slots and to equip weapons and armor. Use Cal3d sockets to attach equipment to player (through CEL). ---------------------------------- From here on, it is not so straightforward, and we need more discussion, but I list these steps anyway, in increasing order of complexity. 9) Implement NPC dialogue system. Make an NPC dialogue system using Python scripted CEL behaviours which load the dialogues from files. 10) Write combat system. This is a core part of our game and needs some discussion before we get to implementing it. 11) Write spell system. This can be added onto the combat system. Also, provide functionality to the Spell window. 12) Write quest system. Another core part of our game, and this one also needs some discussion. Ideally, we can use the CEL quest property classes and extend them with our own propclasses and behaviours if necessary. ---------------------------------- The BoL editor: This should provide editing of all game systems in BoL. It will be developed as each functionality is added to the game that must have an editor. It should include: 1) NPC dialogue editor 2) Quest editor 3) Spell editor 4) Entity placement and propclass assignment 5) Behaviour editing It will not include map editing, which will be done in a 3D editor, such as Blender. ---------------------------------- Once we have done the first few steps, we will already have a nice base for the more complex functionality that will be added later. I propose that we make an alpha release as soon as we finish the basic steps to attract new developers and artists. Hopefully this release will have some nice-looking art that the player can walk around through. Ideally, it would include the NPC dialogue system to make it more interesting. From there on, we can release new versions for each major system we add. Then, the releases will be primarily art- or game-related, and for code, mostly bug-fixing. Any comments or suggestions are welcome, of course. Regards, Seth |