[Dmrpg-devel] Graphics delivery from server to client side
Status: Planning
Brought to you by:
nakee
From: doron m. <do...@ho...> - 2003-02-07 16:40:23
|
let me first introduce myself my name is Doron , or Nightspy on ircnet/efnet , i'm a friend of nakee and we often talked about the conversion of moo into a 3d env. i'm interested in dealing with the 3d desgin and graphics side of the rpg project atm if i could contribute in other ways i will do my best :) ----------------------------------------------------------- Graphics delivery from server to client side To minimize bandwidth and to make things more flexible and programable here is my view of how it should be done the idea of useing simple 3d poly shapes and compressed image files to create small filesize is well known and used to the extreme on the internet nowdays , however this comes on the expense of quality and can only be done a little if you still wish to preserve a pleasing gaming exprience. even so, most objects avatars or weapons etc. when done in 3d take alot of disk space and are not very suitable for an rpg environment where players are invited to create their own scene that may include original objects and avatars , even when useing broadband internet connections there is a limit to the number of components you're able to pass to players (via downloading patches or model packs) this is not a convnient methood of delivery for new content and not at all what i have in mind for this project. players should be able to walk into a new scene and wait a few seconds a time seeing that new objects are being added into the game env. in realtime this should not slow down the server by much if the information being passed but is a simple collection of instructions telling the client how to generate new objects based of existing information my idea is the implimination of a graphics description language and independent parsing on the client side: scene objects are defined useing a text descriprion language which can be easily human readable but not overly simplified as not to not exculde other types of content but make it optional to use only when cannot be done otherwise (data files can be attached to the text form in this case). a similar graphics description language to that of Povray raytracer can be used for a quick scene generation while the rendering itself would be done by the client useing opengl insted , this gives the ability to declare new objects from existing primitives ( polyhedron , cube , plane , sphere , cylinder, cone , etc.) or make changes in objects and manipulating their properties by includeing some code , such as type of of object , scale , location , size and appearance , special objects can be used to create things as well , such as lofting (which uses 2d pathes extruded to 3d on another path) , boolean objects (by intersecting 3d objects) , fractal objects (such as lsystems used with cylinders insted of lines in 3d) also the use of textures and materials can be declared the same way useing filters like noise plasma and other things and colors can be assigned to vertexes and objects and the various optical properties such as opacity specular reflection bumpmapping and whatever opengl can do in realtime useing geforce cards today this may include the use of vertex and pixel shaders as well. also in order to make it simple for the user to create his own objects there will be a need for a simple editor and toolswhich will automate the writing of script by more standard modeling technique , as in drag and drop objects into place without the need to decalre their location via x,y,z text format or the generation of lsystems and other procedural objects , many tools exist for the povray script nowdays , we might borrow opensource code and convert them into our own use here is an example of some povray script to make it more understandable for more info http://www.povray.org/ there are many amazing pictures of render results by the povray engine on the site for illustration , you need to remember we won't do raytracing however but realtime (but technicly it would be possible if you want :) //#include "flareblocker.inc" light_source { <-500,-50,-500> rgb <.1,.2,.5> } camera { location camera_location angle camera_angle look_at camera_look_at } sky_sphere { pigment { crackle form <1,0,0> color_map { [0 rgb 5] [.1 rgb 0] } scale .03 } } /* #declare Gloed= cylinder { -y,y,1 pigment {rgbt 1} interior { media { emission 3 method 3 samples 1,10 intervals 1 density { spherical color_map { [0 rgb 0] [1 rgb 1] } poly_wave 5 scale 2 //scale <1,2,1> } density { cylindrical //spherical color_map { [0 rgb 0] [.75 rgb <.1,.01,.02>] [.85 rgb <1,.1,.2>] [1 rgb <1,.85,.9>] } } scale <.5,.5,.5> rotate -x*90 scale <1.5,1.5,.5> scale 2 } } hollow no_shadow scale <.5,.25,.5> rotate -x*90 scale <1.5,1.5,1> } _________________________________________________________________ Help STOP SPAM with the new MSN 8 and get 2 months FREE* http://join.msn.com/?page=features/junkmail |