AGS 3D

Started by DoorKnobHandle, Sun 15/05/2005 15:21:53

Previous topic - Next topic

Kweepa

#200
Quote from: [ ... ] on Sun 28/08/2005 21:04:17
you also kept me working on the "Indy: FoY Demo" instead of wasting my time
Does this mean I get a credit? :)
(FoY is taking longer than Duke Nukem Forever!)

Quote
implementing features for AGS 3D that you added in 12 hours...
Well, to be honest I've probably spent at least 24 hours on it so far.

[EDIT] Make that 25 hours.
- big speedup (worst case improved from 15 to 34 FPS on my PC) by caching info needed for sorting
- delete selected primitive(s) with Shift-X in the editor

And I'd just like to say how awesome the module system in AGS is. It was trivial to convert this to a module and it worked flawlessly.
Still waiting for Purity of the Surf II

Pumaman

I've just given this a go, and I have to say this is some amazing work guys! It's astounding what you guys can do with the script language when you put your minds to it  :)

I'm glad you found the module system helpful. :)

Kweepa

Updated to do more things automatically, and simplify the scripting.
Also added a text file with the first draft of the "manual" based on Gilbot's parallax script module manual.

http://www.steporg.com/step/ags/games/ags3d.zip
Still waiting for Purity of the Surf II

Gilbert

Quote from: SteveMcCrea on Tue 30/08/2005 06:50:03
Also added a text file with the first draft of the "manual" based on Gilbot's parallax script module manual.

Hmmm I didn't check, didn't you use some of the 2.71 beta 3 features? Or it's changed (maybe the module part doesn't rely on that?)? Otherwise the requirements may need to be changed.

Rui 'Trovatore' Pires

I say, is that "props" GUI ever going to get used? Tis a nifty thing for the editor, to be sure.

ALso, I know THAT's not your department, Steve, but this is still the best place to post: how unutterably sad it is to type "Ags", nay even "Ags3d.", and not see an autocomplete box popping up! Do you know why this happens?
Reach for the moon. Even if you miss, you'll land among the stars.

Kneel. Now.

Never throw chicken at a Leprechaun.

Kweepa

Quote from: Gilbot V7000a on Tue 30/08/2005 07:32:01
Hmmm I didn't check, didn't you use some of the 2.71 beta 3 features? Or it's changed (maybe the module part doesn't rely on that?)? Otherwise the requirements may need to be changed.
Yes, you're right, I appear to have used:
- new Strings, in a few places (although I couldn't get String.Append to work)
- correct mapping of PgUp and PgDn keys
- dynamic sprite rotation
- Maths.ArcTan2

I'd better change the requirements when I finish the doc.

Quote from: Furry
is that "props" GUI ever going to get used?
Not for this... It would make things inconsistent if you could say, set the filter for objects and characters through their properties, but then had to call a function to set the filter for primitives.

Quote from: Furry
how unutterably sad it is to type "Ags", nay even "Ags3d.", and not see an autocomplete box popping up! Do you know why this happens?
I guess CJ hasn't had time to parse the headers for struct members to add to the autocomplete list. That would be very nice, wouldn't it?
Still waiting for Purity of the Surf II

auhsor

I had a play around with it following the text file, but I think you missed some parameters. It confused me until I opened up your rooms and compared them.


  Ags3d.SetPrimScale(i, 500.0, 10.0, 500.0);  // stretches it out to cover more space
  Ags3d.SetPrimFilter(i, AGS3D_FILTER_ALL);   // makes it visible and collidable

I shall continue playing.

Rui 'Trovatore' Pires

I say, I had some dificulty using "GetLightX". In fact, I didn't manage at all, I had to make my own floats and use them. How should this one be used? I tried many different ways, and I'm only saying this now in case it's something wrong in your code (which I don't think likely - just in case it is).
Reach for the moon. Even if you miss, you'll land among the stars.

Kneel. Now.

Never throw chicken at a Leprechaun.

Kweepa

GetLightX? I don't remember exporting that one.
If it's useful I'll export GetLightX, GetLightY, GetLightZ. Although using your own works too, obviously.
I was worried about flooding the interface with accessors and swamping the essential functions.

Sorry about missing out the parameters. I wrote some of it from memory.
This evening I'll finish the doc and convert it to html.

Cheers!
Still waiting for Purity of the Surf II

monkey0506

