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.

Show posts Menu

Topics - Moru

If you doubleclick the gray area under the jumps/files/web/debug tabs so you get a floating window and then close this window the IDE locks up, you can't even open the menus any more. You can however close down the IDE by right-clicking the taskbar button.
Anyone used this? Can it export to GL-Basic usable format? :-)

QuoteDear Caligari community member,

Today is an important day in the 23 year history of trueSpace. We are
releasing a major upgrade to our flagship product with trueSpace7.6,
bringing significant improvements in modeling, animation, rendering and
workflows, plus new direct export to Virtual Earth.Most of these you might
already expect if you've been following my regular Captain's Blog posts at
What you may not expect is that we are making trueSpace7.6 available to
everyone at no charge, in a giant step forward to bring high-end 3D
authoring tools to all who want them!

trueSpace7.6 is far more than a SketchUp-style 3D architectural modeling
tool. Instead, it provides a complete 3D authoring environment for any
type of 3D content creation, whether that's images, animations, objects
for games, or content or worlds for online interactive shared spaces.
trueSpace7.6's modeling tools feature a variety of surface representations
including full polygonal editing, subdivision surface modeling, NURBS,
metaballs, and implicit surfaces. Those are supported by400+ modeling
tools like real-time Boolean operations with full construction history so
you can move subtracted parts of your design at any time during your work,
or even change a subtraction to an intersection.

trueSpace 7.6 also provides advanced surfacing tools like layered
materials, texture maps, normal maps, procedural materials, UVE
projections, real-time DX9 pixel shaders that include shaders to simulate
subsurface scattering, reflection, refraction, smoke, fire, water,
anisotropicshader, metallic paint, glass – and those are just the
real-time shaders!

The animation capabilities are even more impressive.trueSpace7.6 supports
key-frame and motion capture animation on fully hierarchical objects.
Key-frame animations can be seamlessly blended with procedural animations
and physical simulations, all of which can fully interact with each other.
This means you can have a walking character animated by key-frames getting
hit by a procedurally animated car and fly away in response to the
collision thanks to physical simulation.

In trueSpace7.6 you can also create fully articulated characters and
interact with them using full body IK with editable direct manipulation
widgets for joints (including physical stiffness), and apply physics
oranimated morphs for facial expressions.

If you want to create a photorealisticimagesor a video, then the built-in
Lightworks high quality offline renderer will give you spectacular
rendering results including soft shadows, raytracing, global illumination
in form of hybrid radiosity, image based lighting, caustics, tone mapping,
HDRI, anisotropic reflectance,multi-pass rendering to Photoshop layers,
motion blur, depth of field, lens flares etc.

trueSpace's award-winning direct manipulation interface with its
easy-to-use 2D controls and 3D widgets has always been highly praised by
users and press alike.For version 7.6 we have streamlined many workflows
in extensive collaboration with our Beta testers. The UI is context-based
and fully configurable, including toolbars, panels, widgets, layouts and
projects. With universal drag-and-drop you can simply drop your model from
the 3D workspace directly into an e-mail, written document, etc, and vice
versa, clicking on the object in an e-mail will automatically open it in

There are also a series of advanced editors. In addition to the 3D
workspace and modeling editors, there are a universal 2D node link editor,
a script editor,a non-linear animation editor, a material editor, a UV
editor, and more. Plug-ins are now accessible from the real-time 3D
workspace and we expect to release truly amazing plug-ins for trueSpace7.6
in the near future, as well as stimulate 3rd party creation of independent
products both free and commercial thanks to the availability of an SDK.
Finally, trueSpace7.6 is the only 3D authoring tool on the market which
will allow you do all of the above in real-time shared 3D collaborative
spaces where members of the design or animation team can maintain
real-time interaction from anywhere in the world.

We are taking the unprecedented step of making these tools available to
everyone for free in order to stimulate content creation for the present
and future online 3D environments, and so that any artist out there with a
dream can fulfill their vision without finding themselves trapped by
budget limitations. This is particularly true if their vision includes
emerging 3D online worlds, where free and unrestricted communities of web
artists can collaborate on 3D projects and even establish new kinds of
communities the likes of which the world has never seen before, way beyond
simple chats in isolated 3D rooms or 3D islands.

