March 28, 2023, 05:45:09 pm


Topic: web build?  (Read 4659 times)


  • Posts: 16
    • View Profile
web build?
« on: February 19, 2017, 11:16:50 pm »
Will reloaded after wipe have web or android compatibility?


  • Supporter
  • Posts: 495
    • View Profile
Re: web build?
« Reply #1 on: February 19, 2017, 11:25:26 pm »
No cause it wont be based on newest SDK because of many incompabtilities


  • Administrator
  • Posts: 1334
    • View Profile
Re: web build?
« Reply #2 on: February 19, 2017, 11:28:41 pm »
Maybe some day when I will be old, there will be stable SDK version and I will have nothing better to do  :)


  • Posts: 16
    • View Profile
Re: web build?
« Reply #3 on: February 19, 2017, 11:59:44 pm »
Ok no problem just wondering I thought you might be waiting on cvet for some fix before you can wipe? I remember reading about a possible large engine related bug that needs fix before wipe or was I dreaming?


  • Administrator
  • Posts: 1334
    • View Profile
Re: web build?
« Reply #4 on: February 20, 2017, 07:29:43 am »
Well it looks like cvet doesn't care anymore about fixing older versions so we'll need to use other options.


  • Supporter
  • Posts: 495
    • View Profile
Re: web build?
« Reply #5 on: February 20, 2017, 09:59:59 pm »
Well it looks like cvet doesn't care anymore about fixing older versions so we'll need to use other options.

Can't you migrate current version to newest or update step by step? I guess you have a lot of tasks to complete but web client or android client are promising idea. It all depends how many people just develop engine, probably not many I guess.

The engine is closed source and step from revision 404 or 412 to even the one around 500 is a MASSIVE amount of work and changes. Yet we're not even speaking about 600+ where everything is completely redone and changed from the very base.

Regarding Android/iOS/Web client the game is unplayable on devices with screen smaller than 10 inches and resolution 1280x720. I've already did prove it running it on first generation Nexus 7 where it had like 3 fps with SDL "emulation" and now on Windows 10 tablet.
« Last Edit: February 20, 2017, 10:01:50 pm by Koniko »


  • Posts: 19
    • View Profile
Re: web build?
« Reply #6 on: February 21, 2017, 01:26:40 pm »
Worth mention that all revisions above 412 using only GL client what in practice would make game non-accesible for these who running it by D3D exe.


  • Administrator
  • Posts: 1334
    • View Profile
