Please login or register.

Login with username, password and session length
Advanced search  


This forum provides RSS feed. To query recent posts use this url. More...

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - HCDaniel

Pages: [1]
WME Lite / Proof of concept: WME lite engine running in browser
« on: October 13, 2018, 06:16:59 PM »

I have created a proof-of-concept port of WMElite to run in a (modern) browser. You can check it out here:

The port is using Emscripten to compile the engine C++ code plus dependencies into JavaScript. Although I have not yet spent a lot of time for optimizations, it already seems to work well, without using too much resources. Nevertheless, there will likely be bugs.

Please try it and let me know what you think.

WME Lite / Universal Windows Platform (UWP) demo
« on: June 07, 2016, 11:30:14 AM »

I created a demo app for UWP and uploaded it into the store:

It is based on my branch of WMElite. Should work with both mouse & touch input.

I made a deviation to the user interface, a short click/touch will invoke the "look action", and a long mouse click/touch will show the overlay menu.

Source code is on bitbucket. Feedback welcome.

WME Lite / WMELite development version for Android
« on: April 27, 2016, 12:31:23 PM »

I have released a "development" Version of the WME Lite engine for Android on Google Play:

If you just install & run, you will see the "Molly" actor only in an empty scene.

But if you connect your device to a PC and place a game onto the tablet (either packages or all the project's files, but please not both - I don't know what happens then), and then start the app, you might see your game running on Android.

The app is compiled from my WME Lite branch and includes the script compiler. If you copy all your game files, make sure not to copy the package folders, only the content. You can easily check this - the "" file should be in the root folder of your storage afterwards. If it is in a subfolder, it won't work.

The changes from my branch should not have too big impact. I'm using SDL_Mixer instead of BASS (to avoid cost of a license), and I have stripped down the FreeImage library, so it could be that some file types are not supported. MP3 files won't play, for instance, only ogg. I don't remember whether I kept .wav files in. Image support is also limited to .png .jpg and .gif.

The app tries to "guess" the folder where the packages or the game files were placed. Unfortunately manufacturers have a lot of freedom there, so I can't guarantee that the folder you place your files into will be found. (In case you know your internal folder name just let me know - I can safely expand the list.) If you know your way with the Android SDK, you can also use the "adb" command line tool to copy ("push") files onto the device. Although highly discouraged, I have not found any device yet that does not handle "/mnt/sdcard/" as target folder - even if mapped to sth. different internally.

Depending on how you left the app (exiting, switching to a different one, just exiting to home screen) it might not always pick up your latest changes to the files & packages. Make sure to remove the app from the "recent apps" list then.

Some settings can be modified with a "settings.xml" in the root folder (e.g. next to your packages resp. files). I suggest to use sth. like this for a start:

Code: [Select]
<?xml version="1.0" encoding="UTF-8"?>

You can change the "DebugMode", "LogWriteMode" and "PixelPerfect" options as you like (just set those that you need to "1").

This way you can easily test for yourself how your game would work on a touch platform. All events are "left mouse button" events, and you will unlikely hit coordinates exactly.

I hope this helps if you "just want to know how a game looks on a touch platform", and with the script compiler available, you can even try out things fast.

If you experience an app crash, please report it (Android will ask you whether to report or not, please do!). But if something else doesn't work, I can only help you if you know your way with the "adb" command line and send me the log output ("adb logcat").

For iOS I doubt that the same thing is possible. I have no idea how such a "development app" could pass app review, and I have no idea how to supply the files separately to the app.

Have fun!

WME Lite / Question about CBGame::UnregisterObject
« on: March 07, 2016, 08:38:49 PM »
Hi Mnemonic,

I'm experiencing the same thing that happened here: with WMElite.

Do you know whether the fix you did back then made it into WME lite?

I looked into the code and am trying to understand what happens. In my case, a window is unloaded (with Game.UnloadObject) shortly after a call to Game.SaveGame.
The crash happens shortly after load, when the Game.UnloadObject command is reached, because the window object somehow refers(?) to/is casted(?) to/contains(?) an "CScValue" object, and the "InvalidateValues" method is called, which tries to call "IsNative()", and that one crashes because "if(m_Type==VAL_VARIABLE_REF)" is true but m_ValRef is NULL for one object of the list of instances. (As far as I understand the situation.)

I have no idea how it can happen that an CScValue object can have the m_Type field set to VAL_VARIABLE_REF but no valid m_ValRef, at least after load. Can you help me out (once again)?



WME Lite / WME lite crash report support
« on: March 03, 2016, 09:08:38 AM »
Hi Mnemonic,

I want to use your crash report solution from WME for WME lite. I have not gotten very far yet, but I already see an issue that I fail to understand.

The extra code you use to catch the crashes:

Code: [Select]
#ifndef _DEBUG
if(!CBPlatform::Initialize(Game, hInstance, hPrevInstance, lpszCmdLine, nCmdShow))
return FALSE;
#ifndef _DEBUG
__except(CBPlatform::HandleCrashReport(Game, GetExceptionInformation()))
return FALSE;

is not compiling just like that for me. If I leave the "Exception handling" settings as they are in WME (/EHsc) or with SEH (/EHa), I get an error about "__try/__except cannot be used because the enclosed code requires finalizers" (error line from my memory, I did not capture it properly). And obviously there will be another error (actually a warning, but I think a reasonable one) like "exceptions used but unwinding disabled" if I compile without exception handling - which I probably do not want in the first place.

