Development: new engine: levels, items, player, tutorial, class diagram, more
The work on the next Castle Game Engine version continues :) Looking at the size of the improvements, next version will deserve the new major number 4.0.0 (even though last version was 3.0.0). We have almost finished new engine features planned for the next version, and we have a lot of new documentation.
Diagram (as a text file...) of the most important "Castle Game Engine" classes is available.
I may try to squeeze this into a real image (maybe just the important boxes, and add the text on a normal HTML page). If you have experience with some diagram-drawing tools (like Dia or other open-source tool) I would appreciate contributions here (send them through forum or e-mail to Michalis).
"Castle Game Engine" draft tutorial is getting larger and larger (15 chapters now).
Short documentation for index.xml files used by "Castle Game Engine" to define levels, creatures and items is also available. Tutorial and classes diagram describe in details how these index.xml files work. People interested in creating MODs for your games will appreciate them, as they allow to add levels, creatures and items by simply adding subdirectories to game data.
New engine units since last news:
CastleLevel
unit to find game levels (index.xml
files), load them, scanning 3D level file for placeholders defining initial creatures/items, and integrating with player.CastlePlayer
unit to manage a central player object, with an inventory, footsteps sound, swimming and so on. This unit will probably shrink a little in the future, as most of it's functionality should also be available for creatures.CastleItems
unit to define items (things that you can use in a game, like a sword or a life potion or a key). Item is a TItem
instance, that refers to a corresponding TItemKind
instance, referenced by TItem.Kind
. This is similar to how you define creatures (see previous news post about CastleCreatures
unit), in that we have a separate class for an item and for item kind. A little complication here is that TItem
is not a 3D object (it cannot be directly added to the level), instead you have to use TItem.PutOnLevel
to get TItemOnLevel
instance.CastleInputs
unit, centralized keymap handling, detecting key conflicts and such.Other changes, noticeable in view3dscene or next "The Castle" data:
beamWidth
, and gives precise conversion from VRML 1.0 dropOffRate
-> VRML 2/X3D beamWidth
. See engine internals doc about OpenGL rendering (sorry, just DocBook source now) for details.writeln()
can be used in games to make notifications. Also CastleScript shortcut()
is now available, to show user the value of some key shortcut. See CastleScript SVN docs for details. This allows "The Castle" levels (and future Castle2) levels to make notifications using more standard X3D mechanisms: they now use ProximitySensor
+ CastleScript to show hints, instead of our custom <area> invention. See e.g. cages level X3D source to see how it looks like.examples/3d_sound_game/lets_take_a_walk
uses CastleLevel
, as a first demo (besides the castle1 game).Oh, and since I just don't have any interesting screenshots for this news item (mostly code changes, interesting for developers...), the side of this news post contains just some best movies from the previous news in this year, possible thanks to Jan Adamec (RoomArranger, 3D mouse, SSAO) and Victor Amat (water with caustics). Thanks again!