New features since Clonk Rage: Difference between revisions

Newton (talk | contribs)
No edit summary
Newton (talk | contribs)
Line 2: Line 2:


=== General ===  
=== General ===  


New in OpenClonk is the possibility to '''zoom''' in and out. Now, the clonk can be displayed in a proper size, larger than a mouse cursor ;-). Use the scroll wheel on the mouse or F5/F6 to zoom.
New in OpenClonk is the possibility to '''zoom''' in and out. Now, the clonk can be displayed in a proper size, larger than a mouse cursor ;-). Use the scroll wheel on the mouse or F5/F6 to zoom.
==== 3D Rendering ====


[[File:bones.png|right]]Also new is the possibility to add '''3D models''' to be rendered ingame. As opposed to the classic sprite graphics, 3D models are much more versatile: First of all, the models don't get blurry and the animations don't seem edgy when zoomed in. Animations are directly saved in the model, they don't need to be pieced together from single renderings in different animation phases and then exported into a big Graphics.png anymore (goodbye, anigrab.exe). This allows to add a lot more animations than before. Currently, the clonk has more than 100 different animations.
[[File:bones.png|right]]Also new is the possibility to add '''3D models''' to be rendered ingame. As opposed to the classic sprite graphics, 3D models are much more versatile: First of all, the models don't get blurry and the animations don't seem edgy when zoomed in. Animations are directly saved in the model, they don't need to be pieced together from single renderings in different animation phases and then exported into a big Graphics.png anymore (goodbye, anigrab.exe). This allows to add a lot more animations than before. Currently, the clonk has more than 100 different animations.
Line 15: Line 19:


