Strange Components


Date:      24.08.09



The contents of this release


1) Demos

Contains demos (source and resources), that demonstrate what each unit in the Source folder does. Usually there's one one demo per unit, but in some cases demo can illustrate the work of several units.

  • _Original_Sector-37, _Under_Reconstruction_Sector-37 - source files of the "Sector-37" project.
    Warning: the files weren't updated since January '2006 and there were a lot of changes in independent modules, so they will compile, but will not run. They are left in the package, because I still find them useful and the new engine will use some procedures and types from the old engine.
    _Original_Sector-37 is the original version that compiles and runs fine
    _Under_Reconstruction_Sector-37 is the version, that uses new modules and introduces new bugs

  • Core - demos that demonstrate how to use units in the /Source/Core directory

  • General - demos that demonstrate how to use units in the /Source/General directory

  • SDK - some ready-to used SDK's.

  • Shaders - demos that demonstrate how to use units in the /Source/Shaders directory

  • Utilities - A small collection of utilities written by me:

    • Strange Normal Map Converter - A utility, that converts a height map into a normal map. See included ReadMe for details.

    • Strange Script Exporter - Converts strings like "some_string" into "Add('some_string');". Pretty simple, but useful when making components from shaders.

    • Strange Text Replacer - Utility in an "forever beta" state, allows to replace blocks of text in a file. I used it once to add a "license" section into all of my units.

    • Other demos demonstrate how to use units in the /Source/Utilities directory.


2) Documentation

  • StrangeComponents - this document

  • lgpl.txt - the LGPL license text


3) Packages

Contains packages that need to be installed for some demos to run:

  • StrangeGeneralComponents.dpk: Includes TStrangeDragDropDestination, TStrangeDragDropSource, TStrangeSimpleNavigation, TStrangeTrackBar.

  • StrangeCoreComponents.dpk: Includes TStrangeCannon, TStrangeNavigator, TStrangeUserInterface. Included GLScene objects: TStrangeAtmosphere, TStrangeInertiaCamera, TStrangeConsole, TStrangeEngines, TStrangeComboBox, TStrangeLines, TStrangeMouseEmulator, TStrangeMultiProxy, TStrangeUnitHUD.

  • StrangeShaders.dpk: Includes TStrangeGLSLShader, TStrangeGLSLBumpShader, TStrangeARBShader,TStrangeMultiShader, TStrangeCGZapShader,  TStrangeCGBombShader, TStrangeARBPhongShader.[Will be in the next release]

  • StrangeSDK.dpk, StrangeUtilities.dpk, StrangeDesignTime.dpk - other usefull packages.

  • AllStrangePackages.bpg - A project group that contains the packages in the exact order they need to be installed.


4) Source

Collection of various components. Path to all folders in this directory should be added into your Delphi's Library path. Most units have a comment inside them which describes their purpose. Also there are a lot of comments in the interface part of the code, so if there are any problems - check there.

  • Core - all main units. Warning: Movement Manager has a rather unpredictable bug that occurs after 2-10 minutes of moving the object around, so it's kind of hard to track. Note: this directory contains UFireFxBase.pas, which was written by MRQZZZ and edited by me (details inside)

  • DesignTime - stuff, needed only at design time.

  • General - visual components. Main aim of them is to simplify creation of visual editors and SDK's. Note: StrangeDragDropDestination.pas is based on TExplorerDrop by Simon Grossenbacher (details inside). Note2: StrangeDragDropSource.pas is based on TDropper by Matveev Igor (details inside).

  • SDK - components used for SDK development. "SDK Template" is a template for all SDK's

  • Shaders - various shader units, some of them are abstract classes, most are not.

  • Utilities - general utility units. Contain functions, types and constants that many other units use.



Plans for next release

Sector-37 Project is officially closed, so there are no plans. I will only fix bugs and try to maintain compatibility with the latest CVS version of GLScene.




How to install

  1. Add all the folders in the \Source\ directory to your search path. This is the only required step to compile most of the demos. If you want full functionality, then follow next steps too.

  2. Install requied packages in the \Packages\ folder. I recommend you use the AllStrangePackages.bpg project group to do that.

  3. Download separately and install these third-party components (needed mostly for SDK's and utilities):


Other components that I just might use some day:



Version history

10 September '2006


v1.1 26 October '2006

All documentation updated. Most bugs fixed. Official release

v1.2 02 December '2006

More shader components added. Some new utility units added. SDK Unit Masks improved. More design time components added

v1.3 29 January '2007

Updated stats. Some bugfixes. Updated my version of GLScene.

v1.4 20 August '2007

No big changes. Updated everything to CVS version of GLSCene.

v1.5 05 February '2008

Removed my version of GLScene. Just put together all small changes that happened over the last half a year.

v1.6 25 July '2009

Updated all files to the current CVS version of GLScene.

For the latest version of "Strange components" visit .





Some statistics (I count only finished files, that were created by myself):


Folder Name

Size (*.pas)

Number of files


835 Kb



37 Kb


SDK 85 Kb 6
Shaders 83 Kb 9
Utilities 1060 Kb 23
Total 2 110 Kb 54




Copyright & license

All units are Copyrighted (C) 2004-2006 by Alexander Federyakov
(aka Da Stranger) under the GNU Lesser General Public License Version 2.1
with the following exceptions:

 1) If you used this unit or any part during the development of your
software, please send me an e-mail to with a link
to your homepage or to a page, where your soft could be downloaded.
This is a request for free software and a must for any form of
You should also state in the appropriate place of you software
that you used this unit or any part of it during the development of
your software, name the author (Alexander Federyakov aka Da Stranger)
and place a link to .

2) I have the right to change the license for all future versions of
this unit and all other units and projects, which are based on it
or use it in any way.

3) I am not obliged to publish the source code of any future versions
of this unit and all other units and projects, which are based on
it or use it in any way.

A local copy of the LGPL license can be found here.



Contact information

If you find any bugs, have suggestions or anything else you can contact me (Alexander Federyakov also known as Da Stranger):

Project web site:
Personal web site:
Phone: 8-916-661-5214, 8-495-300-10-75
ICQ: 293-963-070
Skype: da_strange_dude

Also, I can be contacted through GLScene newsgroups or Russian GLScene portal





About "Sector-37" project

All these components and demos were made for the "Sector-37" project. You can get more information about the project at .