Re: web build?
« Reply #7 on: February 21, 2017, 04:13:01 pm »
[Can't you migrate current version to newest or update step by step? I guess you have a lot of tasks to complete but web client or android client are promising idea. It all depends how many people just develop engine, probably not many I guess.

Actually, we've tried and wasted a lot of time on it (months). It led to nowhere because after almost two years there is still no stable version. Fortunately we've decided to go back to what's working and stayed at revision 412. Current Reloaded is even older because it's based on revision 391 if I remember correctly.

Migrating large game like Reloaded (currently: ~6.5MB scripts, ~1230 dialogue files and ~600 map files) to a new version would require huge effort, and then you don't know if you won't have to deal with some breaking changes again with the newer SDK version. Totally pointless as long as there is no stable SDK version.


  • Supporter & Wiki Editor
  • Posts: 43
  • Strike
    • View Profile
Re: web build?
« Reply #8 on: August 24, 2017, 05:49:18 pm »
r391 -> r412 is pretty much benefit for everyone (but I think Linux users will see biggest performance gains, Windows users will see also performance gains) + improved support for older GPUs.
New players guide by Strike



  • Supporter
  • Posts: 211
    • View Profile
Re: web build?
« Reply #9 on: August 24, 2017, 10:42:14 pm »
idk. I read the changelog 391-412. Nothing exciting's there. But I know cvet tends to make changes without legacy support. He doesn't think about the others. As a good Russian has to do when guarding the Gulag.

Anyway. It's ridiculous. I hope he releases the source before he dies.


  • Supporter & Wiki Editor
  • Posts: 43
  • Strike
    • View Profile
Re: web build?
« Reply #10 on: August 25, 2017, 02:52:57 am »
Code: [Select]

Fixed Linux Daemon version of server.


IntellisenseCreator now uses a single file and provides all variants of the deduced operators.


Fixed bugs related to the incorrect operation of the server, client and mapper under the Linux operating system.
The performance was tested on Ubuntu 12.10 under VirtualBox.
All binaries are rebuilt using GCC 4.7.2.

Optimized the work of OpenGL rendering, the performance has increased two to three times.
The renderer and shader code has been worked out for compatibility with old video cards (tested on Radeon 9600).

Added new options for changing effects in the client using the SetEffect function - see _client_defines.fos, 'Effect types' and 'Effect subtypes'.
The specification of the SetEffect function is also changed from
Void SetEffect (int effectType, int effectSubtype, string @ + effectName)
Bool SetEffect (int effectType, int effectSubtype, string @ + effectName, string @ + effectDefines = null)
String @ + effectDefines - preprocessor directives for the effect (null by default);
The return value indicates successful upload and compilation of the effect.

The 'bool __OpenGLRendering' function is added to the client and mapper scripts, which specifies which rendering is used (true - OpenGL, false - Direct3D).

Fixed the mechanism for determining the client window that was already running.

For the client / mapper, global variables have been added
Uint __FPS - current FPS;
Uint __PingPeriod - server ping period (equal to 2000 ms by default);
Uint __Ping - the current ping.

In native scripts, a function is added with which you can set callbacks when logging
Void (* GameOptions :: SetLogCallback) (void (* function) (const char *), bool enable);
Void (* function) (const char *) - function where the log texts will be sent;
Bool enable - set or remove the callback.

The client script function DrawHardcodedScreen now works with the main client screens (CLIENT_MAIN_SCREEN_ *).

In view of irrelevance, the global variable 'bool DisableDrawScreens' has been removed.

Added global server function 'uint GetRegisteredPlayers (array <uint> & ids, array <string> & names)' - returns length of arrays with clients. (By Wipe)

Fix for preprocessor's line translation with multiline macros. Added full file name to output. (By Atom)

Preprocessor now implements evaluation of constant expressions using #if directive. (By Atom)


The client function SetEffect was improved, new functionality was added, the scheme of the transmitted arguments was changed.
New types are given in _client_defines.fos EFFECT_ *, these constants are now passed only to the first argument 'int effectType', they can also be combined by means of bitwise operations.
When passing null to effectName, the default effect will be set (shown below).

More about the types of effects:
EFFECT_2D_GENERIC - objects, scenery, walls and everything else, except for the critters, tiles, rain;
EFFECT_2D_CRITTER - critter;
EFFECT_2D_TILE - floor tiles;
EFFECT_2D_ROOF - roof tiles;
EFFECT_2D_RAIN - rain;
EFFECT_3D_SIMPLE - not skinned 3d model; Only for OpenGL;
EFFECT_3D_SIMPLE_SHADOW - shadow for not skinned 3d models; Only for OpenGL;
EFFECT_3D_SKINNED - skinned 3d model;
EFFECT_3D_SKINNED_SHADOW - shadow for skinned 3d models; Only for OpenGL;
EFFECT_INTERFACE_BASE - game interface;
EFFECT_INTERFACE_CONTOUR - contours (strokes);
EFFECT_FONT - fonts;
EFFECT_PRIMITIVE_GENERIC - graphics constructed using primitives, except light;
EFFECT_FLUSH_RENDER_TARGET - render target rendering; Only for OpenGL;
EFFECT_FLUSH_RENDER_TARGET_MS - rendering multisempler target rendering; Only for OpenGL;
EFFECT_FLUSH_PRIMITIVE - output of the constructed graphics using primitives; Only for OpenGL;
EFFECT_FLUSH_MAP - output of the game card; Only for OpenGL;

The default effects for each type (OpenGL / Direct3D):
EFFECT_2D_GENERIC - 2D_Default.glsl / 2D_Default.fx
EFFECT_2D_CRITTER - 2D_Default.glsl / 2D_Default.fx
EFFECT_2D_TILE - 2D_WithoutEgg.glsl / 2D_Default.fx
EFFECT_2D_ROOF - 2D_Default.glsl / 2D_Default.fx
EFFECT_2D_RAIN - 2D_Default.glsl / 2D_Default.fx
EFFECT_3D_SIMPLE - 3D_Simple.glsl / -
EFFECT_3D_SIMPLE_SHADOW - 3D_Simple.glsl (#define SHADOW) / -
EFFECT_3D_SKINNED - 3D_Skinned.glsl / 3D_Default.fx
EFFECT_3D_SKINNED_SHADOW - 3D_Skinned.glsl (#define SHADOW) / -
EFFECT_INTERFACE_BASE - Interface_Default.glsl / Interface_Default.fx
EFFECT_INTERFACE_CONTOUR - Contour_Default.glsl / -
EFFECT_FONT - Font_Default.glsl / Font_Default.fx
EFFECT_PRIMITIVE_GENERIC - Primitive_Default.glsl / Primitive_Default.fx
EFFECT_PRIMITIVE_LIGHT - Primitive_Default.glsl / Primitive_Default.fx
EFFECT_FLUSH_RENDER_TARGET - Flush_RenderTarget.glsl / -
EFFECT_FLUSH_RENDER_TARGET_MS - Flush_RenderTargetMS.glsl / -
EFFECT_FLUSH_PRIMITIVE - Flush_Primitive.glsl / -
EFFECT_FLUSH_MAP - Flush_Map.glsl / -

The second parameter is considered only in the following types of effects:
EFFECT_2D_GENERIC - when specifying the id of the item, the effect will change only for it; When sending 0, the default effect will change;
EFFECT_2D_CRITTER - when specifying the id of the critter, the effect will change only for it; When sending 0, the default effect will change;
EFFECT_FONT - when specifying a font (FONT_ *), the effect will change only for it; The default effect will be changed when -1 is transmitted.

The work of the EffDef tag for fo3d format, with which you can set the initial values ​​in the effect, is fixed.


Increased the performance of Linux versions of the server, client and mapper.
Especially it will be noticeable on single-core processors.


In the Linux version, all the binary libraries are statically linked to the main libraries used by the game.
Now the game starts without any additional package presets, at least on the following Linux distributions:
Ubuntu 12.10, Linux Mint 14.1, Fedora 18, openSUSE 12.3.

The work of the SetEffect client script function has been fixed.

Started working on porting the game under MacOSX.


Updating the documentation to the current state.
On the errors and additions, report in this thread:


At the moment, a version of the game supported by Unicode is being developed, it is available at this address

On the bugs, report on the irc channel #fodev (

At the end of testing, that repository will be merged with the current one.


Updated instructions for integrating the script compiler into Notepad ++


Added support for Unicode, encoding UTF-8.
All text files are translated into UTF-8 encoding (without BOM).

Updated the entire toolkit for compatibility with Unicode.
Including the prototype editor (ObjectEditor). (By Ghosthack)

The functionality and the global client / mapper function were fixed
Void KeyboardPress (uint8 key1, uint8 key2, string @ + key1Text = null, string @ + key2Text = null)
Added optional parameters key1Text / key2Text, which will be passed to the key_up / key_down handlers along with the key1 / key2 variables.

To process the input, the constant DIK_CLIPBOARD_PASTE was added, the event of which means inserting text from the clipboard.

Changed the principle of input from the keyboard and work with the input language.
In the reserved functions of the client / key_down / key_up keyer, the string & keyText parameter is now passed, in which the text in the desired language will be written, based on the current OS input language.
Switching the keyboard layout is now controlled by the OS, not by the program, due to which the global Variable ChangeLang and the corresponding constants were removed. The global function int GetKeybLang () has also been removed.
Removed the function of translating text from one language to another by the Pause button (use third-party programs, for example, PuntoSwicher).

The name correctness checks are moved to scripts, the client / server only checks the length, correctness of UTF-8 characters and the absence of the "*" character (which in some places is then replaced by a space).
The 'string name' parameter was added to the reserved client function 'bool player_data_check (string & name, int [] & data) to verify its correctness before registering.

Global server functions are added to server / client / mapper scripts:
Uint DecodeUTF8 (const string & text, uint & length) - decode the character from the text (const string & text) with the return of its UCS code and the length of the code in the string (uint & length). If the character is not recognized, the code 0xFFFD will be returned.
String @ EncodeUTF8 (uint ucs) - encoding the UCS code in a string.

The format of fofnt font files has changed, now, first of all, there must be a tag with a version of the format (Version).
- the format of the Letter tag has changed, c "Letter 65 # 'A'" to "Letter 'A'";
- Added a LineHeight tag that points to the height of the font line (if not specified, then the height is taken from the largest character in the entire list);
- in the name of the atlas for the Image font, you can add the character '*', then the texture color is normalized from any to RGB [128, 128, 128] (only for OpenGL renderer);
- the label 'End' will stop parsing the file (for debugging).
These fonts are now cached in binary form, their downloading will now be very fast, after the first run. Rekeshirovanie goes, if the time of file recording has changed.
In the main font Default.fofnt additional Unicode characters are added from the font DefaultExt.fnt (although the font itself is not used anywhere), therefore the client now supports not only English and Russian, at least for the default font.

Updated work with lines.

The index operator now returns a string containing the desired character, so it is not necessary to compare it with character constants ('X'), but rather with strings ("X"). Example:
String s = "abcd"; // s [1] returns "b"
String s = "abcd"; // s [4] exception - going beyond the array
When assigning with an index operator, the character is deleted and the line to be inserted is inserted, examples are:
String s = "abcd"; S [1] = "g"; // s == "agcd"
String s = "abcd"; S [2] = "xyz"; // s == "abxyzd"
String s = "abcd"; S [1] = ""; // s == "acd"
There was an opportunity to index lines with the help of negative values. This is also applicable to global functions for working with strings (substr, findFirst, findLast, etc.) for the parameter 'int start'. Examples:
String s = "abcd"; // s [-1] returns "d"
String s = "abcs"; // s [-100] exception - going beyond the array
String s = "abcd"; S [-3] = "X"; // s == "aXcd"
String s = "abcd"; S [-1] = ""; // s == "abc"

The length () method now returns the number of Unicode characters in a string, not the number of bytes, i.e. As the method lengthUTF8 (), which is now removed (replace the old length () see below).

Updated all the functions for working with strings (substr, findFirst, findLast, etc.), now they also work with Unicode characters, not bytes.

The resize (uint) method is renamed, see below.

To work with bytes in the string, the following methods are added:
Uint rawLength () const - instead of the previous length ();
Void rawResize (uint size) - instead of resize (uint);
Uint8 rawGet (uint index) const - instead of the old index operator;
Void rawSet (uint index, uint8 value) - instead of the old index operator.

Corrections in three-dimensional graphics.

Fixed memory leak when working with effects.

In the fo3d format, the Mesh tag can now be set to -1, which means that setting textures, effects, and mute materials (Texture, Effect, DesableSubset tags) will affect all meshes in the current model. Also, now this tag is -1 by default, not 0 (that is, the installation for all models, not just for the first one).

Fixed the use of effects in 3d models of OpenGL rendering (before they were not installed and the default effects were always used).


Optimized the speed of loading maps (fomap) and prototypes (fopro) files.


Fixed full screen mode in Linux version, as well as Windows for Direct3D renderer.
Switching to fullscreen mode and back will now happen on the F11 key.
In the mapper, the rain on / off now occurs on Shift + F10, instead of F11.

Added folding window on F12 in Linux.


Correcting the outlines of some symbols (a, l).


Fixed a system for tracking the game from different computers, for Linux (oisbka 'Different UID ...').


For Linux versions, the installation of the correct directory is added when the program starts, when the current directory differs from where the program is located.


Notepad ++ configs have been updated to the current state for syntax highlighting and autocompletion in scripts.
It is recommended to update Notepad ++ to the latest version (6.3.3), since the syntax highlighting is implemented on a relatively new system.
The instructions for integrating the compiler with Notepad ++ are restored and slightly updated.
Fixed some bugs in the documentation.


Server exe r509 + Mono 3.0.10


Mono update, critter events: PlaneBegin, PlaneEnd, PlaneRun


Virtual events did nothing good


Removed mono integration subdirectory. For those interested, the content can be fetched from:


In the mapper, the effect of the offsets of the objects registered in the prototype for previewing objects during installation is added.

Fixed bug with saving the client, as a result of which it was possible to roll back the data until the last save.

Fixed the function of renaming files, which was used when deleting player characters (renaming the file to ".client_deleted"). For Windows version. (By k3tamina)

Added global functions for the client: (by Wipe)
Bool SaveScreenshot () - save the screenshot;
Bool SaveLogFile () - save the log file.

Fixed loading of tiles in subdirectories. (By Atom)

For locations, the mechanism of events (in the manner of critters, maps and objects) is added. (By scypior)

The following events were added:
Void _FuncName (Location & loc, bool deleted)
Shutdown the location.
Bool _FuncName (Location & loc, Critter & cr)
When a group of players enter the location from the global map.
When true, the group enters the location, with false not.

For the Location class, the following methods are added:
Bool SetEvent (int eventType, string @ + funcName)
Void EventFinish (bool deleted)
Bool EventEnter (Critter @ [] & group, uint8 entrance)


Fixed drawing of extensions of main screens (login, registration, game). The SDK was used when registering in the mode of three-dimensional characters (PLAYERS_3D). Bug with 393 revisions.


Fixed a bug with downloading ZIP / BOS files, if there are not ASCII characters in the client's path. A bug with 400 revisions.

When creating crash dumps with Access Violation, the operation type (write / read) and the address of the error message are additionally recorded.

The folder Stable was deleted in the repository, because Archives are unavailable due to loss of hosting. The information on stable revisions is moved to ReadMe.txt.

I see atleast a lot of fixes, mostly for Linux users but also for Windows users + some engine hardcoded bugs fixed. And last update for SDK is from April, maybe he finally gave up with engine after many years of work? I agree, he should release engine sources so that someone could continue work on it.

Hopefully there is atleast this fix for r412, as it was for current r391:

FOnline engine had a lot potential, but 3D stuff just made things worse. After cvet started to it, why didn't he made for example "2D" client revision and "3D" revision for different folders?

Reloaded maybe never see newer revision than r412 as it's too much hassle and never able to get even close to stable (told by Kilgore), I know there are a lot better fixes after r412, but also bad ones (like dropped support for older GPUs with OpenGL 1.x, maybe one of the worst move made from cvet, and this was because of optimized 3D stuff... if it would be just 2D there would be always support for older GPUs), r412 was actually pretty good option as it introduced most performance fixes of almost all revisions (only better revision is one with reduced RAM usage, on r4xx), after for example r413+ there was just a lot revisions with regressions fixes, because changes that were made on r413.
« Last Edit: August 25, 2017, 03:16:00 am by runboy93 »
New players guide by Strike



  • Administrator
  • Posts: 1334
    • View Profile
Re: web build?
« Reply #11 on: August 25, 2017, 08:58:53 am »
Reloaded was merged to rev477 2.5 years ago, yeah newer revisions offered many good things, but it became more and more difficult to update and when cvet was asked about a stable revision he always answered "not soon" or something like that, now we have 2017 and 7xx(?) SDK revision and still no stable version. Good luck to anyone wanting to merge 2238/reloaded source with new SDK revisions, I can bet nobody will do it.

Back in 2015 I took the difficult decision to rollback back from 477 to 412 (sorry Wipe  :( ) and it turned out to be a good decision.

I think it would be actually easier to recreate whole game on new, mythical stable version if it comes some day.  Maybe it would be FOnline 3?  :P Some engine changes are quite revolutionary.


  • Posts: 16
    • View Profile
Re: web build?
« Reply #12 on: August 29, 2017, 12:07:16 am »
i'm amazed at your dedication to this project, kilgore. im sure you don't work alone, but its really something else that this has been kept alive all this time, and we're even moving into a new wipe in a few days.

and here you talk about a whole new game on a new engine? my god man, make a kickstarter or something, we would love to support that endeavor.


  • Administrator
  • Posts: 1334
    • View Profile
Re: web build?
« Reply #13 on: August 29, 2017, 10:16:17 am »
To be honest, others do much more than me. Corosive, DocAn, mojuk and Wipe do a tremendous amount of work for the project. I wish I had as much dedication to fonline development as I had back in 2010 or 2011.

I wasn't talking about new engine, but the newer revisions of FOnline SDK released by cvet.