generic image
Processing...
  • Games
  • Catalog
  • Develop
  • Robux
  • Search in Players
  • Search in Games
  • Search in Catalog
  • Search in Groups
  • Search in Library
  • Log In
  • Sign Up
  • Games
  • Catalog
  • Develop
  • Robux
   
ROBLOX Forum » Game Creation and Development » Scripters
Home Search
 

Re: Should we make a game making API for rbx.Lua?

Previous Thread :: Next Thread 
Radioaktiivinen is not online. Radioaktiivinen
Joined: 25 Apr 2009
Total Posts: 18629
26 Oct 2011 08:02 AM
It would be really useful and speed up stuff.

Examples:

Body functions (made a script for this): Lets you find the body of a brick (that is, all other bricks its directly or remotedly connected to), find information about it, and apply forces to different locations in the body. And connect it to other bodies i guess. Kind of like models, but all parts in a body must be connected to each other somehow.
Connecting bodies keeps the bodies separate, joining them makes them be the same body.



Server-client communication tools: Sending simplish tables from server to specific client and vice versa. Communication should be done with a single receive function wich takes in what data it is and the data itself on both sides (on server also where the data comes from).
Also send functions (what data, to where, data itself)
And maybe a request function like (what data, where).



Making player objects for server side: Isntead of player instanced all the characters and all should be accessible through a single object. It should have stuff like:
-Camera manipulation (can also be done by sending data to the client and doing this yourself)
-Kick player
-Get chat somehow (like give it a callback function to call when the player chats)
-A table where you can put data about the player
*Saving data on that table (DP)
*Loading data to that table
*Showing data in leaderstats (give the keys to show)



Debugging: Make a function to write something to a log (date, color of message, message)
You can add a list of people who can view that list through a gui button or something, so you can see if something goes wrong. Should also include timings and stuff (like the API could perform ping tests and performance tests (when they enter?) on users)
Kind of like the shift+f1 thing but simpler and contains other info. Maybe also amount of bodies, bricks, moving bricks, server age, server average lag, stuff like that.



GUI: Simple functionality to manage guis like bars wich you can drag to move the object where theyre in, sliders, pop-up menus, buttons (simplified, you give it a callback function to call when clicked like normally), text fields, indicators (you could call like MyMoney:SetText(9001))
Basically you dont use gui objects as instances but as objects, wich makes it easier to make complex functionality like for sliders.
Everything should be fully customizeable (for example sliders could have images on the slider or the thing wich it slides on, the direction of the slider (vertical or horizontal), colors of the components, on what range it can slide, and maybe some cool effects like making it slide slowly to where your mouse is.)
Also stuff like billboarding (so you can have a button floating over a person if you want)



Better vehicle seats: You can give it callback functions to call when you change the throttle (forward,backward,stop) or steer. You could also give it a callback function it calls with the person who sat there, and if you return false it doesnt let him sit. (for example if someone owns that car)


Associating data with instances and objects: Like adding a "Age" value to a part without problems. Pretty useful for lots of things as it lags less than value-objects. I have this in my body manager script thing too.


Better raycasting: Lets say give it a callback function where you return false if the ray should go through the object, in wich case it continues raycasting.
You could also give it callback function wich makes the ray reflect from the surface if you return true.
The raycast should return all the line segments (1 if it didnt reflect) with start and end points, and a list of objects hit and their order in case if you let it go through them.



Easier velocitymotor- kind of connections (like your arms):
Due to the velocitymotor objects not working if the thing theyre attached to is not moving, welds should be used instead (also welds are a bit easier to use for multi directional movement i think)
It would let you connect 2 bodies together, and set the relative rotation of the other body. It should also have the ability to smoothly go from rotation 1 to rotation 2 (matrix interpolation wut? idk how that stuff works) and maybe spin around a single axis if thats possible without 9001 math operations (i think there was quaternions in roblox?)



Functionality to make living and half living things:
It would not use humanoids because they fail if you want any freedom.
It would simulate smooth walking by welding a invisible sphere near its feet so it will slide smoothly over surfaces. (at least for normal-ish living things). It would allow making the thing walk to a specific spot or jump. You gotta do health and other specific stuff yourself.




All normally used instances should be encapsulated into tables, so custom functions and data can be added to each object. This way they can also be tracked by the API/Engine/watever instead of you having to do everything.


