Welcome, Guest! Login | Register
LMS (Last Man Standing) A comunity project.
Info
Report
434 Posts

So i got the idea for a community project called "Last Man Standing".

Yes it's a complete rip off of a unity project by the same name, but built in 3drad.

The game play goes like this.

There will be 20 or 30 ANDRO models, controlled by AI that all look alike.

When a player joins, they replace one of the AI controllers to control that andro model.

Each andro does only a few things, it can move around randomly ( by AI or a human player)
it can attack any other player close to it, if the AI or you choose too.
1 successful strike is all it takes to kill you or any AI or other player.

The object of the game is to first figure out whos a live player or an AI and move close to them and strike before they discover you and strike you first.

EASY PEEZY

If you die you're kicked out till the next restart, the session length will need to be decided before the game starts either by the host or chatting with other players.

The last Live person in a round wins.
If no winner, the round is forfeited.

Ai killing AI only reduces players in that session and doesn't count for anything and will be a random & triggered process controlled by the custom AI.

The project level will be extremely simple in design ( i'm working on this right now ) and will share the results when ready.

Anyone who decides to contribute will be given credits on the exit screen when the project ends.

I will be in control of what gets added or not, its not personal, i think to many chefs will ruin the sauce ...

I've have a special area setup on my discord for this https://discord.gg/2ajnafCBYX
Checkout the 3dradstuff.

EDIT: Added: There is no running score, its basically a quick and dirty kill and be killed, there are no names or requirements to join or sign up.

There are no ways to cheat because there are no options that allow cheating, and everyone is anonymous, unless you choose to reveal yourself in some way to others.
Created on: 1 month ago
Edited on: 1 month ago
Info
Report
434 Posts

I've been playing with the andro model, turns out, it has limited animations ( only 3 of  them ) andro can walk, run ( just fast walking really), and can sit or wave,.

I'm thinking andro needs to be replaced with a model, that can walk run strike out at another player and collapse ( die). that would cover all the needed animations.
So if anyone wants to contribute a working animated model, please do.
A couple important design notes here...
The new model should not be specific male or female, can be android like or human like or just robot like.
The model should be plain static single color ( lets go for white or off white) a little texturing is ok, but try to keep it if possible without texturing, just to keep performance at its peek, cause we are talking about 3drad here.

other wise, the project will be pretty basic.

The AI needs to be fairly basic as well, and i'm open to what ever anyone cares to share.

I'm thinking only a few points need to be covered.

walking and standing still, checking for another model close by and randomly deciding to attack or not.

This is basically what you or i would be doing as a player controlled model.

The camera will be fixed at a given distance from the model, and will allow rotating around your model to see who or what other models are doing or closing in on you.

So control wise there will be 2 sets, i figure WASD for model control and the mouse/joystick/arrow-keys to control the camera... All controls will can be configured as you would prefer.

I think that's about it really, its just a fairly quick and simple process to put this all together.

3drad only has AI for car controls, so this andro AI will need to be simple but customized to move the models around till a person drops in to take control.

Got questions or ideas, you know where to find me.... here and or discord .

All project & resources will be shared as they are developed probably with my dropbox account.

Also, when anyone joins the project, you will likely see the current session in progress, and will see live action as it happens in project till the restart when you will be randomly assigned a model to control, not really randomly, but each model start point will be predefined and randomly mixed at the start of each session.
Created on: 4 weeks ago
Edited on: 4 weeks ago
Info
Report
193 Posts

Quote from: TinSoldier


All project & resources will be shared as they are developed probably with my dropbox account.

Might want to use Github if you want people to contribute to your project.

Also, dying animations can be done with attaching rigidbodies to the mesh to act as a ragdoll.
Created on: 4 weeks ago
Edited on: 4 weeks ago
Info
Report
434 Posts

I don not want to and wont use github.
I find my self lost every time i try using it...

I've never tried to create a ragdoll.
Created on: 4 weeks ago
Info
Report
319 Posts

@athanatos, how would you even go about a 3D Rad project in Git? It's impossible
Created on: 4 weeks ago
Info
Report
193 Posts

Oh welp
- It's good for resources like images and models I guess
Created on: 4 weeks ago
Info
Report
18 Posts

This is an awesome idea! Looking forward for this
Created on: 3 weeks ago
Info
Report
434 Posts

While we're on the subject of a community project...

This brings up a good question..

Whats the best way to share resources for a 3drad project..

The normal 3drad process is to create "ADD ONs" which invokes
https://web.archive.org/web/20101204212648/http://3drad.com/addons/become-a-3drad-addon-author.htm

Add ons is a good way to create and share  resources, but its far from simple or quick and easy and requires another program.

Also "add ons" are basically a more refined process of "merging" projects.

To use a simpler process like "merging" project pieces, the project file plus all its resource files would need to be shared, like in a zip file for instance.

To use a zip file or 7zip or what ever archive program you wanna use you would need to include only the custom project files.

This gets involved and leads to objects being left out and extra objects being included and not required to share, making shared archives bigger than they need to be.

One way to do this is to create a 2nd 3drad directory and it only includes the "3DRad_res" and all directories below it, but all empty to begin with.

Once you have that directory structure setup, you would need to copy and paste each object into this empty 3DRad_res directory being sure to copy also the index files too.

This becomes a head ache ....

Another process is to simply to compile your project and share that, it will contain all the resources but doesn't include the index files which would require us to install any custom resource into 3drad first then copy & replaces the files with those from the compilied project folder.... again not an easy process.


So.. anyone got any ideas on how to do this shared resource process an easier way that i haven't covered ???

OR just share your vote on what process you think is the best way to share resourse's ( preferably free if extra programs are required ).
Created on: 3 weeks ago
Edited on: 3 weeks ago
Info
Report
18 Posts

I think that the second option is the best, because in a way or another everyone need to download every file, but what I do sometimes is use a folder to place skinmesh and rigidbody and load them with iObjectRefresh, it's not a good way but I can work in the project without the visuals and test everything, and if it's needed I activate the script and load the skinmeshes. Hope this helps in something!
Created on: 3 weeks ago
Info
Report
434 Posts

@facujk101 thats a good idea i think...

This could allow people to contribute by creating and storing thier resource models & even scripts ( not sure if refresh will work with scripts)into their own folder, then to use these they simply supply the folder name ( path) to use... i'll put together a sample project to test this out real soon.

I've got the landscape done, i've built an android model, i decided to take a simple process to replace animation with a physics based process, what would happen is you press a key to spin your android which causes its arms to swing up and if you hit a person close to you before they hit you, you get the kill point.

I will be testing this model tomorrow and sharing some screen captures of stuff too.
Created on: 3 weeks ago
Info
Report
434 Posts

I've included the current playing field & bot model images.

Don't forget.. these are being made low poly on purpose to keep performance up, because there will be 20 bot models / player spots in the project.
(the tall orange box's are the player start points ( they wont be in the project & only here for reference)

Also, if anyone cares to contribute, you can, just create your models in this general format for compatibility... but its not a strict rule, but performance is important.

the field is 100Mt x 100Mt
the walls 5Mt high
Bot is 1.8ish Mt tall
buildings  4Mt tall
the water is optional and very basic in design and is only for looks.

The bot model will have arms that swing out like bats when the body spins... this is the attack mode, if the  arms strike a player, thats the kill move.
I havent decided yet what happens if the arms hit arms and if that should count as a kill or not or just damage, leading to a kill.

All models will be shared in 1 directory, and the "refresh" script command will be used to load all models.
To create your own world, copy and paste all model files into your directory of choice, no sub directories should be used, ( be sure to give the directory a unique name.

Be sure to test the 3drad project ( when shared) to be sure your models load and all works as needed.

You'll see how this all works when i create a share a demo project of how this will be setup.

The 3drad "refresh" script command was actually created for this very purpose.

EDIT: the landscape model is all one model, non movable parts using polygon only rigidbody models and poly colors ( no textures).
The Bot will be rigidbody parts and skinmesh parts too , the skinmesh parts are needed for multi-player networking.
Created on: 2 weeks ago
Edited on: 2 weeks ago
Info
Report
434 Posts

CORRECTION: Sub-directories are required in the form of "Your_Dir_Name_Here" and sub dir's (RB1 to RB4), the same naming convention for Skinmesh's sub dir's (SM1 to SM4)

My model directory will be named "Tins Stuff" ( you need to use your own !. )( spaces are allowed in the dir name. )
and resides under your main 3drad folder ( where 3drad.exe is ).

The sub dir's can be expanded to as many models your project use's ( models HAVE to be stored firstly into your custom directory name, with sub dir's ( as many as needed explained above).

This directory and sub directory allows everyone to create their own project models and to share those as well ( by archiving your custom folder & sub folders.
Empty folders are ignored run time as are folders that don't contain the proper files to load.. no errors will happen over this.

Heres my first draft of the refresh script ( subject to change ) -
void Main(){

   string localFolder;
   iLocalFolder(localFolder);

   if(iInitializing()){}

   if(iKeyDown(iKeyCode("DIK_R"))){
      iObjectRefresh(OBJ_0, localFolder+"Tins Stuff\RB1\Hold.txt");
      iObjectRefresh(OBJ_0, localFolder+"Tins Stuff\RB2\Hold.txt");
      iObjectRefresh(OBJ_0, localFolder+"Tins Stuff\RB3\Hold.txt");
      iObjectRefresh(OBJ_0, localFolder+"Tins Stuff\RB4\Hold.txt");
   }

   if(iKeyDown(iKeyCode("DIK_S"))){
      iObjectRefresh(OBJ_22, localFolder+"Tins Stuff\SM1\Hold.txt");
      iObjectRefresh(OBJ_22, localFolder+"Tins Stuff\SM2\Hold.txt");
      iObjectRefresh(OBJ_22, localFolder+"Tins Stuff\SM3\Hold.txt");
      iObjectRefresh(OBJ_22, localFolder+"Tins Stuff\SM4\Hold.txt");
   }
}

Also, when compiling this project, you MUST manually copy any directory & its sub directories to the compilied folder ( 3drad wont do it for you ) ( The folder you created like "Tins Stuff" & its sub dir's).

You may notice the filename "Hold.txt", turns out 3drad needs a file name, but it's only used to locate the path to the needed files, Hold.txt is simply a required field for the refresh command, but is it's self ignored run time.

Got questions contact me here or on discord @ https://discord.gg/2ajnafCBYX

P.S.  The discord link can be copied & pasted / entered into any chat box in any server in discord to see & use it, if you just click it in your browser, it opens discord in your browser too.
Created on: 2 weeks ago
Edited on: 2 weeks ago
Info
Report
434 Posts

Bad news...

Turns out the object refresh is a broken command just like the imposter balls that don't roll but slide.

It seems fernando took the quick & dirty way to program parts of 3drad ( i''ve know this for a while, the imposter balls, and now the refresh script commands are just more validation).

Whats happening here is when 3drad "refresh's" an object, it's not reloading it from scratch like when we select a model in the list editor.

3drad seems to be using the source model as a location reference and object world center referance, then replaces the visuals only. ( your models world center is ignored )

This breaks the models collisions too, because the visual and collision models don't line up.

I cant see any way to fix this process or work around it, its just another broken command.

Sooooo, this project is still a community project, but the only way i can see to do this would be to share the compiled project and the source project, then anyone who wants to, will need to setup the resources from either the compiled project folders, or create their own original models and scripting etcetera.

The other ways to share content are too involved for a causal community project.

So i'll keep developing it, and share the end results which you can do what you want with.

I think an on-line project test  will need to be done as well, to be sure all works properly.
Created on: 2 weeks ago
Edited on: 2 weeks ago
Info
Report
434 Posts

I was having issues with the random number process.
I got it figured out and i also found what seems to be a source for some of the "issues" 3drad is having.

The first thing to take note of is that 3drads error reporting system is broken.
This leads to a situation where your script mite be broken  like an array out of range error, 3drad may or may not report this error to you, but.....
It can cause your script to have errors.
So what do you do when you make a script error, but 3drad doesn't report it to you ?????
Your script has an issue, it seems to be broken, but you don't known where the fault is.

I had this happen yesturday, played all day long trying to figure out the issue, then finally after a reboot, ran my 3 object random number script, and 3drad report an array out of range.. well damn...
I looked right at it but didn't see it till 3drad reported it to me.

So long story short, got it fixed and working.
Also found out, that the random number process, is a little broken too....
If you do a random number between 0 & 7, it never picks 7, but it does pick every thing else including 0.
The fix for this is to use random 0 to 8, but only use 0 to 7 cause 8 will never be picked...
Created on: 1 week ago
Info
Report
434 Posts

I put a little more thought into the random number script "issue".

I just realized that it may actually be working correctly .. for instance -

If you do a random float between 0 and 8, maybe 8 is by design the cut off return value..
like 7.99999 may be still a valid return float value, even though.. it so close to 8...

It depends on your use of the float value to decide if 7.99999 is a valid return.

Also, in my case i was looking for a random int value, but 3drad has no specific int random process.
But if you do
int Tmp= iFloatRand(float,float);
it will return the integer part as Tmp and ignore the decimal part.

It "MAY" be possible that the second value is by design the cut off and never returned limit value, and the script documentation forgot to mention this little detail.. i cant say, only fernando could answer that question.

And there is one other documentation error where, 3drad mentions script timing wrong, which you can validate for your self using script.

It turns out that 3drad uses 60 FPS and also why you'll see 0.0166667f in one included demo project with script in it.
1 divided by 60 = 0.0166667  to what ever number of places you need. ( or one script cycle = 0.0166667 seconds. ( if i remember right, the doc's say in one place, 3drad use's 100 cycles per second, where it is actually 60 ).

Ok 3drad error rant done till the next one, and i'm sure there will be a next one....
Created on: 1 week ago
Edited on: 1 week ago
Info
Report
319 Posts

If you do a random float between 0 and 8, maybe 8 is by design the cut off return value..
like 7.99999 may be still a valid return float value, even though.. it so close to 8...

It depends on your use of the float value to decide if 7.99999 is a valid return.

It's how floats behave and it can indeed be annoying.

It turns out that 3drad uses 60 FPS and also why you'll see 0.0166667f in one included demo project with script in it.
1 divided by 60 = 0.0166667  to what ever number of places you need. ( or one script cycle = 0.0166667 seconds. ( if i remember right, the doc's say in one place, 3drad use's 100 cycles per second, where it is actually 60 ).

I actually read that it was 75, but indeed it is 60 from my experience.
Created on: 1 week ago
Edited on: 1 week ago
Info
Report
434 Posts

Yeah @powersupersport i may have got the mentioned value wrong, but the point is it was wrong in the doc's &
that's not gonna help anyone.

And doing more testing...

I found that (maybe any) array over 10 elements corrupts your script output.
And it also seems that when something goes bad in 3drad, you need to log out & back in to clear the error situation before continuing ..... hows that for annoying.

What this means, you need to fix the error first, save your project, log out, login test and if it works bob's your uncle... if you didn't fix it the first time ( before you logged out), then you're back to square one...

FUN FUN FUN.

I can only say, 3drad is lucky ( or is it i'm unlucky ) i love a challenge and keep trying to beat 3drad's errors, other wise i would have jumped ship as soon as i validated 3drads error
issues.
Created on: 1 week ago
Info
Report
193 Posts

Quote from: TinSoldier


I found that (maybe any) array over 10 elements corrupts your script output.

Yo, what the heck? Did you test that for a separate case?
Created on: 1 week ago
Info
Report
434 Posts

@athanatos
i have a project just for testing arrays, and it showed faults as soon as 11 was used, but worked perfectly with 10 or less.

I understand why you ask, i too have used arrays for other projects over 10 elements and saw no issues, but also have seen issues right around 10 or bigger.

Thats why i say "maybe" i'm unsure if this always happens or just more likely to happen.. use the info as you see fit or ignore it as you see fit.
I'm only reporting what i've seen.

run the project,  it should print out the count for each selected random value
change the float value to 11  and run again, you should see invalid counts right from the start, if you don't see these, then the only solution is my project has been damaged by 3drad internally...

float Num= 10;
int[] Cnt(Num);

// OBJ_0 = textprint

void Main(){

   {
   int Val= iFloatRand(0.0, Num);
   if(Val< Num) Cnt[Val]++;

   }
   
   iPrint(Cnt[Num- Num]+ "", -5, 5, OBJ_0);
   iPrint(Cnt[Num- 9]+ "", -5, 4, OBJ_0);
   iPrint(Cnt[Num- 8]+ "", -5, 3, OBJ_0);
   iPrint(Cnt[Num- 7]+ "", -5, 2, OBJ_0);
   iPrint(Cnt[Num- 6]+ "", -5, 1, OBJ_0);
   iPrint(Cnt[Num- 5]+ "", -5, 0, OBJ_0);
   iPrint(Cnt[Num- 4]+ "", -5, -1, OBJ_0);
   iPrint(Cnt[Num- 3]+ "", -5, -2, OBJ_0);
   iPrint(Cnt[Num- 3]+ "", -5, -3, OBJ_0);
   iPrint(Cnt[Num- 1]+ "", -5, -4, OBJ_0);
}
Created on: 6 days ago
Edited on: 6 days ago
Info
Report
434 Posts

@athanatos

I found a fix for this by using the inetarray instead, its working even without being in network mode..

float Num= 11;
int[] Cnt(Num);

// OBJ_0 = textprint

void Main(){
   int PL= 0;

   {
   int Val= iFloatRand(0.0, Num);
   if(Val< Num) Cnt[Val]++;
      float Tmp= iNetFloatArrayGet(Val);
      Tmp++;
      iNetFloatArraySet(Val, Tmp);
   }

   for(int A= 5; A> -5; A--){
      iPrint(iNetFloatArrayGet(PL)+ "", -5, A, OBJ_0);
      if(PL> 9) PL= 0; else PL++;
   }
}
Created on: 6 days ago
Edited on: 6 days ago
Info
Report
73 Posts

Quote from: TinSoldier

And there is one other documentation error where, 3drad mentions script timing wrong, which you can validate for your self using script. It turns out that 3drad uses 60 FPS and also why you'll see 0.0166667f in one included demo project with script in it.

well, it's only 50% incorrect, as 3drad can run at either 60 or 75 fps:
''iSimulationQualitySet(int)   Set physics simulation accuracy.''
i have tested this and yes, it does make your scripts run faster at 75fps, it also seems values lower than -1 make no difference [so -9 is also 75fps?]
Created on: 5 days ago
Edited on: 5 days ago
Info
Report
434 Posts

@thelurker  wel, what your saying isnt what the documentation says, the docs specifically say -
" NOTE: Script objects' loop frequency is not affected by simulation speed changes."

So are you saying the doc's are wrong and you ccan speed up 3drad scripts ? , if so, care to share some small script sample to do  that ?
Created on: 5 days ago
Edited on: 5 days ago
Info
Report
434 Posts

Heres the current state of LMS

https://dl.dropboxusercontent.com/s/v4qm3g3nfkstpe9/LMSv2.4%28Remake%29_20210228164855.zip?dl=1

its not complete yet and needs things like
- kill counter
- separate the player group to make it a "merge-able"  player project so as many as need player spots can be added.
- collison setup between player controlled bots only ( trying to kill AI has no effect ) ( only player kills count.
- add networking client & server scripting.
- Bot AI scripting to auto & randomly move the bots around
- a few other things i probably forgot at the moment.

NOTE: Pressing [RETURN/ENTER] cycles through all 20 pre-configured start positions.

One bug i've noticed ( may not be a bug but it isnt by design, and i may just ignore it),
is when the bot gets reset to a new start position, it has a bit of motion applied to it sometimes ...
Created on: 5 days ago
Info
Report
73 Posts

i don't need to share a script, as i know you already know how to do it, in fact i used your example as a base to test it.

and you mixed up iSimulationQualitySet with iSimulationFrqSet, so the documentation is not wrong because only the former affects loop speed as i stated. but i only tested negative values speeding it up, i suspect positive ones won't slow loop speed, but don't care since i never use them.
Created on: 5 days ago
Edited on: 5 days ago
Info
Report
434 Posts

Well i could argue more on this but i wont, and yes i did mix up the script command.. but ... as you say i to have no use for these, mainly because even with computers and over-clocking, when you speed things up & over designed normal limits, there are all most always drawbacks... in 3drad that's speed over accuracy.
Yes i could do the scripting myself, but you said you tested it ( and now say using some script i supplied before).. i just don't want to dig it up or test it because i wont be using it.
Created on: 3 days ago
Sponsored