Above all, trueSpace7.6 will empower you to create anything you dream up,
whether you want to make illustrations for National Geographic, design
products for Rolls-Royce, create buildings for Virtual Earth, make
advertising or training videos, architectural walkthroughs, innovative
video games, or animated films.All of these possibilities are now open to
you simply by downloading trueSpace7.6 and learning what its powerful 3D
authoring tools can do for you!

To download trueSpace7.6, visit the link below:

Also, to aid in your learning process we have made all of our video
courses, previously $79 each, available at no charge, and you can download
those courses here.

Another good way to learn is to join our active user community on our
forums: (

At a time when other companies are removing their low cost products to
make it even tougher to get started in 3D, it gives us great pleasure to
enable all artists regardless of age or income to create 3D in whatever
field they dream of. We hope you enjoy your copy of trueSpace7.6.

Roman Ormandy
Caligari Corp
QuoteEdit: Solution turns out to be not to call NETNUMPLAYERS() every frame. I'm now only calling it once every five seconds and only on the server, the clients take too long to call. So the server gets to send the client-list to all the clients.

I'm still having trouble getting network to work, here are some comments so far:

Manual missing for NETSENDMSG (tutorial says it needs two parameters but editor and compiler says three)

If one client sends a message, how does the other clients know from whom it came? Do I need to add the client ID to the message myself? Wouldn't this make it easy to spoof messages so they look like they are coming from someone else?

Is there a way for the server or the clients to get a message when a player leaves or joins?

Does the ID returned from NETCREATEPLAYER$ have to be a string as in the tutorial? I only get numbers so far.

Setting the connect adress to doesn't search the network for a server, not even if I'm running it local on the same computer. Setting adress to "" works though.

This is my testcode so far, I can connect to the server and get logged in and in the playerlist I get the same display on both running programs, Admin and User1 is displayed as players. If I wait a while the server changes the User1 name to something random and locks up wich sometimes causes the client to lock up also.

I'm still seeing that the server program reacts slowly, the userlist changes much later on the server (background process) than on the client. The program is doing a 20 ms pause each SHOWSCREEN wich makes at least my computer run at 0-10% processor power so it can't be why it's so slow.

On the screenshot the top program is the host, the other the client.

Code (glbasic) Select
// --------------------------------- //
// Project: Network test
// Start: Wednesday, June 11, 2008
// IDE Version: 5.254

AUTOPAUSE FALSE // don't pause the game when running in the background

// Global declarations for the network options
GLOBAL __TCP_IP = 0  // If we want a TCP/IP connection we use this one to start the server
GLOBAL __IPX = 1 // If we want IPX we use this one (Only local area network server, not internet)

GLOBAL ok = 0
GLOBAL name$ = "" // The local players name
GLOBAL id$ = 0 // Your local player-id
GLOBAL playerID$[] // array with all ID's connected (after ShowPlayers have run)
GLOBAL playername$[] // array with all names connected
GLOBAL playermsg$[] // space for the message from each player
GLOBAL running_as_client // to keep track of if we are server or client
GLOBAL running_as_server

LOCAL msg$

// Connecting to the server, as adress makes it search the local area for a fitting host
ok = NETJOINGAME(__TCP_IP, "My testserver", "", "")
IF ok = TRUE
running_as_client = TRUE
PRINT "Can't connect to server", 100, 100
PRINT "trying to create server instead", 100, 110

ok = Host() // Call the function for hosting a game
IF ok = TRUE
running_as_server = TRUE

PRINT "Name:", 0, 100
INPUT name$, 100,100


// ------------------------------------------------------------- //
// ---  Main game loop  ---
// ------------------------------------------------------------- //
// Get a character from the keyboard
in$ = INKEY$()
IF in$ <> "" // If user pressed a key
ok = NETSENDMSG(id$, "", in$) // send message to all


PRINT "Message: " + msg$, 100, 0
GOSUB ShowPlayers

PRINT "ID: " + id$ + " - " + RND(50), 0, 0 // just to show that the program is running
SLEEP 20 // give the processor some rest (and let the other clients work)


// ------------------------------------------------------------- //
// ---  HOST  ---
// ------------------------------------------------------------- //
// Hosting a server:
ok = NETHOSTGAME(__TCP_IP, "My testserver", "", "")
IF ok = TRUE
PRINT "Can't create server", 100, 100

// ------------------------------------------------------------- //
// ---  SHOWPLAYERS  ---
// ------------------------------------------------------------- //
SUB ShowPlayers:
LOCAL NumPlayers = 0
LOCAL i = 0

PRINT "Joined Players:", 100, 50
REDIM playerID$[NumPlayers]
REDIM playername$[NumPlayers]

FOR i=0 TO NumPlayers-1
PRINT i + " " + playername$[i] + " (ID:" + playerID$[i]+")", 100, i*20+100


[attachment deleted by admin]
Off Topic / Blender - AC3D
Anyone with extensive experience with both Blender and AC3D? I was trying to figure out how to use blender but can't get such a simple thing as a texture to a cube so I started looking at UV mapping. Is it realy that much hasle doing a simple texture to an object? Is it the same trouble to do UV mapping in AC3D?

What about animations in Blender, is it needed for making animated models in GL-Basic or is the best way to make different models for each position?

Any other modelling program that is easier to use than Blender? Open source is ofcourse a plus :-)
Everytime I'm making a new little testproject and create a font I end up with the same problem, the fonts I create with DiNGSFont just don't work. I search for different errors in my code and remove code I'm not certain about. And then I end up noticing that I have spelled the filename wrong somehow. I though it was saved from the last time I used the program but now I realize it doesn't. Small is spelled with 2 L, not one as in the program! :-)
DD-GUI / DDgui fix
I'm trying to change the DDgui functions to work with DRAWRECT instead of FILLRECT. The irritating part is that DRAWRECT is using the width and height of the box instead of the actual coordinates of the endpoint. Trying to figure it all out wasn't as easy as I thought because the original author had to go afew hoops around to get it working with exact coordinates so I'm having a hard time thinking it back  :)