GO PEOPL MAKE EWT GO NAO PLOX
Report Abuse
liavkr104 is not online. liavkr104
Joined: 02 Nov 2008
Total Posts: 4320
26 Oct 2011 08:18 AM
That would help pepole alot to speed up things, although it looks complex to make.
tl; dr

~LK~
Report Abuse
Radioaktiivinen is not online. Radioaktiivinen
Joined: 25 Apr 2009
Total Posts: 18629
26 Oct 2011 08:39 AM
I could make something like that when im bored :P

Except 10% of the velocitymotor thingie, matrices r complex.
Report Abuse
FreeLibyan is not online. FreeLibyan
Joined: 17 Apr 2011
Total Posts: 476
26 Oct 2011 09:09 AM
matrix r complex for u only, since ur noob
Report Abuse
Radioaktiivinen is not online. Radioaktiivinen
Joined: 25 Apr 2009
Total Posts: 18629
26 Oct 2011 09:54 AM
No u i noes how do matrix stuff.

Firs tu taike 2 matrix.

Then u put em in rite order.

Then u multiply and add the matrices in 50 different orders and directions to get result! :3


The only thing i wont propably make if i bother making this, is making the turret rotate around a specific axis.




Nowait.



I can just use a matrix to tell what the rotation of the rotate around axis is, do sum matrix multiplications, rotate, and then do more multiplications to get it back o the original coordinate system.


oyus.
Report Abuse
NXTBoy is not online. NXTBoy
Joined: 25 Aug 2008
Total Posts: 4533
26 Oct 2011 10:06 AM
Formatted nicely, to aid readability:

-----------------------------------------------


It would be really useful and speed up stuff.

Examples:

Body functions
--------------
Lets you find the body of a brick (that is, all other bricks its directly or remotedly connected to), find information about it, and apply forces to different locations in the body. And connect it to other bodies i guess. Kind of like models, but all parts in a body must be connected to each other somehow.
Connecting bodies keeps the bodies separate, joining them makes them be the same body.


Server-client communication tools
---------------------------------
Sending simplish tables from server to specific client and vice versa. Communication should be done with a single receive function wich takes in what data it is and the data itself on both sides (on server also where the data comes from).
Also send functions (what data, to where, data itself)
And maybe a request function like (what data, where).


Making player objects for server side
-------------------------------------
Instead of player instanced all the characters and all should be accessible through a single object. It should have stuff like:
 * Camera manipulation (can also be done by sending data to the client and doing this yourself)
 * Kick player
 * Get chat somehow (like give it a callback function to call when the player chats)
 * A table where you can put data about the player
   - Saving data on that table (DP)
   - Loading data to that table
   - Showing data in leaderstats (give the keys to show)


Debugging
---------
Make a function to write something to a log (date, color of message, message)
You can add a list of people who can view that list through a gui button or something, so you can see if something goes wrong. Should also include timings and stuff (like the API could perform ping tests and performance tests (when they enter?) on users)
Kind of like the shift+f1 thing but simpler and contains other info. Maybe also amount of bodies, bricks, moving bricks, server age, server average lag, stuff like that.


GUI
---
Simple functionality to manage guis like bars wich you can drag to move the object where theyre in, sliders, pop-up menus, buttons (simplified, you give it a callback function to call when clicked like normally), text fields, indicators (you could call like MyMoney:SetText(9001))
Basically you dont use gui objects as instances but as objects, wich makes it easier to make complex functionality like for sliders.
Everything should be fully customizeable (for example sliders could have images on the slider or the thing wich it slides on, the direction of the slider (vertical or horizontal), colors of the components, on what range it can slide, and maybe some cool effects like making it slide slowly to where your mouse is.)
Also stuff like billboarding (so you can have a button floating over a person if you want)


Better vehicle seats
--------------------
You can give it callback functions to call when you change the throttle (forward,backward,stop) or steer. You could also give it a callback function it calls with the person who sat there, and if you return false it doesnt let him sit. (for example if someone owns that car)


Associating data with instances and objects
-------------------------------------------
Like adding a "Age" value to a part without problems. Pretty useful for lots of things as it lags less than value-objects. I have this in my body manager script thing too.


Better ray-casting
------------------
Lets say give it a callback function where you return false if the ray should go through the object, in wich case it continues raycasting.
You could also give it callback function wich makes the ray reflect from the surface if you return true.
The raycast should return all the line segments (1 if it didnt reflect) with start and end points, and a list of objects hit and their order in case if you let it go through them.


