Not logged inOpenClonk Forum
Up Topic Development / Developer's Corner / Release 5.0: Second try
- - Date 2014-09-28 21:10
Parent - - By Sven2 [de] Date 2014-09-28 20:41 Edited 2014-10-04 23:06
Let's get something moving for the release again. Stuff that is release blocking and people could volunteer for in bold.

Bugfixes: Release blocking bugs in the bugtracker - All done!

Publish news text as written by Maikel

Not ready for the next release, but not release blocking so it's postponed for now:
* Storyline for Dark Castle to finish the story across the first five missions.
* ala's music - it's missing music fading, a custom installer and some extra scripting
* Settlement league setup. This is all server side and can be done after the release.
* update mechanism transferred to new league server. needed for subsequent updates.
* sound ambience rework
* Heavy resources
* New controls
* Custom UI
* New tutorials
* Achievements in parkours
* Difficulty settings and achievements for all worlds
* Remaining storyline after dark castle
* Runtime join currently disabled by default anyway
* Missions.ocf\Journey.ocs - first mission to begin storyline. Not finished yet.

Finally: Press the release button.

So, anything else I missed?
Parent - By Maikel Date 2014-09-28 20:44
The first 4 Worlds and Gem Grabbers are done, but can have some optimization with regards to the map and difficulty settings.

Krakatoa and AcidGoldmine don't have the settings yet and will require a bit more work, but this is not release critical.
Parent - - By Clonk-Karl [us] Date 2014-09-28 21:03

>  But Updates / Version check needs to be looked at. I don't know if we have updates at all.

Updates are usually generated only if no files have been removed since the previous release. Otherwise, those files could not be removed with the update mechanism. Anyway, having updates is maybe not so important since OpenClonk otherwise just downloads the full installation package, right?

> Need to check that the installer works properly.

I can add an option to the release interface which creates the installer (and updates, if any), in the same way as they would be generated for the actual release, and make them available for download "privately", so they can be tested before the actual release.
Parent - - By Sven2 [de] Date 2014-09-28 21:10
Private installer would be really good. We could then offer those as release candidates.
Parent - By Clonk-Karl [us] Date 2014-09-28 22:24
Okay, I have added a "dry release" checkbox to the release interface. Using that revealed that at the moment updates from version 5.4.1 are generated, but not from earlier versions.
Parent - By Sven2 [de] Date 2014-09-29 17:55
Version is cleared; thanks Guenther!
Parent - - By Maikel Date 2014-09-29 20:47
It would be good if K-Pone could be added to the Credits picture maybe under the section Art and Content, he created three nice songs and we therefore finally have some music.
Parent - - By Sven2 [de] Date 2014-09-29 20:49
Does anyone have a source file for the credits picture?
Parent - By Sven2 [de] Date 2014-09-29 21:06 Edited 2014-09-29 21:45
OK, I can edit it. K-Pone, can I put your real name there? What is it? :)

Edit: Added!
Parent - - By Clonkonaut [de] Date 2014-09-30 12:27
I'm currently fixing wheat. I'm on it, so to say.
Parent - - By Sven2 [de] Date 2014-10-03 00:23
Any progress on this? If not, we could just remove it from Crash Landing for now if it really does make the mission unplayable after a while.
Parent - By Newton [de] Date 2014-10-03 00:33
Parent - By Clonkonaut [de] Date 2014-10-03 22:45
I need to get the graphics right somehow. Bla.
Isn't it the one way to replenish health in Crash?
Parent - By Maikel Date 2014-09-30 12:42
Lots of German translations in the Worlds folder are missing, but the English strings are still subject to change ...
Parent - By Sven2 [de] Date 2014-10-02 21:16
Worlds: German translations done.
Parent - - By Sven2 [de] Date 2014-10-02 21:18
League: Update mechanism should be transferred from boom server to It's not release blocking though because we don't need it for this release yet (only for the next release). It also looks like it should be relatively easy to transfer the code to the new league.
Parent - - By Newton [de] Date 2014-10-02 23:50
The code for registering a new update (called by the update script) is in here
The former can just as well reside in a separate script (separate from the league code). I'll take care of that in any case.

You just have to look at the update procedure for the game. It's quite simple as you say:
Additionally to the usual information Clonk sends to the masterserver for listing the games, it sends its version and its platform of the game. The masterserver lists it's current version as Version and an UpdateURL in the reply.
The code is, also, in the above file.
Parent - By Sven2 [de] Date 2014-10-02 23:55
Yes I've seen this. As I said we don't need to do anything for now, because it should still work for boom and only the next update will need to run from
Parent - - By Newton [de] Date 2014-10-02 23:58

What about this bug? Günther wouldn't be able to play for example.
Parent - - By Sven2 [de] Date 2014-10-03 00:08
Well, he can play. Just not in league.