#209
Quote from: SteveMcCrea on Tue 30/08/2005 13:42:30- new Strings, in a few places (although I couldn't get String.Append to work)

I presume that you of course know that the String.Append function returns the appended String, and does not actually change the String*?

Cause if you knew that then I don't see why you couldn't get it to work...

*You use it like:

String Text = "some text";
Text = Text.Append(" goes here");

Not:

String Text = "some text";
Text.Append(" goes here");

[EDIT:] Hmm...it's odd that it doesn't autocomplete.  My structs defined in SM headers do...perhaps it doesn't like that '3' being there?

Kweepa

Quote from: monkey_05_06 on Tue 30/08/2005 16:22:56
I presume that you of course know that the String.Append function returns the appended String, and does not actually change the String*?
That's probably what I was doing wrong. Heh.

Quote
[EDIT:] Hmm...it's odd that it doesn't autocomplete.  My structs defined in SM headers do...perhaps it doesn't like that '3' being there?
Does it autocomplete static function names defined in a struct in a script module? If so perhaps it's a new feature of beta 4? I doubt it's the '3'.
Still waiting for Purity of the Surf II

monkey0506

Yeah it autocompletes my struct name as well as those of static functions (which I have a lot now that Strazer showed me how to make a SM properly :D).

Perhaps it is a beta 4 thing.  I don't know...but I'm pretty sure it did it (for me at least) with beta 3... ???

strazer

Quote from: SteveMcCrea on Tue 30/08/2005 13:42:30
Quote from: Furry
how unutterably sad it is to type "Ags", nay even "Ags3d.", and not see an autocomplete box popping up! Do you know why this happens?
I guess CJ hasn't had time to parse the headers for struct members to add to the autocomplete list. That would be very nice, wouldn't it?

Change
struct Ags3d
{
to
struct Ags3d {
and it works.

monkey0506

Quote from: strazer on Tue 30/08/2005 17:12:48
Quote from: SteveMcCrea on Tue 30/08/2005 13:42:30
Quote from: Furry
how unutterably sad it is to type "Ags", nay even "Ags3d.", and not see an autocomplete box popping up! Do you know why this happens?
I guess CJ hasn't had time to parse the headers for struct members to add to the autocomplete list. That would be very nice, wouldn't it?

Change
struct Ags3d
{
to
struct Ags3d {
and it works.

Ha!  I always told people that the '{' should appear at the end of the line where the block starts!!! :D

At least in my opinion it makes it clearer that the line is ended by the beginning of a block of code that way instead of just ending...

Kweepa

#214
Pah! I refuse to conform to that archaic brace standard, just to get autocompletion. :=
Ok, maybe I will... thanks Strazer.

Kind of weird though! What kind of parser doesn't treat all white space the same? Aside from lines beginning with # that is...
Errm, and lines with // in them...
Still waiting for Purity of the Surf II

Pumaman

Quote from: SteveMcCrea on Tue 30/08/2005 18:28:46
Kind of weird though! What kind of parser doesn't treat all white space the same?

The autocompletion "parser", that's what!!

Kweepa

Hah! :=

I finished up the documentation and converted it to rtf.
I also tweaked a few of the functions and enabled autocompletion.
Finally I added the ability to change primitives' filters from the editor.
I think this is just about ready to unleash on the great unwashed masses.
I'll keep it in beta here in this thread for a couple of days, then start a new thread for it.

Cheers,
Steve

http://www.steporg.com/step/ags/games/ags3d.zip
Still waiting for Purity of the Surf II

Rui 'Trovatore' Pires

#217
\o/

\o/\o/\o/

I'll up it to my sitey as soon as it leaves beta stage.

EDIT - Hmmm, you seem to assume that the player character's internal name will be EGO. It would be good to either change that (maybe you can use the "player" keyword?) or document it. For instance, I, for one, never use "EGO" even as the internal name.

EDIT 2 - Also, I assumed SetObjectScale would resize the object... but when I try using it on the "DOORHANDLE" object, no matter what value I use, it remains the same size. SHould it change the size at all, or am I assuming wrong? Or am I using the thing incorrectly by going Ags3d.SetObjectScale(DOORHANDLE, whatever.0, whateve.0, whaveter.0); ? Nevermind

BTW, in teh tutorial you have SetNumDirections - forgot the "Character" bit. And forgot to add that we have to put "25.0" as the last parameter in SetCharacterFollowGround.

EDIT 3 - I tried to make my character collidable-with. I managed to do it, AFTER setting her scale. This is not mentioned in the documentation, and it kinda should. ::) ALso, as a user, I'd like to know what kind of calculations upon the character sprite I should make in order to get a standard "scaling". For instance, I saw your Mika sprite is 40 pixels wide, and the first float in her scale is 10.0. Does that mean that generally speaking we should divide the sprite's width by 4?

Also, you mention in the manual that the "character functions" acn also be changed at runtime (in the editor, I mean) with the ASDRFT keys. That's not so, unfortunately (it WOULD be great!), as I can't right-click-select objects OR characters, and there is no longer a key to press that cycles through available prims (though I think that even then it did not select characters or objects).

:=

EDIT 4 - When making her walk, I randomly get this error (or at times get no error at all):

"in Ags3d (line 2993)
from Ags3d (line 3199)
from Ags3d (line 3208)

Error: GetGameParameter: invalid frame specified"

You have my test game already, so you can try it yourself with the views/frames/character I'm using. I disabled "Diagonals" but kept "Turn before walking" both in the character and in the general pane. I'm making her walk with cRosella.Walk(Random(400)-200,Random(400)-200,eNoBlock,eAnywhere);

EDIT 5 - You didn't add any way to get the camera/player's coordinates? I'm sure that's just an oversight, bue please correct it... I find that to be THE most useful set of values, as it allows us to make all sort of special effects depending on where the player is. 3d's the best way to take advantage of those.

EDIT 6 - "Ags3d.SetFirstPerson(false);" doesn't seem to do anything... or is it just me?

EDIT 7 - You added a SetEditorCursorSprite thingy. That's great. ANd what about an optional SetCursorSprite, not confined to the editor? I know, I know, it's easy enough to add it ourselves, but for the sake of completeness... ::)

And now I think I'm done.  ;D
Reach for the moon. Even if you miss, you'll land among the stars.

Kneel. Now.

Never throw chicken at a Leprechaun.

Kweepa

Quote from: Rui "Brisby" Pires (a Furry) on Wed 31/08/2005 09:28:17
EDIT - Hmmm, you seem to assume that the player character's internal name will be EGO. It would be good to either change that (maybe you can use the "player" keyword?) or document it. For instance, I, for one, never use "EGO" even as the internal name.
It's just for the tutorial section. I think it's pretty clear, but player might be better.

Quote
EDIT 2 - Also, I assumed SetObjectScale would resize the object... but when I try using it on the "DOORHANDLE" object, no matter what value I use, it remains the same size. SHould it change the size at all, or am I assuming wrong? Or am I using the thing incorrectly by going Ags3d.SetObjectScale(DOORHANDLE, whatever.0, whateve.0, whaveter.0); ? Nevermind
If this confused you it probably needs more explanation in the manual.

Quote
BTW, in teh tutorial you have SetNumDirections - forgot the "Character" bit. And forgot to add that we have to put "25.0" as the last parameter in SetCharacterFollowGround.
Right, I'll fix that.

Quote
EDIT 3 - I tried to make my character collidable-with. I managed to do it, AFTER setting her scale. This is not mentioned in the documentation, and it kinda should. ::) ALso, as a user, I'd like to know what kind of calculations upon the character sprite I should make in order to get a standard "scaling". For instance, I saw your Mika sprite is 40 pixels wide, and the first float in her scale is 10.0. Does that mean that generally speaking we should divide the sprite's width by 4?
The characters and objects follow the same rules as the other sprites. So the scale is only used for sorting and player collision. The collision width you choose depends on the sprite scaling.
Which reminds me, I should allow objects to be rotation dependent.

Quote
Also, you mention in the manual that the "character functions" acn also be changed at runtime (in the editor, I mean) with the ASDRFT keys.
I did? I must have cut and pasted that text into the wrong section.

Quote
That's not so, unfortunately (it WOULD be great!), as I can't right-click-select objects OR characters, and there is no longer a key to press that cycles through available prims (though I think that even then it did not select characters or objects).
Yes, I got rid of that key. I think it's pretty much superceded by the right click to select, and it didn't work right with multiple selection.
I should probably allow selection of sprites, characters and objects. That's a pain to do, but definitely possible. Hmm.

Quote
EDIT 4 - When making her walk, I randomly get this error (or at times get no error at all):

"in Ags3d (line 2993)
from Ags3d (line 3199)
from Ags3d (line 3208)

Error: GetGameParameter: invalid frame specified"
That's odd. I'll take a look. (Does she have 8 loops?)

Quote
EDIT 5 - You didn't add any way to get the camera/player's coordinates? I'm sure that's just an oversight, bue please correct it... I find that to be THE most useful set of values, as it allows us to make all sort of special effects depending on where the player is. 3d's the best way to take advantage of those.
You're right, I forgot those would be useful.
Another useful one would be the tag of the ground, and the tag of the primitive you are colliding with. Oh, and tagging objects and characters.
For example:
Ags3d.GetPlayerGroundTag();
Ags3d.GetCharacterGroundTag(int chr);
Ags3d.GetPlayerCollisionTag();

Quote
EDIT 6 - "Ags3d.SetFirstPerson(false);" doesn't seem to do anything... or is it just me?
I think by now we've established that you're not incompetent :)
I'll take a look.

Cheers,
Steve

PS I think you've earned a credit in the manual by now :=
Still waiting for Purity of the Surf II

Rui 'Trovatore' Pires

QuoteThe characters and objects follow the same rules as the other sprites. So the scale is only used for sorting and player collision. The collision width you choose depends on the sprite scaling.

Sorry, I must not have been clear (or am just misunderstanding you): I'd like to know if there is a certain "formula" to calculate the most useful and precise scaling, based on the dimensions of the original sprite.

Quote(Does she have 8 loops?)

Nope, our lovely Rosella only has 4, the poor soul. I DID want to test the 8 loop thingie, but I didn't find any pre-drawn character with 8 loops, and was certainly not going to draw one...

QuoteI think you've earned a credit in the manual by now 

\o/
Reach for the moon. Even if you miss, you'll land among the stars.

Kneel. Now.

Never throw chicken at a Leprechaun.

SMF spam blocked by CleanTalk