Easier velocity motor
-------------------
kind of connections (like your arms):
Due to the `VelocityMotor` objects not working if the thing they're attached to is not moving, welds should be used instead (also welds are a bit easier to use for multi directional movement i think)
It would let you connect 2 bodies together, and set the relative rotation of the other body. It should also have the ability to smoothly go from rotation 1 to rotation 2 (matrix interpolation wut? idk how that stuff works) and maybe spin around a single axis if thats possible without 9001 math operations (i think there was quaternions in roblox?)


Functionality to make living and half living things:
----------------------------------------------------
It would not use humanoids because they fail if you want any freedom.
It would simulate smooth walking by welding a invisible sphere near its feet so it will slide smoothly over surfaces. (at least for normal-ish living things). It would allow making the thing walk to a specific spot or jump. You gotta do health and other specific stuff yourself.


All normally used instances should be encapsulated into tables, so custom functions and data can be added to each object. This way they can also be tracked by the API/Engine/whatever instead of you having to do everything.
Report Abuse
liavkr104 is not online. liavkr104
Joined: 02 Nov 2008
Total Posts: 4320
26 Oct 2011 10:07 AM
"I could make something like that when im bored :P"
Okay....
+500 respect points pointing at your scripting skills.
+
Prooven to me that your totaly legit.

~LK~
Report Abuse
Person299 is not online. Person299
Joined: 28 Feb 2008
Total Posts: 7952
26 Oct 2011 10:10 AM
I like this idea.
Report Abuse
GoldenUrg is not online. GoldenUrg
Joined: 23 Aug 2009
Total Posts: 6428
26 Oct 2011 10:16 AM
Sounds like a bunch of free models. Does it need some common infrastructure to be usable?

Report Abuse
myrco1001 is not online. myrco1001
Joined: 17 Sep 2010
Total Posts: 2574
26 Oct 2011 10:16 AM
They should totaly rewrite scripts.
Report Abuse
Radioaktiivinen is not online. Radioaktiivinen
Joined: 25 Apr 2009
Total Posts: 18629
26 Oct 2011 10:17 AM
I already made the thing that keeps track of bodies and parts and joints (it takes advantage of the fact that instances can be used as table keys so its fast :3)

And the rest is just some playing with tables and some random tasks that should be pretty easy (hardest is setting the cframe of a weld -.-)


Ill *start* making it tomorrow if i have free time like 99% of the time.

Any suggestions for client-server-client communication? Should i just use stringvalues?
Report Abuse
Radioaktiivinen is not online. Radioaktiivinen
Joined: 25 Apr 2009
Total Posts: 18629
26 Oct 2011 10:27 AM
@GoldenUrg

i think im going to make all objects have a "fake" interface so its easy to use them across the script and i can stick a ton of functions in them. You can still get the normal instance though and retreive the fake interface of a instance.

Ill propably use get and set functions to get and set their properties because metamethods will just cause me a headache and it should be obvious that its a table.

like

(these b functions)

Object=
{
GetInstance()
GetClassName()
SetBrickColor()
SetColor3()
SetPosition()
--and sum custom functions
GetExtraData() --returns table where u can stick custom variables n stuff
GetBody()
Weld() --weld to other part or something, like give in OtherPart(, CFrame offset)
BLOWUPBEWM()
TextureWithRadioaktiivinenIsAmazingTexture()
}


and as many objects as possible should be like that. Objects that dont have that would propably just have the properties common to all objects (ill use :IsA() to get what common properties i should give it) and youll have to get the instance to edit it.

Ill also need a Create("BRICK LULZ") to instance an instance and create the interface for it. Though it will automatically create the interface when you parent it to workspace if it already doesnt have one.
Report Abuse
Radioaktiivinen is not online. Radioaktiivinen
Joined: 25 Apr 2009
Total Posts: 18629
26 Oct 2011 10:28 AM
So...


What if...








ROBLOX LUA ENGINE FAAAADD!!!!1111 W0000T!!11
Report Abuse
Radioaktiivinen is not online. Radioaktiivinen
Joined: 25 Apr 2009
Total Posts: 18629
26 Oct 2011 10:50 AM
Kitten Engine(tm) shall completely destroy your little fail "engines" that are more like bicycles than engines.