My only alternative would be to look at this project

but this looks like overhead to me, considering that there is already a crash reporting functionality in WME that just needs porting.

Can you give me a hint on this one?



WME Lite / Proof of concept: script compiler library for Linux
« on: January 07, 2016, 09:39:58 AM »

I managed to get the script compiler library to integrate into WME Lite on Linux (32 bit tested so far). The code needed only minor adaptations. Looks like this can be achieved for the other supported platforms as well (and then cleaned up and merged into the original sources and so on).

My question: Is there a need from anybody for such a solution, so that it makes sense to come from a "proof-of-concept" dirty hack to a clean implementation?

I was thinking about having this available for Android, to be able to develop & test scripts without having to compile packages first. I wonder though whether there is a reasonable work flow that benefits from this solution.

Game announcements / Krabat a potajnstwo serbskeho krala
« on: November 23, 2015, 11:54:30 AM »

after 6 years of work we released our WME (lite) based adventure "Krabat a potajnstwo serbskeho krala" (Krabat and the mystery of the sorbian king). It is an old-school point&click adventure, loosely based on the legend of Krabat, which is famous in our region.

The game is in sorbian and german only, unfortunately no english version.

Visit for more information. And of yourse, you can order a copy here:

Development / MAc dependency update
« on: June 08, 2015, 10:29:51 AM »
Hi Mnemonic,

do you have any plans to update the dependencies of osx and ios for wmelite, in order to support 64 bit? Looks like without that, no ios app would pass the conditions for publising in the store anymore.
I would especially be interested how to modify my SDL_mixer project to replace BASS on osx/ios.



Technical forum / Command line package compilation
« on: November 14, 2014, 08:17:11 AM »

I created a tool (currently quick&dirty) that runs the "Compile packages" step from ProjectManager in a command line. The rationale is to have a project built automatically. I use the Jenkins continuous integration server for this purpose. The tool even works in Linux using "wine".

I'd like to know whether there is interest in such a tool for other users. Which would then justify a cleanup and the removal of duplicate sources as far as possible.

The source code can be found in this repo:  in "src/ProjectCompiler/" and it can be compiled with VS 2010 express.



WME Lite / WMELite settings.xml handling
« on: August 12, 2014, 06:43:33 AM »

I wonder whether the logic in

Code: [Select]
CBRegistry::ReadString(const AnsiString& subKey, const AnsiString& key, const AnsiString& init)

is actually correct, w.r.t. the order of the values of both xml files being checked for the matching key:

Code: [Select]
ret = GetValue(m_LocalValues, subKey, key, found);
if (!found) ret = GetValue(m_Values, subKey, key, found);

The settings.xml that will be read into the "m_LocalValues" map is a "readonly" version (e.g. one that you might distribute with the game), because these values will never be written to nor saved.

The settings.xml that will be read into "m_Values", however, is the one where values are updated and that is saved for every user/player.

If an item is present in both maps, a user-defined redefinition should override the read-only "default". If I read the code of the original WME correctly, there it is done as I would expect, checking "HKEY_CURRENT_USER" before "HKEY_LOCAL_MACHINE" when reading, and writing always to "HKEY_CURRENT_USER". But in WMELite it is reversed. Is this intended behaviour or can I savely reverse this? (BTW I would then change the wording for the "local" values/settings, to clarify these are read-only global defaults).

Technical forum / Scaling game to fullscreen
« on: April 27, 2014, 07:12:17 PM »
Is it possible to add some sort of "fullscreen" option to WME (like in wmelite) so that the whole game is scaled to the maximum possible resolution (keeping aspect ratio). I'm asking this because some TFT displays do not scale smaller resolutions, so in the end there's not so much difference to the "use desktop resolution" option.

Development / Using more SDL projects?
« on: March 05, 2014, 10:18:24 AM »
I'm wondering why wmelite uses "separate" libraries for font rendering, image loading and audio processing, and not "SDL_ttf", "SDL_image" and "SDL_mixer".

It surely makes no sense to change the first two now, as they work fine on all platforms. I wonder whether it would make sense to have SDL_mixer as replacement for BASS, allowing packages for several Linux distributions to be built (and accepted).

Mnemonic, do you have any insights how difficult the BASS replacement might be?


I think I have found a bug in WME. I can reproduce this with the scene tutorial, step 8, by replacing the original code from desk.script in the following way:

on "LeftClick"
  // just walk to the desk
  // actor.GoTo(544, 638);
  actor.GoTo(397, 650);
  // actor.TurnTo(DI_UPRIGHT);

Now the position of the actor is the same when the chair and the desk are being examined, and the direction the actor has to turn to is similar.

In that case, the actor does not turn from e.g. the chair to the desk (and vice versa) when one item is examined and while the actor is talking, the second item is examined (the actor will turn AFTER the text has been spoken). You have to be rather quick, but this probably depends on the length of the text to talk.

I took a look at the sources and maybe the problem boils down to the code in

void CAdActor::TurnTo(TDirection dir)

where the variable "m_TargetDir" is not set when "abs(delta) < 2" (which is probably not correct as there will be a mismatch between "m_AfterWalkDir" and "m_TargetDir"). But this is just a guess.

Can you reproduce this?

Pages: [1]

Page created in 0.052 seconds with 18 queries.