I do like the new DRAWRECT using the width and height but wouldn't it be easier to have left in the FILLRECT command for backwards compatibility?  :)

It would be nice with proportional fonts on this one, don't you think?  ::)

Download: Second attempt worked a bit better :-)
Most things working except the placement of the cursor and selecting in text-boxes but you can still enter text.
Is it possible to create the data for the drawanim command in the program? Like grabsprite but for drawanim.
Another version for the FMP loader. It only supports version 1.0 of the format so make sure you set that in the editor!
Now scrolling is working as expected. You can turn on or off wrap North/South, East/West. No collision yet because I'm still working on getting the sprite.y sorting to work well. - click the code tab
Updated 2008-08-17

Screen updates with animated tiles at around 20 fps on a GP2X with eight layers of tiles. (If you ever would like that many layers)

Each tile will have four flags for collision so you can make tiles that block passage in 1, 2 or three directions (or all four for that matter) Makes for nice placements of chairs or fences that don't have to waste a whole tile for blocking.
GL Basic is not always recompiling after you have made small changes to the file, why is that? I remember we discussed it earlier but I can't seem to find the link, is this problem something that can be fixed?

The solution right now is to click the debug button twice to force it to recompile but when I'm tired I just keep trying to get my code working and I see no changes in the result :-)
How do I know if I am about to read past the end of a file? I want to read a whole chunk of data to skip to the next chunk in the file but what if the file is damaged and it ends after 10 bytes and I try to read 20 bytes? GL Basic just crashes with a not very helpful error message, how can I prevent this happening?

I'm doing something similar to this:
Code (glbasic) Select
WHILE temp$ <> "BODY"
IF length > 0
READSTR filenr, temp$, length
READSTR filenr, temp$, 4
READLONG filenr, length
I would like a command for checking what byte I'm reading from in the file (file pointer) and a way of checking how long a file is in bytes.
I'm having troubles with converting unsigned longs from big endian to little endian format. Is there any bitwise shift command in GL-Basic? I'm using this code now but I can't convert numbers that end with a byte that starts with a 1 (binary).

Code (glbasic) Select
x = MSB_long(0xC8000000)
// x is supposed to be 200 after this call but the result you get is -128

FUNCTION MSB_long: number
LOCAL x1,x2,x3,x4

