Gamestudio 8.47

Posted By: jcl

Gamestudio 8.47 - 03/07/16 14:51

A new version is available for a public beta test:

http://server.conitec.net/down/gstudio_8470.exe

This version is supposed to fix the two random crash bugs that were recently reported. Please check carefully if everything works.
Posted By: pegamode

Re: Gamestudio 8.47 - 03/07/16 15:12

I can confirm that the reported engine crash doesn't occur with this new version.

I'll do some further tests this evening.
Posted By: FBL

Re: Gamestudio 8.47 - 03/07/16 17:16

Seems to fix the Wichtelwald problem as well. I'll quote the original post in the corresponding thread.
Posted By: Superku

Re: Gamestudio 8.47 - 03/07/16 17:30

Great, thanks!

So far everything is working fine in multiple projects. Yesterday my main project started to crash ("acknex has stopped working") when using "Test Run" instead of "Run Current Script", I assume because of different command line options. This crash is now gone, too.
Posted By: pegamode

Re: Gamestudio 8.47 - 03/07/16 20:13

Have there been any changes within the compiler?

With this new version I get a "Wrong type CONV:POINTER::DOUBLE" when trying to access one of my external dlls.

I try to break this issue down to a small test script.
Posted By: pegamode

Re: Gamestudio 8.47 - 03/07/16 20:57

Here's a little test script:

plugin_test.rar

This one works fine with 8.46 but gives me a syntax error with 8.47.
Posted By: WretchedSid

Re: Gamestudio 8.47 - 03/07/16 21:17

Your header misses all type information completely. Frankly I'm surprised it ever compiled in the first place.
Posted By: Superku

Re: Gamestudio 8.47 - 03/07/16 21:29

I really don't like that thing of not writing type information but AFAIK all parameters without type are expected to be/ treated as var, as well as the "function" keyword itself (or is it void?). So that should be fine I guess.
Posted By: pegamode

Re: Gamestudio 8.47 - 03/07/16 21:32

As far as I remember you don't need type declarations in dll function prototypes. At least there are none in the basic dll plugin example in the manual.
Posted By: Superku

Re: Gamestudio 8.47 - 03/07/16 21:46

I think that's only because the DLL functions in the example use and return var values, something with that _VAR(...) macro or whatever it was.
Posted By: WretchedSid

Re: Gamestudio 8.47 - 03/07/16 22:37

Originally Posted By: Superku
I really don't like that thing of not writing type information but AFAIK all parameters without type are expected to be/ treated as var, as well as the "function" keyword itself (or is it void?). So that should be fine I guess.


function is an alias for var, so the return type is there. Anyway, not declaring a type is something that was legal in K&R C and up to C89, looked something like this:

Code:
void foo(x)
    int bar;
{}



It's no longer valid since C99, for very obvious and good reasons. You can ommit the name though, and write something like "void foo(int, char*)". BSD is infamous for having type signatures like that. Imho everyone who is into the UNIX philosophy of using the least amount of characters to write a function declaration should be stoned, but nobody is asking me who should be stoned anymore these days (but seriously, who is expected to understand "void strncat(char*,const char*, size_t)" without looking it up?!)

So yeah, no, not legal. However, since we are at the topic of C quirkiness, anyone want to take a guess what the difference between these two is?

Code:
void foo();
void bar(void);



Answer:
Click to reveal..

The first one will accept ANY argument, you can call it with as many arbitrary arguments you want. The second one doesn't accept any. C++ did away with that insanity, also for good and obvious reasons.
Posted By: HellThunder

Re: Gamestudio 8.47 - 03/08/16 06:42

Tried one of my scripts which is using mtlFX.c and got this.

I'm using Lite-C Free.
Posted By: pegamode

Re: Gamestudio 8.47 - 03/08/16 08:10

Originally Posted By: WretchedSid
Originally Posted By: Superku
I really don't like that thing of not writing type information but AFAIK all parameters without type are expected to be/ treated as var, as well as the "function" keyword itself (or is it void?). So that should be fine I guess.


function is an alias for var, so the return type is there. Anyway, not declaring a type is something that was legal in K&R C and up to C89, looked something like this:

Code:
void foo(x)
    int bar;
{}



It's no longer valid since C99, for very obvious and good reasons. You can ommit the name though, and write something like "void foo(int, char*)". BSD is infamous for having type signatures like that. Imho everyone who is into the UNIX philosophy of using the least amount of characters to write a function declaration should be stoned, but nobody is asking me who should be stoned anymore these days (but seriously, who is expected to understand "void strncat(char*,const char*, size_t)" without looking it up?!)

So yeah, no, not legal. However, since we are at the topic of C quirkiness, anyone want to take a guess what the difference between these two is?

Code:
void foo();
void bar(void);



Answer:
Click to reveal..

The first one will accept ANY argument, you can call it with as many arbitrary arguments you want. The second one doesn't accept any. C++ did away with that insanity, also for good and obvious reasons.


I use this plugin with this kind of function prototypes since 2008 without any problem ... until now. So there must have been a change with this version or accessing external plugins via dll isn't possible with an open beta version at all?
Posted By: Iglarion

Re: Gamestudio 8.47 - 03/08/16 09:17

Thanks for update!
Btw, i got same error like HellThunder.
Posted By: jcl

Re: Gamestudio 8.47 - 03/08/16 16:57

Yes, the error is caused by functions with no parameter types. This is not intended, so I'll upload a new version tomorrow with the old compiler behavior.
Posted By: WretchedSid

Re: Gamestudio 8.47 - 03/08/16 20:59

Originally Posted By: pegamode