Oyus.
Report Abuse
Anaminus is not online. Anaminus
Top 100 Poster
Joined: 29 Nov 2006
Total Posts: 5945
26 Oct 2011 12:06 PM
Remember that no one except you is going to use it. Which is good because then you don't have to write documentation.
Report Abuse
Radioaktiivinen is not online. Radioaktiivinen
Joined: 25 Apr 2009
Total Posts: 18629
26 Oct 2011 01:14 PM
Ill force nubs use it by making ads with 2 million tix
Report Abuse
blocco is not online. blocco
Joined: 14 Aug 2008
Total Posts: 29474
26 Oct 2011 03:59 PM
I made a simple API for RBXPri Blocco Edition. The `client.lua` file houses the `_G.ClientUtilities` class and the `server.lua` file houses the `_G.ServerUtilities` class. Adding to the `_G.ServerUtilities` class, the `commands.lua` file is run by `server.lua` and adds a `Commands` table to `_G.ServerUtilities`. That's if I remember correctly.
Report Abuse
pwnedu46 is not online. pwnedu46
Joined: 23 May 2009
Total Posts: 7534
26 Oct 2011 04:09 PM
"Ill force nubs use it by making ads with 2 million tix"

That means u r gonna have to poorly document it so that teh nubs dun know wat to do with it unless they can manage to read ur obfuscated sauce code. :D
Report Abuse
TheCapacitor is not online. TheCapacitor
Joined: 19 Jan 2011
Total Posts: 7045
26 Oct 2011 04:13 PM
I was working on an FP(S)/(RPG) engine, I stopped working on it because of Tool problems...

And MC.
Report Abuse
GoldenUrg is not online. GoldenUrg
Joined: 23 Aug 2009
Total Posts: 6428
26 Oct 2011 08:58 PM
Without a mechanism for have some scripts preload themselves before the normal scripts start, it's generally too painful to use helper classes (also the script vs localscript problem).

In my system, I keep those scripts in StringValues so I can load them for a script and a localscript in each player. If you have similar system, I'd be interested to aligning them.


Report Abuse
Radioaktiivinen is not online. Radioaktiivinen
Joined: 25 Apr 2009
Total Posts: 18629
27 Oct 2011 07:17 AM
@Golen urg

If i use multiple scripts, i will just put a while not shared.KittenEngineServerLoaded do wait() end in the starts of the scripts.

But because theres going to be circular dependency propably, ill make a InitEngine() function that returns a table with the functions, and it will wait until every script has loaded.


Also ill have separate versions for client and server.

I want to keep it focused to the server though, so the clients will update their object data tables by replicating changes from server.


Like it could receive message

"NewPartInstance" wich creates the object for the part for the local object manager thing.

then an
"UpdateProperty" thing to update the data.

However, i cant update the custom data since it might contain userdatas and such, so you cant access that.
I might make functions to return a value in the table given a key, if its not an userdata.
Report Abuse
booing is not online. booing
Joined: 04 May 2009
Total Posts: 6594
27 Oct 2011 06:21 PM
Object::Create(Explosion,exploed_var)
ujelly
Report Abuse
LPGhatguy is not online. LPGhatguy
Forum Moderator
Joined: 27 Jun 2008
Total Posts: 4725
27 Oct 2011 11:27 PM
@GoldenUrg
My engine (ROpen) runs based on that concept.

It's got the basis of a custom content engine and a set of developer tools, like content converters, map designers, script compilers, among other things.

It's primitive now, but you just wait...
As soon as the pre-calc lightens up...
Report Abuse
GeniusRobot is not online. GeniusRobot
Joined: 14 Oct 2011
Total Posts: 194
28 Oct 2011 06:43 AM
I like the idea but eventually admins steal idea like with RBXPri.
Report Abuse
GoldenUrg is not online. GoldenUrg
Joined: 23 Aug 2009
Total Posts: 6428
28 Oct 2011 11:25 PM
I don't mind if they build in the functionality.
Report Abuse
Previous Thread :: Next Thread 
Page 1 of 1
 
 
ROBLOX Forum » Game Creation and Development » Scripters
   
 
   
  • About Us
  • Jobs
  • Blog
  • Parents
  • Help
  • Terms
  • Privacy

©2017 Roblox Corporation. Roblox, the Roblox logo, Robux, Bloxy, and Powering Imagination are among our registered and unregistered trademarks in the U.S. and other countries.



Progress
Starting Roblox...
Connecting to Players...
R R

Roblox is now loading. Get ready to play!

R R

You're moments away from getting into the game!

Click here for help

Check Remember my choice and click Launch Application in the dialog box above to join games faster in the future!

Gameplay sponsored by:
Loading 0% - Starting game...
Get more with Builders Club! Join Builders Club
Choose Your Avatar
I have an account
generic image