// Isolate the separate bytes
x1 = bAND(number, 0xff)
x2 = bAND(number, 0xff00) / 0x100
x3 = bAND(number, 0xff0000) / 0x10000
x4 = bAND(number, 0xff000000) / 0x1000000

// Add back the bytes in opposite order
number = 0
number = number + x1 * 0x1000000
number = number + x2 * 0x10000
number = number + x3 * 0x100
number = number + x4
RETURN number
what I want to do is just shift the bytes one at a time to the right instead of dividing by 0x1000000. If I do that he will think I'm dividing a negative value because of the first bit being set. Does anyone know of a better way to do this if there is no way of shifting bits?
GLBasic - en / Mappy loader
Has anyone made a loader for the mappy format FMP?

Program and documentation here:

If not I guess I'm starting on it when I have some time :-)
This bug is back again, I can't assign a value to a variable in a global declaration

In the code below the two debug lines are supposed to return the same values.

Code (glbasic) Select
// IDE Version: 5.047

GLOBAL sx,sy,width
width = 40

// This gets the wrong result
GLOBAL y1 = sx / width
DEBUG " y1=" + y1 + " sx=" + sx + " width=" + width + "\n"

// If I do the same but split the line I get the correct result
y2 = sx / width
DEBUG " y2=" + y2 + " sx=" + sx + " width=" + width + "\n"
but I get this output:
 y1=-1.#IND sx=640 width=40
 y2=16 sx=640 width=40
This returns syntax error since last update:
Code (glbasic) Select
LOCAL x = 0, y = 0
GLBasic - en / Playing music
Is it possible to start playing an MP3 at a certain position in the file? For example if the user has quit the player I want to be able to start the audiobook where the user left.
Not to make anyone cry again but...

Why is it I can't assign a value to a global and at the same time compute a new value, like this:

Code (glbasic) Select
GLOBAL x = y / zIf I look into variable x now with debug I get the answer -1.#IND

if I do this it works as expected:

Code (glbasic) Select
x =  y / z
I saw you Gernot use the first line in your examples so I started doing this myself and at the last update my game broke down :-)

(And no, this is not the actual program, just the simplest recreation of the problem, you know who you are :-)

Do we get a bug-report forum? And can we start posting bugs in separate threds so they are easier to keep track of? Not bake them into the announcement thread of an old version? (Never wanted to be a forum moderator but I'm used to nicely moderated forums :-)
I'm wondering if anyone else have troubles with the editor window not focusing after the game closed? There is no cursor but if you press up or down the view will scroll. Mouse wheel doesn't work until you click the editor window.

Also, when I click a certain position in a line and press arrow up I don't expect the cursor to jump to the first position of the previous line unless that line is empty.  It seems it's just a question of the old x position not getting updated when you click with the mouse.

I know it is small things but they are not intuitive. Mabe something for your list of "rainy day" tasks? :-)
Hello! We are having troubles with grabsprite, in the example code below it will only grab two sprites, the other two becomes black or transparent or whatever, they do not display at least.

Also, the first sprite is missing the upper corner 3 pixels (colour #EADFE2), the second is missing random pixels here and there. And the > DEMO message up in the left corner is upside down :-)

Code (glbasic) Select
LOADBMP "background.bmp"  // just some random patterns in gray and white, 320x240
GRABSPRITE 1,0,0,32,32
LOADBMP "bluedots.bmp"  // Some blue and white dots 50x50
GRABSPRITE 2,0,0,32,32
LOADBMP "lila.bmp" // purple single colour 50x50
GRABSPRITE 3,0,0,32,32
LOADBMP "white.bmp" // white 50x50
GRABSPRITE 4,0,0,32,32

DRAWSPRITE 3,100,100
DRAWSPRITE 4,150,100
This is ofcourse not the program we have troubles with, this is the easiest way to recreate the problem.

The pictures are all made in Paint Shop Pro 5 but we also tried paint with the same result.

Any idea what the trouble is?
GLBasic - en / Rotate camera

I was wondering how to rotate the camera. X_ROTATION 10, 1,0,0 before I place the camera doesn't work, it just exits when I try to start the program, no error code.

I'm trying to create a bike-sim (very simple one ofcourse :-) I can drive around the landscape but I can't tilt the camera to recreate the lean into curves feeling of driving a bike