So I wouldn't consider it release blocking.
Parent - - By Newton [de] Date 2014-10-03 00:12
I mean, the league acts as a master server as well, no?
Parent - By Sven2 [de] Date 2014-10-03 00:13
Yes, but only league (i.e. ranked) games need the signup.
Parent - - By Newton [de] Date 2014-10-03 00:11
As boom will be replaced by league, I wonder if there is a simple way to get a listing of the current games on the home page (scroll down)? Or, any other cool info from the league - like who's first or something, like on back then.

Otherwise, I would just remove it.
Parent - - By B_E [de] Date 2014-10-12 18:44
I could look into writing a script to fetch some information from the league db, similar to old Has the league been open-sourced yet?
Parent - By Maikel Date 2014-10-12 21:08
No it has not, however there is a private repos you can be given access to. There is probably also room for lots of improvements in the normal league interface.

Maybe ask in IRC for access with Isilkor.
Parent - By B_E Date 2014-11-24 23:02
Update: Clonkspot has opensourced the Masterserver now - I haven't had any time to look into it too much unfortunately, but a while ago I built Sulphur (on GitHub/Packagist), a library for parsing the Masterserver output. It should be quite trivial to at least build a current games list, might need some caching though:

// fetch masterserver response
$response = Sulphur\ResponseFactory::fromUrl('');

// count all running games
echo count($response->where('State')->is('Lobby')).' game(s) are currently waiting for players.';

