Below you'll find a list of all new features in the next Gamestudio beta version. Click onto the links to get the manual page of the new features.
For becoming a beta tester and receiving the latest cool features many months in advance, you should have experience with Gamestudio, be able to speak English, and own either the current Gamestudio/A7 Pro Edition or a valid support ticket. You can also get beta tester status when you've published a commercial quality project, programmed a popular tool or plugin, or have written a popular tutorial or book about Gamestudio. You can stay beta tester as long as you test beta versions and participate actively on the beta forum. For applying to beta tester status, please email the support (support [at] 3dgamestudio.net), and give your forum member name and your Gamestudio/A7 Pro user ID or support ticket number.
The beta list is no assurance of upcoming features. All beta features below are subject to change or even removal. Do not rely upon them to be implemented into an official release. Some of the beta features will only be available for certain editions. Features marked with X are experimental, unfinished features for testing purposes - they are implemented in beta versions, but not in an official release.
Decals on terrain are now not cut off on chunks anymore. This allows unrestricted decal shadows on terrain.
X WEDB got two new tools for slicing and cutting blocks. Move the Slice Wire over any selected block or group, and press [Enter] to cut. The Slice Plane cuts the whole group along a plane. There are no icon images for the tools yet, so disable toolbar icons for activating them.
MDL models can now share textures between mesh groups. This might make sense when you have several groups with the same texture, but different materials.
The options in WED Preferences are now available in a new menu order.
The ent_setmesh function now updates the collision shape from the new mesh.
The ent_getvertex/ent_setvertex functions replace vec_for_mesh and vec_to_mesh. They also support mesh deformation on chunked terrain.
The ent_status function returns information about the entity mesh, and replaces the ent_vertices, ent_skins, and ent_frames functions.
Shared textures are now supported for models.
The WiiMote plugin was improved and now contains smoothing functions for angles.
The num_sounds variable indicates the number of playing sound channels - also displayed in the Statistics Panel.
The smooth function lets a parameter - such as an angle - softly approach a target value, or smoothes jittery input values.
The WiiMote plugin by Firoball was now officially integrated in the engine. Up to 4 WiiMotes and other Bluetooth input devices are automatically detected at engine start.
D3DXVECTOR3 and D3DXVECTOR4 inline functions were added to include\d3d9.h.
In postprocessing shaders, the vecLightPos... arrays are now automatically set to the 8 closest lights that overlap the frustum of the postprocessing view. If the view has a genius, the vecLightPos... arrays are set to the lights in range of the genius entity instead.
Dynamic lights placed in WED now automatically get the CAST flag, i.e. they can throw shadows.
LC Shaders can now use an arbitrary number of textures by accessing BMAP objects.
The angle limit of decals can be set by the decal_clip variable.
The view volume size in ISOMETRIC mode can now be controlled by the view.arc parameter. ISOMETRIC mode can be used for orthogonal projection, or for clipping objects in a rectangular view volume f.i. for PSSM shaders (moved from experimental to release state).
The mouse_panel pointer can be used for determining which panel the mouse is over (if any).
The lightmapping algorithms of the map compiler were improved. Lighting 2.0 is now always activated (lighting 1.0 was removed). The Supersampling option resamples the lightmaps for removing 'staircase' artifacts.
Single faces of a block can now be individually selected in WED by clicking on them in the 2D or 3D views.
The ambient_color variable can be used to adjust the brightness of level entities that receive no light from the PRV. It is automatically loaded from lit levels. This prevents levels without ground plane from going fullbright.
"_repeat" effect passes can now use up to 4 repeated textures.
MED got new menu items for swapping and removing the second UV coordinate set. The coordinate sets are now also indicated under Model Properties.
The shader viewer now also displays shaders on map entities (if the shader supports lightmaps). A test entity "sphere.wmb" was added to the folder.
The mip_levels variable can be set for using more than 4 mipmaps per texture.
If mip_sprites is set above 0, mipmaps are now also created for all models that don't have own mipmaps.
A new material mtl_terraintex was added to the shader library, and can be used for rendering terrain with an arbitrary number of 32-bit masked textures.
LC The PASS_SOLID flag enforces entities to be rendered in the solid pass.
An effect pool is now allocated for all effects, supporting shared effect parameters.
If an effect pass name contains the character sequence "_repeat", the pass is repeated for every skin of the model. This special method can be used to render an arbitrary number of skins, for instance for multitexture terrain. The number of the current pass repetition can be evaluated through the iRepeat shader variable.
The run_mode variable can be used to distiguish between development and production mode, and determine the way the engine was started.
Later decals are now placed on top of earlier decals on the same object.
Models with both transparent and intransparent parts can now also be used for view entities.
The concave flag can now also be set for block groups in WED. This flag is required for all blocks that have lost their convexity due to vertex manipulations. Imported blocks have this flag set automatically.
A short guide about how to Apply Shaders to Level Blocks was added to the manual.
LC Als long as the PLUGINDIR was not changed, engine plugins are now automatically loaded from both the work folder and the acknex_plugins folder.
LC The inchar() function can be used to read a single character from the keyboard.
Truetype texts can be horizontally limited to the size_x area.
str_width returns the width of a string in pixels.
LC The WWRAP flag activates word wrap for a truetype text.
LC The ARIGHT flag aligns text right.
P dplay_encrypt activates encryption and compression of data packets sent over the network.
On OBB collision detection, the IGNORE_PASSABLE flag still detected passable map entities unless IGNORE_PASSENTS was also set. This was inconsistent to AABB collision detection where IGNORE_PASSABLE ignores anything passable. Both OBB and AABB collision detection now ignore anything passable on IGNORE_PASSABLE. For getting the old behavior back, set the compatibility variable to 5.
The maximum number of physics contacts can now be set through the ph_max_contacts variable.
The diag_status function prints the current status of all running functions into the diag file. This function is triggered by hitting [Alt-F11] when default.c is incuded.
The draw_box3d function can be used for drawing bounding boxes.
Panel events can now also be triggered by right mouse clicks.
LC str_for_int and str_for_float generate strings with more digits or higher precision.
Models with wrong texture sizes now issue warning 1309.
file_str_readto now accepts NULL for the string pointer for just skipping parts of the file.
PRAGMA_BIND and PRAGMA_LEVEL now support file names with spaces; still, it is absolutely not recommended to have file names with spaces or foreign characters in your game.
LC str_to_int and str_to_float allow to read numbers from strings with higher precision.
WED FBX level import now creates models with mipmaps.
The WED SDK now allows a better control of menu entries, by determining the menu position and placing separators.
P The -mon command line option can be used to select a monitor for fullscreen display in a multi monitor system.
For avoiding a string content "#nnn" to be interpreted as an empty string of length nnn, two '#' characters at the beginning of a string (such as "##123") are interpreted as a single '#'.
Bad entity file names (such as names that contain '/' or '\' characters) are now indicated by warning message W1305 .
Faulty bones animation in FBX files (scale inheritance) is now indicated with an error message during import.
The main script file can now be directly given in the WED SDK.
Panels can now be horizontally and vertically flipped through negative scale factors.
C P The original content of a panel/text target map is now preserved before rendering into it.
MED can now directly import lightmapped models from FBX files. The lightmap is mapped to the second UV coordinate set.
C P The direction of sun or spot lights can now be determined in shaders through the vecLightDir array.
If the name of an EXE file is given in the command line, the engine automatically starts the EXE file if its exists, and compiles it from a C script with the same name otherwise. This can be used to speed up the startup process by skipping the script compiling when the script is not changed. Enter scriptname.exe in the WED or SED command line options window for starting faster. Debugging and crash handling only works in the code, not in an compiled executable.
The text_outline variable can be used to adjust text shadow and outline border transparency.
The on_message pointer can be used for calling the engine message loop from another application. This now allows completely replacing the engine window (hWnd) by another application window.
ent_nextlight finds the closest dynamic lightsources to an entity.
The amount of virtual memory allocated by the engine can be determined through the sys_memory variable.
C P The Lambert, Phong, and Blinn bumpmapping shaders now support multiple lights and can also be assigned to level blocks. A general bumpmapping vertex shader that can be combined with various pixel lighting effects was implemented in the default.fx library.
C P The vecLightPos array is now sorted from close to far lights. This also avoids wrong lighting in cases when more than 8 dynamic lights are close to an entity or level block.
C P Predefined shader actions (such as fx_bump) can now be directly assigned to entities; the shader parameters are taken from skill1...skill4 in that case. If the skills are zero, default values are used.
X C P The ISOMETRIC flag activates an orthogonal view projection.
Crashes in lite-C now always give the name of the crashed function.
Texture coordinates at the c_trace hit position can be retrieved through hit.u1,v1/u2,v2.
Several mode flags were added to limit the entities detected by c_scan.
The UNTOUCHABLE flag now also works for panels.
The exec_wait function waits for the termination of an externally called program.
Due to an internal optimization, A7.10 now consumes about 30% less nexus memory per level than prior versions.
C P A decal material can now be set through PARTICLE.material. If no material is set, the decal renders with the same material and shader as the object it's attached to.
WED now moves directly into a group scope by selecting an object of the group in the level tree.
The scale restriction through [Ctrl] now also works with the WED Edit Box tool.
hit.texname is set to the name of the hit model, sprite or block texture that was hit.
For FBX level imports, import rules can now be defined in the .imfl file.
A vec_cross function was added.
On common demand, a few lines were added to the c_move example for falling with gravity and reducing the speed on slopes.
C P The number of currently connected clients can be evaluated through the num_clients variable and is displayed in the [F11] panel.
A rotating triangle sample (triangle.c) was added to the lite-C samples to show how to use DirectX functions for drawing at runtime.
A brief description of the predefined shaders and using them was added to the manual.
The FBX Level Importer now automatically detects model instances.
The map compiler now also supports the Smooth flag for lighting 2.0.
The time consumed for 2D draw_ functions is now visible in the [F11] panel through the time_draw variable.
The number of mipmaps read from external DDS files is now limited to 4 for avoiding too-extreme mipmapping on DDS textures. The d3d_mipmapping variable can now be used to activate anisotropic mipmap filtering.
Despite all player movement examples in AUM, the c_move function still invites all sorts of beginner's mistakes when writing code for player walking. A simple walking example was thus added to the manual page.
The ent_type function determines the type of the level or entity.
For compatibility to imported lightmapped models, block meshes now also use the second UV coordinate set for lightmaps.
Through the HIT_TARGET macro hits on entities or level surfaces can be determined.
The second UV skinning data from the MDL7 format is now imported in the engine and used for the D3DVERTEX u2,v2 coordinates. If a model has a second UV set, it is automatically treated as if its second skin were a lightmap (if it has no shader or FFP effect).
The add_new function initializes the folder and resource path and removes all file buffers.
Some new vector helper functions were implemented:
vec_for_ent can be used to convert between world and entity coordinates.
vec_fill sets a vector to a constant.
vec_rotateback performs an inverse rotation.
vec_rotateaxis performs a quaternion rotation of a vector about a rotation axis.
vec_bounce calculates a reflection vector.
The random_seed function can be used to start the random sequence with always the same numbers.
C P The first version of the A7 decal manager was implemented. The ent_decal function attaches a decal to any entity, floor or wall.
The merging operator ## is now supported in macros.
The mouse_pointer variable now supports all available Windows mouse pointers.
The mouse cursor is now visible on frame and menu bar of the engine window when a mouse bitmap is active inside the client area.
The impact range of dynamic lights on meshes can now be adjusted with the d3d_lightres variable, preventing cases when lights are not visible on coarse tesselated surfaces.
X MEDB now supports a second UV set on skins, for special purposes such as shadow mapping. The second UV set is also stored in the MDL7 file, but not yet used by the engine.
The CHILD flag now prevents the view from culling and sorting entities again, and uses the culling and sorting process from the previous view. This increases the rendering speed on CHILD views.
The acknex.exe created by the Publish process now contains a manifest as required by the Microsoft Games for Windows standard.
The ent_pvs function retrieves all potentially visible entities from the ABT or BSP tree.
A7 now supports multiple render targets through bmap_rendertarget.
The OVERRIDE material flag gives the material priority over view materials.
A new MED / WED SDK was uploaded to http://server.conitec.net/down/wedmedsdk7.zip. It contains some fixes and new VC++ 2005 projects for the WED plugin samples.
The fx_floor_mirror action in mtlFX.c can be assigned to a floor entity in the level, and generates a horizontal mirror effect. The reflection factor can be adjusted through the entities' ambient value.
The 2-sided and 6-sided mapping dialogs in MED are now non-modal.
LC The proc_kill function can now terminate all instances of a given function pointer.
The on_frame event is executed every frame, and can be used to implement functionality similar to wait() in an external language.
LC The NOLOD flag allows a view to use the LOD states of a previous view, which is useful for shadow mapping views that render from a light source position.
LC 8 general purpose matrices can now be defined for shaders.
The Add Light panel now allows to select the light color through the Windows Color Dialog.
The new Transform Model Global dialog now rotates the model about all axes, instead of exchanging the coordinates. The modifications are visible in real time. This makes model import from editors with a different coordinate system much easier.
LC Resource files in the work folder are now automatically opened without needing a PRAGMA_RESOURCE statement.
LC The ANIMATE flag can be used for switching model auto animation on and off.
LC Through the level_ent pointer the size of the current level can be determined.
LC The depth parameter of a view allows to preset the z buffer to a certain value.
New shader variables: fLayer, fAlpha, fPower
Buffers allocated through file_load can be freed through file_load(NULL,buffer,NULL).
LC The draw_quad function can be used to draw images or colored areas without needing a panel.
The preliminary version of the long-awaited Template7 system together with the T7 game engine will now be officially included in this version. A brief tutorial can be found on the Wiki. As long as the entity behavior editor is not yet finished, entity behavior can provisionally be edited by opening the XML files with a text editor as described on the Wiki.
The FBX level importer now supports object hierarchy import and an improved dialogue. The object position problems of the last beta version are also supposed to be fixed.
bmap_zbuffer can be used to render into bitmaps bigger than the screen, and to use render targets even when d3d_antialiasing was enabled.
LC The lite-C compiler kernel was modified. Previously, scripts containing lots of predefined engine structs and numeric constants compiled quite slow. They now compile much faster.
LC Attempts to use the video or DirectX device in the first frame before it's initialized are now indicated with an error message "video not yet initialized ".
bmap_to_alpha can now also create a one-bit alpha channel for overlay transparency when the percentage value is set at 0.
LC PRAGMA_POINTER can be used to switch off the lite-C pointer autodetection, and treat code as in C/C++.
LC ent_boneparent returns the parent of a bone and can be used to walk the skeleton of an entity and determine its structure.
LC The bone functions can now also use bone handles instead of bone names. Finding a bone by its handle is faster than using its name, and overcomes problems when two bones have the same name.
Another new engine demo can be downloaded from http://server.conitec.net/down/demo_venice.rar.
fps_max now uses a CPU loop for small idle times, which reduces the 'stuttering motion' problem on levels with high frame rate.
A new engine demo can be downloaded from http://server.conitec.net/down/demo_lightshadows.zip.
LC The pVars pointer can be used for getting a handle to any lite-C struct that is not an engine object. This can be useful for identifying structs in a multiplayer enviroment.
P Through the ENGINE option in options.scr the name of the executable for WEDS can be given, e.g. ENGINE = "wrun.exe".
LC Pointers can now also be used as boolean expressions in lite-C.
LC The PRAGMA_PLUGIN definition replaces the abandoned dll_open function that did not work under lite-C anyway. Calling dll_open will now generate an error message.
P The engine window can now display user defined icons in the task bar. If an icon named "32.ico" or "16.ico" is found in the work folder, it is automatically loaded and used for the task bar icon in stead of the default A7 icon.
WED can now import whole levels that are created in MAX or MAYA, and convert them into a WMP level plus MDL entities. For this, use the Import Level from FBX function. For any object in the Import dialog you can select whether to import it as a mesh, or import it to a MDL7 model in the work folder. Camera positions and lights can now also be imported from FBX levels.
LC The LPD3DXEFFECT interface was added to d3d9.h.
LC When an engine window is not opened (video_screen = 0), all diag() and printf() output is now printed into the text area of the startup window.
Shaders can now use different techniques dependent on whether they are rendering model or block meshes. This way the same shader can be used for models and for level blocks.
LC Expressions containing '&&' or '||' now evaluate to 1 or 0, instead of nonzero or 0. This allows for better compatibility to ANSI C in boolean expressions.
Collisions with a bounding box or ellipsoid are now restricted to planes facing the movement direction. This prevents objects from getting stuck when sliding along complicated geometry, but could have side effects - please check carefully.
LC The pPaths array can be used by external development tools to read the engine paths.
LC The engine can be prevented from opening a video device by setting video_screen at 0 before the first wait() or level_load() call. This is useful for programs that don't need an engine window.
LC Panels and Texts can now render into target bitmaps.
Material and shaders can now be directly assigned to geometry blocks in WED (without using the d3d_automaterial feature) when the level is compiled in mesh mode.
LC proc_mode is now automatically set to 0 at the first wait call.
The shader viewer was greatly improved. It now supports more than 40 different surface and postprocessing shaders that can be used in projects.
LC Lite-C now allows PRAGMA_PATH, PRAGMA_LEVEL, PRAGMA_BIND and PRAGMA_RESOURCE statements in a .c file, making an additional WDL file superflous (except for startup window definitions). Paths added by PRAGMA_PATH are also used by the WED Publish function.
WED and MED can now display DDS images in the texture view, and can import textures from most image formats. An external library (exio.dll) is used for the image conversion. It uses the devil.dll image conversion library by Denton Woods. The exio.dll source code is available in the external folder.
The projects paths used by the WED publish process are now indicated in the Resource View under 'Path'.
More shader workshops about postprocessing, shadow mapping, and soft shadows, were added to the Shader Tutorial (http://server.conitec.net/down/shader_workshops.zip).
Shaders can now detemine the fog color through vecFogColor.
LC If no #include statement is found in the main script, default.c is automatically included.
LC Bitmap names or formats can now be directly given for the bmap element in a VIEW definition.
The ENABLE_VIEW event is now used for rendering view material events, instead of ENABLE_RENDER, for better distinction between view and entity materials.
LC The predefined light_view determines the view used to clip dynamic lights.
Color depth values 12 and 14 in a BMAP definition now create a floating point bitmap in F16 and F32 format.
proc_kill was improved and can now terminate all instances of the current function that were called by the current entity.
Views can now directly render into cubic environment maps by using a bitmap as a render target that was converted with bmap_to_cubemap before.
LC Functions that end with "_event" are now automatically assigned to the corresponding event.
Four more entity skills can be passed to shaders through vecSkill45.
A new WED/MED SDK for A7 was uploaded, with more examples and new features.
The index high byte of STRING objects (HBYTE_STRING in atypes.h) was changed from 10 to 2 for internal technical reasons.
Taco Cohen's Shader Workshops were adapted to A7.07 / lite-C and can be downloaded at http://server.conitec.net/down/shader_workshops.zip.
ent_mtlset and ent_setskin can now create new entity skins and skin materials.
LC The realloc() function is now supported by lite-C.
The level_load function is now executed directly and undelayed, thus a wait() after level loading is not required anymore.
LC The CHILD flag lets a view inherit its parameters from the previous stage.
LC The entity viewer script in default.c was modified so that entities are now centered in the view and rotated with the cursor keys.
The -nv command line option prevents the engine from rendering and opening the DirectX device.
The AUTORELOAD material flag can be used for editing shaders and observing the result immediately in the engine window.
The Light Manager now clips active dynamic lights against the view frustum when only one view is active. This can noticeably increase the frame rate on levels with lots of dynamic lights.
The %EXE_DIR% in PATH statements is now also used by the WED Publish process.
LC The SHADOW flag restricts a view to shadow throwing objects, for shadow mapping purposes.
LC The view_to_light function sets a view to a dynamic light position.
LC The ptr_remove function replaces all individual remove functions.
LC Lite-C now also supports the conversion between char and short variables by typecasting.
LC A new bmap_blitpart function was implemented for blitting from only a part of a source bitmap.
The ACTIVATE_SHOOT flag for c_move prevents collision events and lets c_move behave similar to c_trace.
LC The render behavior of a view stage can now be determined with the PROCESS_SCREEN and PROCESS_TARGET flags.
LC Views can now be assigned a material that replaces all entity materials and can be used for special effects or postprocessing.
LC The render_stencil bitmap pointer allows rendering the stencil buffer content into an offscreen bitmap for further processing, such as blurring stencil shadows.
LC Through the view stage parameter a rendering chain of views can be created for complex pre- and postprocessing effects, such as shadow mapping.
LC A texture transformation matrix is now used for shifting textures through u,v entity parameters.
Panels now also accept the CENTER_X / CENTER_Y flags for their digits elements.
LC on_scanmessage can be used to set a user defined message handler.
LC engine_getvarinfo returns the type and name of a lite-C variable of the current script, and the name and offset if the variable is an element of a struct.
The Frame Manager in MED is now non-modal and allows inserting frames while editing them. Clicking on a field in the scene column selects all frames from the scene. The current frame is indicated in the frame column. Double clicking on a frame lets MED change to that frame.
LC A small modification to include file handling: #include files given in double quotes "..." are now also searched in the code subfolder. #include files given in angular brackets <...> are only searched in the include subfolder.
LC The engine vertex struct (D3DVERTEX) was moved from the d3d9.h file to atypes.h, for using it in external C++ projects that don't want to include d3d9.h.
LC PRAGMA_PATH can be used to define paths for include files.
The IGNORE_WORLD flag in c_move, c_trace, and c_rotate ignores all level blocks and terrains.
The SED Code Jumper now detects all C standard variable types, functions and #defines. Local variables are not listed anymore in the Code Jumper.
MED can now automatically assign vertices to bones (moved from experimental to production state).
WED can now edit terrains that are placed in the level. For this, select the terrain to edit, and click [Scope Down]. A terrain editor panel will open that gives access to a magnet tool for shaping hills and valleys (moved from experimental to production state).
The pixel_.. functions and the send_..._id functions were changed in afuncs.h so that they now accept a var for the pixel and the client_id, rather than a long. This prevents conversion problems when the pixel or client_id variable was defined as a var rather than a long. Please note that if you used a long in your code you need to change it to a var.
All manual pages now got a [latest version online] button that loads the latest version of the page from the online manual.
ent_clone and ent_cloneskin can be used for individually modifying meshes, skins, and skin materials of an entity.
LC The continue statement now also works in for loops.
LC PRAGMA_PRINT can be used to display compiler messages.
The display of LOD levels in the WED 3D view can now be adjusted in Preferences.
Block surface flags can now be set for all faces together in Block Properties.
LC If a sound file with the name beep.wav is found in the path, it is used for the beep sound.
A7 now supports the 3Dconnexion SpaceNavigator family of 3D navigation devices. If such a device is detected, the engine gives the startup message "3D navigation device found" and binds it automatically in as a first or second joystick device.

WED can now search standard paths for publishing by using the PATH statement in options.scr, e.g. PATH = "%EXE_DIR%\code".
The mouse pointer is now automatically moved when mouse_mode is set at 4.
Two new samples were added to the work folder: pong.c is the classical Pong game and pong_multiplayer.c is its multiplayer version for playing Pong over a network ( P or C ).
X The terrain_lod variable controls caching and LOD for chunked terrain.
LC A new code folder was added to the Gamestudio directory and is automatically searched by the #include directive. The code folder contains common C and shader code, such as mtlFX.c, and the standard .fx shaders.
The _chr function converts STRING* pointers and char arrays to char* pointers (useful for passing text strings to a DLL).
The sun_color vector can now be set to the sun color from the map properties of the level.
New flags IGNORE_FLAG2 and ACTIVATE_PUSH are added to the c_trace and c_move parameters for ignoring certain groups of entities on collision detection.
LC The digits element can now also be used for displaying strings.
LC A wrong number of parameters to a function now throws an error message.
A new VERTEX object was added to the engine objects. It is used for receiving information about c_trace targets and will be used in the future for setting/retrieving positions and uv coordinates by vertex functions.
LC engine_getvar is now documented and works also in lite-C.
effect_load(MATERIAL*,""); reloads the current effect and makes it convenient to edit effects at runtime.
The handedness of the binormal is now stored in the 4th tangent coordinate of every vertex. This avoids shader problems with mirrored coordinates.
The new WED option Mesh Size can be used to greatly increase the rendering speed in complex levels.
SED can now open files by clicking on them even if a SED instance already had files open from a different folder.
ent_remove now also removes view and sky entities.
The PATH statement now accepts the keyword %EXE_DIR% for the Gamestudio folder.
The WED Find function can now find objects by their name or file name.
When c_trace() hits a model entity in OBB mode, the tex_color vector is now set to the color of the texture pixel at the hit point. For this the texture must be a TGA image in 24 bit RGB or in 32 bit ARGB format.
LC When c_trace() hits a level block or a model entity in OBB mode, the predefined hit.skin1 pointer is set to the hit BMAP (the lightmap or the first entity skin), and hit.u1,hit.v1 are set to the u,v coordinates of the hit point on the texture. This can be used to paint on the texture, add or remove shadows, or punch holes in targets with a gun.
LC When a client connects, the on_server event now receives the client number. All send functions also accept the client number to send data to a certain client.
LC send_data_to transmits arbitrary data between clients and server in a network environment.
LC send_var now also works in lite-C and can be used to update arbitrary variables and structs between client and server.
A Duplicate Skin function was added to the MED skin manager. New skins are now always added behind the selected skin.
A shader test project (shadertest.c) was added to the projects folder. You can use it to select between several shaders and activate light sources for testing the effects. The project was created by our future team member, André Weiß, who will join the Gamestudio team by the end of the year after finishing university.
The vecLightPos array now also contains the sun. This way the same shaders can be used for indoor and outdoor lighting.
LC The floatv, floatd, and floatr functions are taken over to lite-C for more convenient conversion of shader scripts.
LC The mtlFX template was converted to C, and the normalmapping and specular bumpmapping shaders posted to the "Ask Conitec" forum were added to the template.
When changing the window size of WED and MED, the views are now proportionally scaled.
X The lightmap resolution can now be adjusted in mesh mode with the slider Lightmap Scale. Please note that this mode is still experimental. It doesn't work yet together with Merge Across Leafs and causes artifacts when the resolution is too low. Set it at 2.0 or above to achieve good results.
pan_setvar and pan_setevent can be used to change functions and variables of panel elements, or to set them in panels created in external languages like C++ or Delphi.
LC Crashes in lite-C functions don't lead to an engine crash anymore, but issue an error message (just as in C-Script). The function name is indicated in the message, making it easy to determine the crash reason.
C The d3d_antialias variable can be used to activate full scene antialiasing before the video device is opened.
Panels, texts and view entities with a negative layer value are now drawn below VIEW objects, and can be used to draw into the background of a view when the sky is switched off.
MED can now import FBX files with an arbitrary number of bones per vertex. Multiple bones animation can be imported, but not edited in MED. The number of bones per vertex is visible under Model Properties. The engine animates up to 4 bones per vertex. The number of bones per vertex can be restricted by setting the max_bones variable (moved from experimental to production state).
X WEDB can now edit terrains. For this, select the terrain to edit, and click Scope Down. A terrain editor panel will open that gives access to a magnet tool for shaping hills and valleys.
The atan2 function is supported for higher precision in trigonometric calculations.
P The session_open function can be used to open a session as a server at runtime.
LC Pointers can now also be compared with >, <, >=, and <=.
LC Functions can now also return short and char variables.
d3d_skydepth can be used to store sky images in compressed format.
The preload_mode variable can be used to prevent the little 'jerk' when an entity becomes visible the first time.
The mtl_remove function can be used to remove temporarily created materials.
File names - for instance in external model skins - may now also contain relative or absolute paths. If the file is not found in the given path, it's searched in the current folder or in the folders given by the PATH statement.
MEDB can now automatically assign vertices to bones. For this, click Apply Vertices with a selected bone, but no selected vertices or groups. MED will automatically find the closest vertices that surround the selected bone and assign them.
MED can now globally scale, mirror, and transform models with all their bones and animations, and allows to separate bones animation matrices into their rotation, translation, and scaling components.
When using the engine as a model viewer, bones animated models now also play through their aimations.
WED now displays the next-higher group in the edit windows when Draw Top Group is activated in WED Preferences.
The LOD flags can be used to determine with which LOD step the entity was displayed in the last frame.
In TEXT and DIGITS definitions, fonts can now be directly defined, rather than using predefined fonts.
The Single Mesh option causes a WED block group to be rendered as a single mesh. This increases the frame rate in levels that consist of complex block geometry, like cities. Most 3D cards achieve the best performance when rendering meshes of about 1000 polygons.
The record_mode variable can be used to check the status or terminate a record / replay operation.
MED FBX import now also supports bones animation. Because the FBX format is not downwards compatible to itself, two FBX importers are now implemented. The normal importer is for FBX files saved with the 2006 FBX version, the 2005 importer is for FBX files saved with the 2005 FBX version.
ent_setmesh can be used to change the mesh of an entity, f.i. for adding lightmapping data.
WED / MED now refreshes its 2D and 3D Windows by right click and selecting GXL / Refresh. Useful if the DirectX device got lost due to task switching or running another DirectX program in the foreground.
LC <windows.h> is now not included anymore by default in lite-C Pure Mode, thus saving a couple seconds compile time. When using the Windows API in Pure Mode, include it manually.
LC Missing include files in lite-C now issue a warning.
move_friction now also works for the OBB collision detection.
bmap_to_alpha creates an alpha channel for an intransparent bitmap.
LC The stdio.h header file was added to lite-C. It contains all file and directory functions from the C libraries io.h, stdio.h, and direct.h.
Entities with OVERLAY flag are now rendered in the solid pass even if they have alpha channel textures.
d3d_alpharef can be used for removing 'black seams' of overlay textures.
LC For easier adding external functions to lite-C, a PRAGMA_API definition can be used.
The Publish dialog can now be called through a WED command line option. SED / Publish now opens the Publish dialog and can thus now also create executables and resources.
MED's Apply Vertices Mode was improved so that vertices and mesh groups can now easier be attached to or removed from bones.