I use this plugin with this kind of function prototypes since 2008 without any problem ... until now. So there must have been a change with this version or accessing external plugins via dll isn't possible with an open beta version at all?

I was mostly trying to say why the code shouldn't have compiled in the first place. If I may ask, why don't you provide type information? The type will default to int, which may or may not be the size of a pointer (most likely it will be on a 32 bit system), but the type int is only guaranteed to be at least 2 bytes. Same with using function, var is not really a type meant for holding pointers. Just because everyone does it, doesn't meant everyone should!
Posted By: pegamode

Re: Gamestudio 8.47 - 03/09/16 08:16

Originally Posted By: WretchedSid
Originally Posted By: pegamode

I use this plugin with this kind of function prototypes since 2008 without any problem ... until now. So there must have been a change with this version or accessing external plugins via dll isn't possible with an open beta version at all?

I was mostly trying to say why the code shouldn't have compiled in the first place. If I may ask, why don't you provide type information? The type will default to int, which may or may not be the size of a pointer (most likely it will be on a 32 bit system), but the type int is only guaranteed to be at least 2 bytes. Same with using function, var is not really a type meant for holding pointers. Just because everyone does it, doesn't meant everyone should!


I guess the reason was the example in the manual:

Quote:


Using the DLL in C-Script and lite-C

...

In lite-C it's just a normal prototype (and you can use other variable types than var), in C-Script we need a special dllfunction declaration:

dllfunction ldexpc(x,n); // declaration of a DLL function in C-Script
function ldexpc(x,n); // declaration of a DLL function in lite-C



I also assumed that the default type is var not int.
Posted By: jcl

Re: Gamestudio 8.47 - 03/09/16 13:11

This is the new version with no error message for missing argument types:

http://server.conitec.net/down/gstudio_8471.exe
Posted By: pegamode

Re: Gamestudio 8.47 - 03/09/16 13:56

Everything's running fine now ... engine crash is gone and missing argument types are no problem anymore.

I'll do some further tests this evening.
Posted By: Superku

Re: Gamestudio 8.47 - 03/12/16 10:41

Was there something changed with MED (highly unlikely, I know)?
Since the patch MED crashes every now and then on some bone operations, like trying to move a bone. The last MED crash before that was many years ago.
Posted By: jcl

Re: Gamestudio 8.47 - 03/14/16 07:37

No, it's the same MED as before.
Posted By: Tele

Re: Gamestudio 8.47 - 03/21/16 21:57

Have there been any changes within the compiler?

When I compile a larger level, the Ram is not enough, My ram is 32 GB.
That was not there before.
When compiling with activated terrain lihgtning.
Posted By: jcl

Re: Gamestudio 8.47 - 03/22/16 08:03

No change of the compiler.
Posted By: Superku

Re: Gamestudio 8.47 - 04/07/16 13:02

Hm sadly I'm still getting the "bad file format" error, with WMBs though.
Happened 3 times so far over ~10 days on the first level_load call (for the menu.wmb which hasn't changed in quite some time).

The acklog:

Click to reveal..
Quote:
Log of A8 Engine 8.47.1 run at Thu Apr 07 14:55:54 2016
Felix on Windows NT/2000/XP version 6.1 Build 7601
Options superku.c -eq -nwnd -nx 200 -diag -ns -tu
App: C:\GStudio8\acknex.exe in C:\GStudio8\Superku_Rage\

DI interface opened
Start Window opened(c) Conitec - www.3dgamestudio.com
A8 Engine - Pro Edition V8.47.1 - Mar 9 2016
Development version
Registered to: Felix Pohl

DI Microsoft-PC-Joysticktreiber 5 axes 10 buttons initialized
Mouse found
Joystick found
NVIDIA GeForce GTX 660 pure T&L device 1ff9 detected
D3D device NVIDIA GeForce GTX 660 1ff9 selected.
PATH ..\superku_rage\
PATH Bilder\
PATH Level\
PATH Sounds\
PATH Sounds2\
PATH Musik\
PATH Modelle\
PATH Texturen\
ackAR.dll opened
acknet.dll opened
ackoal.dll opened
ackphysX.dll opened
ackSuperku.dll opened
ackwii.dll opened
ackXinput.dll opened
irrKu.dll opened
ports.dll opened
Compiling SUPERKU.C - [Esc] to abort....
PATH C:\GStudio8\templates\images\......................................................................................................................................................................................................................................................................................................
gewusel_do_limits: function not found
menu_item_function_pointer: function not found................................................................................................................................... 24.001 sec
Running SUPERKU.C
129 objects
Main started at 24.124
D3D_Init Window: 720x480 -> Window: 1x720x480x32
Video memory found: 4034 MB
D3D_Resize Window: 1920x1080 -> 0x0 failed -> Window: 1x720x480x32
def_startup started
draw_regions_startup started
Main loop at 25.014
LevelInit at 25.193
155 entities 1 cameras 0 lights 0 sounds 0 paths

Error E1198: MENU.WMB: Bad file format
Program aborted...



EDIT: I'm not quite sure how long I've been using the "-ns" command line option. I'm gonna remove that again and see if the error still appears. Happens without "-ns" too.

EDIT 2/3: When I load a (NULL) level before the background loop function which uses ent_createlayer() to create a SKY entity, the sky entity won't show up in a view, even though the client_id property remains NULL. If I'm not mistaken that should be a bug.

EDIT 4: Now I barely get my game to start anymore. It's either "acknex has stopped working", "bad file format: menu.wmb" or a new one, a "script crash" during level_load(NULL).
© 2024 lite-C Forums