// iterate through all games currently in lobby
foreach($response->where('State')->is('Lobby') as $reference) {
    if($reference->Game !== 'OpenClonk') {
    echo $reference->Title.' is now open!';

The library currently doesn't parse the subfields, so player names can't easily be extracted. In case there's interest I could build this though.
Parent - By Maikel Date 2014-10-02 21:46
Tutorials have been tested: gamma has changed to worse in tutorial 4 in the time object and this bug is annoying as well.
Parent - - By Newton [de] Date 2014-10-02 23:53

> Installer: We've had some files removed (Settlement.ocf?) and others added. Need to check that the installer works properly. Maybe the installer needs to remove .ocf files of old installations manually if you just install over the old version.

I'll take care of that tomorrow.
Parent - - By Newton [de] Date 2014-10-03 16:52
Parent - By Newton [de] Date 2014-10-03 18:49
and tested the install. It removes Settlement.ocf
Parent - By Sven2 [de] Date 2014-10-02 23:58
Savegame and tutorial testing done; bugs are in the bugtracker.
Parent - By Maikel Date 2014-10-03 13:56
[14:55:28] Waiting for last league server reply...
[14:55:28] Sending game result to
[14:55:29] Sending game result to
[14:55:29] Sending game result to
[14:55:29] Sending game result to
[14:55:29] Sending game result to
[14:55:29] Sending game result to
[14:55:29] Sending game result to
[14:55:29] Sending game result to
[14:55:30] Sending game result to

and the game hangs

When aborting a league game.
Parent - By Newton [de] Date 2014-10-03 18:17
Use the "Target Version:" field in the bugtracker to mark any release blocking issues.
Parent - By Sven2 [de] Date 2014-10-03 18:41
So I've gone through the changelog, removed all bugfixes and tried to collect the most important stuff into paragraphs for the news posting:

New stuff

Finally, music has been added! K-Pone has contributed three exciting pieces which you can hear in the game if music is enabled (Press F3 to toggle music). Under the hood, our sound system has been migrated to OpenAL and big plans are in progress to improve the music even more(link to ala's forum posting).

The league has opened. Compete online for ranks and play against the best of the best. Just press the league button when hosting a game to sign it up to the league server, then use your forum username and password to join. If you prefer cooperative play, the settlement and adventure league are also soon to be opened.

For those who rather play offline, achievements (link blog posting) have been added. Achievements are little icons beside the scenarios which you can earn by playing through scenarios. In some worlds, you can get special symbols for finishing them in harder difficulty and some missions contain special icons unlocked by finding secrets.

We've also added new scenarios: The Raid, Deep Sea Mining and Treasure Hunt (link blog postings) are beautifully designed new missions especially targeted at new players. Chine and Flooded Veins are two new worlds which can provide a challenge for the more experienced Clonkers. Finally, Fight for Gidl (link to blog) is an action-packed, cooperative scenario where you defend against waves of attackers.

Some new objects can be found in the scenarios: Underwater you can now find corals as well as fish both peaceful and evil. To secure your settlements, you can now also build basements available in all scenarios in the worlds folder.

Improved stuff

We've started a big overhaul of the missions folder by connecting the scenarios with a thrilling storyline. The hero is sent all over the world of Openclonk in a great endeavour to kill the evil king. So far, the first five missions have been integrated into the story but more are yet to come.

The worlds folder has also been reworked significantly. Most worlds got parameters to adjust difficulty and map size before the game so both rookies and experienced players can enjoy these scenarios. Maps have been improved using better dynamic map generation and features such as regrowing gems in the Gem Grabbers scenario. Short intro sequences have been added to introduce the game goals. Goals have been made more interesting in Gold Rush and Iron Peak. Finally, player knowledge and base material have been improved in all the worlds.

Additional gameplay improvement has been targeted especially at settlement players. For example: You should no longer be afraid of solid, single pixels as they're now removed before you can get stuck on them. Acid now corrodes coal and firestone. Snow and ice can be used to melt loam. Pumping pipe heads shouldn't get stuck any more. And many more...

Attentive players will also notice some work on cosmetics. For example, ice and gem sounds have been tweaked and smoke graphics reworked. If the cool graphics run slow for you, there's a new option to skip graphics frames if the game is lagging especially useful in internet games.

...and of course, as usual we've done lots and lots of bugfixes.

Changes currently not in this list:

* The installer now deletes some obsolete files
* Add option to link Boost dynamically

* added pump knowledge to golden mountain

* HeartOfTheMountain: Starting platform area increased; Spawn clubs instead of swords; Do not kill clonk on Ctrl+F9
* Tweaked VolcanoEscapeEx: A bit harder in the end. Volcano doesn't leave as many gaps.

* Add a few more things to the player knowledge in the settlement tutorial.
* In the settlement tutorial tell players to keep holding down the mouse button to chop trees.

* Improved information of SellGems goal
* AutoFrameSkip: Graphics option to reduce lag by slow clients in network games
* SpinWheel sets view to controlled door on open/close command.
* Objects levitated by TeleGlove do not hit Clonks while they're being held and 5 frames after release.
* added hitpoints to flagpole
* make gravestone non-lethal
* Object fading: Don't kill newly bought objects or active objects like e.g. fused iron bombs
* Increase display time of global messages.
* Smoke graphics rework
* make coconut less lethal
* Prevent NPCs from accidentally collecting things.

* Replace sizzle sound for foundry, use foundry's sizzle for lava/water reactions

Startup menus:
* Remove obsolete effect level slider and configuration option
* Options/Graphics: tidy up
* Put missions above worlds in scenario selection

Scripting of Storyline/Dialogues:
* Decoration (AltMaterials, Straw man, Hat, Ruins)
* Dialogue/Sequence. Added attention symbol to dialogues
* Added BaseRespawn rule and neutral flagpoles to be used for consistent respawn handling in all missions.
* Change MessageWindow (i.e. the default goal messages) to use decorated messages instead of menus.
* Dialogue is blocked for a short time after it was stopped, so players don't restart it accidentally
* Broadcasting option to all players for important dialogues
* Speakers face each other
* add_attention parameter for SetDialogueProgress
* Extend Dialogue and Sequence object with some message and viewport functions for upcoming missions.
* (Re)implement text completion in dialogue text windows as an async control. Default to Space, i.e. MenuOK.

* PV_Step: added "maximumValue" parameter
* C4Script: Allow more format flags (+, -, <space>, #)
* Warn on unsupported accelerator keys
* Validate texmap entries on load
* Cleaned up base material in library and engine
* Script: Constant expressions can access properties of constant proplists
* Add parameter type check for FnCall
* Store modified mesh material assignments in saved scenarios.
* GetMeshMaterial called from definition context now returns default mesh materials.
* Change == and != to do pointer comparison on arrays and proplists (formerly === and !==). Remove === and !=== and introduce function DeepEqual for contents comparison.
* Added script functions SetLeagueProgressData, GetLeagueProgressData, GetLeagueScore and SetLeaguePerformance.
* Added mode TopOpen=2: Pixels above landscape are partly free and partly solid depending on corresponding top row map IFT. Analogous to BottomOpen=2.
* Add script function SetPlayerZoom to set zoom factors directly instead of by view range (#1065)
* Move contents ejection on death after Death Call
* Added new callback: DugOut(object object_by).
* Added SolidMaskPlane property: If an object moves and other objects are attached to its SolidMask, only objects in front of this plane are moved along with it. Defaults to Plane if zero.
* Aul: Allow '...' as final parameter in func decls
* Implement PLRZOOM_Set flag to allow setting current zoom and limits in the same call.
* Added script function GetPlayerZoomLimits.
* Removed unnecessary defcore Value entries
* Modify enemy AI to allow easier overload of functions for custom scenario AI.
* added callback IsPrey() to the Clonk so that future evil predators can only search for IsPrey and will attack both Clonks and cute little animals
* added Place()-function to sea weed
* added GetSurfaceVector() to Math.c which can be used to get informations about the surface of the landscape at some point (f.e. for bouncing projectiles)
* Add particle value provider function PV_Sin
* Construction site: Added function to disallow site cancellation. Added callback to structure for custom build preview.
* Added some dialogue functions and speaker portraits. UpdatedAddMenuItem and CustomMessage to allow more customization for picture graphics.
* Ruby and Amethyst material moved to main Material.ocg
* Add Dlg_*_Init callback to dialogues. To be used e.g. for starting timers of NPC activities.
* mape: Add interface to run the new script map generator
* Add player parameter to SetPlayList (#1084)
* Base variable naming in scenario saving on saved object count of same type name instead of object number.
* Heavy smoke is a particle parameter
* FuzzyLogic

(Bugfixes would probably triple the list so they're excluded)
Parent - - By Clonkonaut [de] Date 2014-10-04 00:35
The 'Next Mission' button after Raid doesn't work! :(
Parent - By Sven2 [de] Date 2014-10-04 10:34
Parent - - By Clonk-Karl [us] Date 2014-10-04 05:09
I managed to fall through the basement in Raid.ocs after the plane bombings and got stuck there, couldn't get out anymore... maybe that small gap could be filled with brick as well? Also, do we really want players to see unfinished buildings in the first mission?
Parent - - By Sven2 [de] Date 2014-10-04 10:34
Fixed the gap.

No we don't want players to see those buildings. So we should give them graphics :P
Parent - By Clonk-Karl [us] Date 2014-10-04 15:18
Wasn't Matthi looking for something to do? :P
Parent - - By Sven2 [de] Date 2014-10-04 23:24
I think everything is ready and tagged. If there are no further errors, I will press the release button Sunday, 3PM German time and release 0b9de1f as 5.0.
Parent - - By Maikel Date 2014-10-05 10:16
Sounds good! (Did you win a tree?)

Btw, someone needs to open 5.1 as a roadmap in the bugtracker.
Parent - By Sven2 [de] Date 2014-10-05 10:18
I don't see any buttons for this. I think I don't have sufficient access for it; maybe Newton can do it.
Parent - - By Sven2 [de] Date 2014-10-05 11:16 Edited 2014-10-05 11:20
Update failed! D:

I set up a local update server to test if the .ocu of the dry release work. They don't.

[12:10:59] [Modal] Update: Ein neues Update ist verfügbar. Soll das Update heruntergeladen und installiert werden?
[12:11:00] Datei localhost:80/openclonk-5.4.99-win32-amd64-mingw.ocu wird heruntergeladen...
[12:11:11] Datei localhost:80/openclonk-5.4.99-win32-amd64-mingw.ocu erfolgreich heruntergeladen.
[12:11:11] Error extracting "c4group64.exe": Extract: Entry not found
[12:11:11] [Msg] Update: Update fehlgeschlagen.

It seems like c4group64.exe is not in the group. Also, looking at the code, no .dll files are extracted. Does c4group work standalone?

The 32 bit update also fails (Asks for admin permissions for c4group and then application fails to start). I think this is probably a missing DLL file.

Newton, it worked for you when you tested it? Did you test 32 bit or 64 bit?
Parent - - By Sven2 [de] Date 2014-10-05 11:44
So, concerning the current update, we can do the following now:
a) Change the release script to not generate an update for 5.4.1. Players will be directed to the homepage to download the new installer.
b) Change the release script to put the c4group.exe and c4group64.exe from last release in there
c) Change the release script to put the installer renamed to c4group.exe (or c4group64.exe) in there, effectively forcing the players to run a new install

For the future, we could:
a) Fix the installation routine to extract stuff to a temp folder and also extract any DLL files.
b) Change the updates to always just download the new installer and run it. I.e. no updates and people always need to load the 60MB file, but it's more failsafe.

This is all for Windows. I don't know about Linux updates.

What do you think?
Parent - - By Maikel Date 2014-10-05 12:03
I am in favour of removing the update option and just direct people to the installer of the new version. Every time there seems to be some problem with releasing, so the less options and tools we have, the better.
Parent - By Sven2 [de] Date 2014-10-05 13:37
I have implemented both in the engine, so it just depends on what the server offers now.
Parent - By Sven2 [de] Date 2014-10-05 13:39
Update: Decoration.ocd is also not included in the update. The .ocu file just contains an empty folder Decoration.ocd.

It is installed by the installer though.
Parent - By Sven2 [de] Date 2014-10-05 13:37
I have pushed an update to the updating mechanism now:
* If the update file is an .ocu, c4group and all .dll files are extracted to a temp folder and the update is run from there.
* If the update file is not a .ocu, it is launched as an application. This way, we can just provide the updated installer as the update URL and "update" by reinstalling.

I have tested both mechanisms under Windows only. Can someone test it under Linux? Just point the update server at a webserver which offers the dry release as update download.
Up Topic Development / Developer's Corner / Release 5.0: Second try

Powered by mwForum 2.29.7 © 1999-2015 Markus Wichitill