Jump to content

Developing Games


revochen Mayne
 Share

You are about to reply to a thread that has been inactive for 3153 days.

Please take a moment to consider if this thread is worth bumping.

Recommended Posts

Greetings!


The last year i've took a break of SL to study games programming and development. I was learning a lot about game engines, frameworks and how grafic processing is working in general. I was already creating some games befor in SL but it were almost simple games like parcheesi or XO. Some time ago Linden Lab decided to promote SL as being a platform for developing games.
I would like to hear your opinion if SL is such a good platform for. May it be simple casual games or more advanced games.

What makes SL a great platform for developing games? What is LSL missing on functionality? Is there any advantage over all the game engines and frameworks?

I already made my mind but i would like to hear your opinion first.


Thank you and have a nice day! =)

Link to comment
Share on other sites

Hi Xiija!

 

Well it depends on the definition of "normal programming". As LSL is "just" a procedural scripting language, it has some limitations any scripter might has to struggle with. Of course, SL offers some benefits like its physic engine, pathfinding, permission system, particle system, sound and a large amount of possible users or players. But there are also some disadvantages with, like the limited and shared memory, a relative low amount of available events and being doomed to the good will of lindens to improve the existing LSL events and functions or fixing existing bugs.

 

Please don't get me wrong. I really love the freedom SL is giving its users. But users freedom can be a scripters hell.

 

Where do you see a difference between SL games and any other game (except of SL itself, and games being bind into)?

Link to comment
Share on other sites

This is what i'm thinking about using SL as a gaming platform.

 

Objects

It's very hard to create animated objects as there is no way to link a prim set in a hierarchy. But if developers are in need of animated objects, they either have to use an external tool like Puppeteer, use invisible prims on meshes/sculpts and show/hide them or create their own animation system, which brings a lot of overhead. Those animations then tend to be sloppy, especially when they are executed on a high frame rate. Some kind of animation system with a common object hierarchy, layers, keyframes and a smooth transition/tweening between them for motion, rotation or scaling would be great to have. (I'm dreaming, don't I?) Some game objects are quite easy to develop within SL, especially those which are just an extension for RP'ing.

 

User Input

There is a very small amount of possible user keyboard or mouse input detection through the control event. 8 keys and the left mouse button input are available. Most other programming languages also having some kind of mouse enter, mouse stay or mouse exit events, the mouse position and of course almost any available key on a users keyboard.

 

User Interface

I figured it can be a mess to create a nice user interface on a HUD. The existing transparency bug makes it hard to have multiple overlaying transparent textures. There is also no way to detect the window size to reassamble the UI elements. I had some cases where buttons or other elements just went out of view because of that.

[Edit]: Also showing dynamic text on a users UI can be a mess. Using float text might breaks the design, if the window gets rescaled as the float text doesn't scales proper relative to the UI elements represented by textures or prims and there is no existing way of measuring the float text size. Using XY or Xyzzy technique is prim consuming and parsing the text string for each single character is quite some overhead.

 

Data Storage

There is no reliable way to persistantly storage data without having an external interface like a webserver. Of course, you can also use scripts as some kind of data base, but you can't tell how much data it has to store or if it doesn't get lost somehow.

[Edit]: The Experience Tools helps to make some of the issues obsolote. Doesn't helps if it's an application which requires manipulation of data across multiple users.

 

Content System

The content system is rather closed like there is no way to manipulate/redraw textures, rewrite notecards or other content after they got uploaded or created in-world. Most available manipulations are those, which are possible through the build/edit menu like changing the transparency, scale, rotation or other properties of objects/textures.

 

 

I know this is way to much asked to have this all integrated into SL but most of the things missing for a good gaming platform are common and a must have. It is a competition for Linden Lab to keep SL attractive and i see it's getting harder for them each day. 

 

Thank you for reading and have a beautiful day! =)

Link to comment
Share on other sites

With Experience tools, some of these limitations go away. Notably, there's very little reason to use an external server anymore, unless the application (game) really needs a user-accessible web presence. The kvp persistent store also obsoletes all the age-old fussing about trying to use Notecard assets as if they were files. Also, a single kvp provides a level of indirection that can reference changing textures or other content from an unchanging symbol, so dynamic content is only one kvp dereference away.

That's not to discount other limitations, and I'll be surprised and disappointed if many of them aren't lifted when Project Sansar goes live. Most importantly, I think, would be mesh deformation by script; if that's not possible in the new platform, I'd say they've simply given up.

Probably the most interesting of the limitations, going forward, is the control surface of the UI. "Interesting" in the sense that VR is making that a very confusing space right now, with lots of clumsy hardware and desperate ideas aiming to replace the mouse and keyboard. Having a complex control surface -- as do many current console games, for example -- is likely to be the kiss of death when rehosted in VR.

Link to comment
Share on other sites

Hi Qie and thank you for pointing out the user experience functions which makes some of the issues obsolete. I missed that somehow. It will definitely help with storing data for single player games or those, which doesn't need to affect other external functions.

The VR and UI for is also an very interesting subject and reminds on it's being hard to show dynamic text on a HUD. It's possible to use float text, but there is no way to measure the size of the text and when rescaling the window size, it might breaks the design, as the float doesn't scales proper with any HUD texture. I was using XY text functions some time ago but it was quite prim consuming for large text. I believe it's also a huge overhead because of the string parsing and setting the appropiate texture offset for each single character on the tortured prims faces. I know there is an advanced version of it called XyzzyText but i didn't had a change to test it yet and it would be great to have a more comfortable solution for displaying text on the UI area.

I had the change to test a few VR devices like the latest Oculus Rift but i wasn't much satisfied with. I had problems to focus and definitley won't use it for private. Although i agree that there are some justified reasons using it on certain applications because of its immersion, especially in combination with 3D sound effects. There are some interesting concepts to replace the mouse by using hand helded controllers and speech to text might helps with replacing the keyboard too. But it still seems to be a long way until it's mass suitable on all different platforms and applications.

 

Link to comment
Share on other sites

You are about to reply to a thread that has been inactive for 3153 days.

Please take a moment to consider if this thread is worth bumping.

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
 Share

×
×
  • Create New...