See the [[Artists Guide]] for how to create models that will be rendered in realtime. Our [http://hg.openclonk.org/openclonk-resources/ repository for resources] already encompasses many such models.
See the [[Artists Guide]] for how to create models that will be rendered in realtime. Our [http://hg.openclonk.org/openclonk-resources/ repository for resources] already encompasses many such models.
==== New Controls ====


However, most of the changes we made and are making were and are only possible because we decided to drop the backwards compatibility towards Clonk Rage and created all game content from scratch. This is why the game content of OpenClonk is far from having reached the extent of that of Clonk Rage.
However, most of the changes we made and are making were and are only possible because we decided to drop the backwards compatibility towards Clonk Rage and created all game content from scratch. This is why the game content of OpenClonk is far from having reached the extent of that of Clonk Rage.
Line 25: Line 31:


Overall, the clonk has been made more agile than before: He can not only move and use stuff while jumping, he can also make use of a number of tools that help him scramble around the world - like grappling hooks, rope ladders, the improved shovel and many others.
Overall, the clonk has been made more agile than before: He can not only move and use stuff while jumping, he can also make use of a number of tools that help him scramble around the world - like grappling hooks, rope ladders, the improved shovel and many others.
==== Tools and HUD ====


[[File:Backpack.png|left|200px]]Closely related to the controls is the inventory system of the clonk. Every clonk has a '''backpack''' now, in which he can carry five items (which can be adjusted for any scenario). He can open the backpack and easily exchange any object in the backpack with one of the items in his hand.
[[File:Backpack.png|left|200px]]Closely related to the controls is the inventory system of the clonk. Every clonk has a '''backpack''' now, in which he can carry five items (which can be adjusted for any scenario). He can open the backpack and easily exchange any object in the backpack with one of the items in his hand.
Line 40: Line 48:
{{clear}}
{{clear}}


Since '''all game content has been created from scratch''', the many new or remade tools, weapons, items, buildings, vehicles and animals, rules, goals and environment objects must be mentioned. So actually, the question should rather be, what is ''not'' new? Well, regarding the game content, nothing.  
==== New Game Content and Concepts ====
 
Since '''all game content has been created from scratch''', the many new or remade tools, weapons, items, buildings, vehicles and animals, rules, goals and environment objects must be mentioned. Apart from the objects, we are completely replacing the old graphics, sound effects and textures. Textures for example are not grayscale images anymore which are then colored in the tone of the texture but full-color textures with more variation, making the landscape look a lot better and detailed. New sound effects are collected from various free (creative commons) archives or made by ourselves.
So actually, the question should rather be, what is ''not'' new? Well, regarding the game content, nothing.  
However, we did not just remake the old objects, some new concepts are already visible in the game content. For example, the annoying automatic melee-fight was removed and is now replaced with various melee weapons to be used in close combat. The classic explosives which only differed in the size of their explosion are now being replaced by more specialized mining tools an weapons, such as the dynamite box.
However, we did not just remake the old objects, some new concepts are already visible in the game content. For example, the annoying automatic melee-fight was removed and is now replaced with various melee weapons to be used in close combat. The classic explosives which only differed in the size of their explosion are now being replaced by more specialized mining tools an weapons, such as the dynamite box.
But instead of listing all the new or remade objects here, you should just play the game and see by yourself :-P.
But instead of listing all the new or remade objects here, you should just play the game and see by yourself :-P.

Revision as of 17:42, 15 September 2010

This section is written for all those, who know Clonk Rage and would like to know what's new in OpenClonk. Since the project went open source, quite a few new experimental features have been introduced. In this newest installment of the Clonk series, we've left behind the old shackles and created something more advanced than anything you've ever seen in Clonk.

General

New in OpenClonk is the possibility to zoom in and out. Now, the clonk can be displayed in a proper size, larger than a mouse cursor ;-). Use the scroll wheel on the mouse or F5/F6 to zoom.

3D Rendering

Also new is the possibility to add 3D models to be rendered ingame. As opposed to the classic sprite graphics, 3D models are much more versatile: First of all, the models don't get blurry and the animations don't seem edgy when zoomed in. Animations are directly saved in the model, they don't need to be pieced together from single renderings in different animation phases and then exported into a big Graphics.png anymore (goodbye, anigrab.exe). This allows to add a lot more animations than before. Currently, the clonk has more than 100 different animations.

The renderer loads models in the Ogre 3D format, a lightweight format for 3d models tailored to be rendered in realtime. Models in the landscape are projected orthographically and pictures of objects perspectively. Apart from the basic stuff, the renderer supports:

  • UV mapped textures (including multitexturing)
  • Transparent textures / alpha maps
  • Texture animation
  • Skeletal animation including blending of multiple animations
  • Backface culling
  • Live script-controlled mesh transformations and attachments

See the Artists Guide for how to create models that will be rendered in realtime. Our repository for resources already encompasses many such models.

New Controls

However, most of the changes we made and are making were and are only possible because we decided to drop the backwards compatibility towards Clonk Rage and created all game content from scratch. This is why the game content of OpenClonk is far from having reached the extent of that of Clonk Rage.

The controls have been overhauled completely and are now completely controlled by script. With the new control system, it is much easier and intuitive to control your clonk. For new players, learning the unusual and unintuitive controls of Clonk has always been a huge obstacle to overcome before they could appreciate the bustling gameplay of clonk.

The controls are now completely customizable and can be adjusted in any scenario/mod. The standard controls are based on a well known scheme from many other games: Movement with WASD, throwing, aiming and using tools with the mouse. Space for interacting with objects in the landscape (like entering a building or grabbing a vehicle). The new controls fully utilize the mouse control, giving you precise control over all the items and weapons. The new shovel for example can be used also from climbing or hangling and the clonk just digs into the direction of the cursor while the mouse button is held down. Details of the new controls are explained in the first tutorials in the game.

Apart from the keyboard+mouse control, it is also possible to use a gamepad. However this feature is still experimental and does not work for several gamepads. It is also not possible yet to customize the controls but this is planned in the future. A early version of the gamepad controls were introduce in a blog post.

An extensive documentation of the custom controls feature can be found in the C4Script documentation

Overall, the clonk has been made more agile than before: He can not only move and use stuff while jumping, he can also make use of a number of tools that help him scramble around the world - like grappling hooks, rope ladders, the improved shovel and many others.

Tools and HUD

Closely related to the controls is the inventory system of the clonk. Every clonk has a backpack now, in which he can carry five items (which can be adjusted for any scenario). He can open the backpack and easily exchange any object in the backpack with one of the items in his hand.

There is a big focus on tools in OpenClonk. The clonk needs a shovel to dig, an axe to chop and a hammer to build. In exchange, the clonk can not only carry more than the classic clonk, but he can also use any item: A sword, a bow, a shovel, a musket, a magical staff, etc.. There is no need for special clonks anymore, the abilities of a clonk are defined by his equipment. By making use of the mouse, tools have become more versatile and easy to use.

The new control system goes hand in hand with the complete overhaul of the HUD. The minimalistic HUD was a thing that was repeatedly critized on Clonk.

Now, the HUD is completely controlled by script (rather than controlled in the engine) which allows more flexibility for scenario and mod authors. The default HUD shows all clonks in the players team on the upper edge, all with an energy- and breath-bar right below their picture. This picture shows the actual clonk live, so if he is attacked or drowning, you see it in the picture.

On the lower edge of the screen, the two items that the clonk is carrying in his hands which can be used with left and right-click are shown. Also, all other objects that can be interacted with in the landscape are shown there.

All buttons that are shown in the HUD can be clicked to be used or to be selected and items can be dragged and dropped around the HUD where it makes sense. This feature is also interesting for mod makers.

New Game Content and Concepts

Since all game content has been created from scratch, the many new or remade tools, weapons, items, buildings, vehicles and animals, rules, goals and environment objects must be mentioned. Apart from the objects, we are completely replacing the old graphics, sound effects and textures. Textures for example are not grayscale images anymore which are then colored in the tone of the texture but full-color textures with more variation, making the landscape look a lot better and detailed. New sound effects are collected from various free (creative commons) archives or made by ourselves. So actually, the question should rather be, what is not new? Well, regarding the game content, nothing. However, we did not just remake the old objects, some new concepts are already visible in the game content. For example, the annoying automatic melee-fight was removed and is now replaced with various melee weapons to be used in close combat. The classic explosives which only differed in the size of their explosion are now being replaced by more specialized mining tools an weapons, such as the dynamite box. But instead of listing all the new or remade objects here, you should just play the game and see by yourself :-P.

For developers

Many changes have been made which are interesting for scripters and scenario developers:

C4DT

One tool for the clonk development has to be highlighted: Through a plugin, it is now possible to script and develop content with Eclipse, a very advanced and popular IDE. Since it is just a plugin and not a standalone IDE, C4Script development with Eclipse inherits many features of the IDE's original features and adds a bunch more. Thus, it facilitates development a lot. Features include:

  • Syntax highlighting for C4Script, landscape.txts and INI-like files like DefCore.txt
  • All references to valid identifiers (variables, functions) can be turned into hyperlinks to the declaration location them.
  • Quickly jump to certain object definitions with one mouseclick
  • Context-sensitive content assistance and parameter hints while typing
  • Intelligent auto-completion and -indention
  • A built-in parser finds and warns about potential script errors and warnings
  • A real debug mode for the engine: debug scenarios in the Eclipse debugger

C4Script changes

Apart from this the following big changes have been made to C4Script:

  • The ID of an object is no longer limited to 4 big letters. For example CreateObject(Musket); instead of CreateObject(MSKT);
  • All functions that are working in context of an object have been stripped of their respective object parameters. E.g., write clonk->GetX(); instead GetX(clonk)
  • Some obsolete functions have been removed or replaced. For example FindObject() now works like the FindObject2() from Clonk Rage and FindObject2() was removed. Numbered local variables are gone (use arrays instead) and references have been removed.
  • Many functionalities, like climbing ladders, rope physics, bases, workshop or clonk controls have been written in unitized library objects (referred to as script libraries) which are then included by the concrete objects. This makes it easier to include functionalities of other objects without having to inherit everything. For example, all production buildings #include Library_Workshop to inherit the basic workshop functionality. Also, functionality is moved from the engine into these script libraries. For example the base functionality.
  • A new type called Proplist has been introduced. Proplists are associative arrays with prototype inheritance, like Javascript objects. Objects and Object Definitions are also Proplists now and Objects inherit from their Definition. Local named variables are now properties of the object.
  • ActMaps are stored as Proplists in a property of the Object Definition.
  • DescXX.txt, Names.txt are not used anymore. The name is set in the script and translated in the StringTblXX.txt. A description is only needed for some objects and also defined in script and translated in the stringtable.
  • PlayerControls have been revised. Scenarios and objects can now use and overload arbitrary keys, mouse buttons and gamepad events. The Clonk script defines a new interface (see ControlUse) for object interaction.
  • Variables can now be nil (be not assigned). nil is not equal to 0 or false. For functions, nil can be used to not specify an optional parameter (as it were left out). For example Sound("Water",true,nil,nil,+1) plays the water sound for all players in a loop, at 100% volume (the default) while Sound("Water",true,nil,0,+1) plays the same sound only for player zero. Also, you can distinguish between a function with no return value (returning nil) and a e.g. function returning the number 0. Regardless of if a variable foo is either nil, 0 or false, this statement still logs "yay": if(!foo) Log("yay");
  • #strict is not used anymore. All scripts are considered to be "#strict 2".
  • As usual, some new functions and engine callbacks have been added. Refer to the documentation.