programming language support for collaborative virtual environments clint jeffery university of...

25
Programming Language Support for Collaborative Virtual Environments Clint Jeffery University of Idaho [email protected]

Upload: frank-darren-barrett

Post on 04-Jan-2016

226 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programming Language Support for Collaborative Virtual Environments Clint Jeffery University of Idaho jeffery@uidaho.edu Clint Jeffery University of Idaho

Programming Language Support for Collaborative

Virtual Environments

Programming Language Support for Collaborative

Virtual EnvironmentsClint Jeffery

University of Idaho

[email protected]

Clint Jeffery

University of Idaho

[email protected]

Page 2: Programming Language Support for Collaborative Virtual Environments Clint Jeffery University of Idaho jeffery@uidaho.edu Clint Jeffery University of Idaho

Why study games?Why study games?

Fun!! Computer game industry is big

Larger than the film industry Shortly to eclipse the music industry

Games drive technological advances Games have many “serious” applications

Simulation, film, education/training Both “software problems” (e.g. AI) and

“engineering problems” (e.g. cost, time)

Fun!! Computer game industry is big

Larger than the film industry Shortly to eclipse the music industry

Games drive technological advances Games have many “serious” applications

Simulation, film, education/training Both “software problems” (e.g. AI) and

“engineering problems” (e.g. cost, time)

Page 3: Programming Language Support for Collaborative Virtual Environments Clint Jeffery University of Idaho jeffery@uidaho.edu Clint Jeffery University of Idaho

Game TechnologiesGame Technologies

Game development is a specialized form of software engineering

Lots of graphics, Lots++ of art A/I, Physics Networking Usually a simulation of some kind How to engineer “fun”? How to reduce the cost of development?

Game development is a specialized form of software engineering

Lots of graphics, Lots++ of art A/I, Physics Networking Usually a simulation of some kind How to engineer “fun”? How to reduce the cost of development?

Page 4: Programming Language Support for Collaborative Virtual Environments Clint Jeffery University of Idaho jeffery@uidaho.edu Clint Jeffery University of Idaho

What is a Virtual Environment?My definition for purposes of this talk

What is a Virtual Environment?My definition for purposes of this talk

3D, video game-like Multi-user, collaborative environment Persistent “virtual world” I am interested in building them…

For both games and serious purposes

3D, video game-like Multi-user, collaborative environment Persistent “virtual world” I am interested in building them…

For both games and serious purposes

Page 5: Programming Language Support for Collaborative Virtual Environments Clint Jeffery University of Idaho jeffery@uidaho.edu Clint Jeffery University of Idaho

WoWWoW

Page 6: Programming Language Support for Collaborative Virtual Environments Clint Jeffery University of Idaho jeffery@uidaho.edu Clint Jeffery University of Idaho

What do we knowabout WoW’s internals?

What do we knowabout WoW’s internals?

Rumored to cost $60M to develop initially Uses Lua as its interface customization

extension scripting language … ? I suppose we could try to hack it, but I am

not willing to risk losing my level 58 undead warrior…

Could imitate their dev model, just need $60M and more expertise than I’ve got.

Rumored to cost $60M to develop initially Uses Lua as its interface customization

extension scripting language … ? I suppose we could try to hack it, but I am

not willing to risk losing my level 58 undead warrior…

Could imitate their dev model, just need $60M and more expertise than I’ve got.

Page 7: Programming Language Support for Collaborative Virtual Environments Clint Jeffery University of Idaho jeffery@uidaho.edu Clint Jeffery University of Idaho

ChallengesChallenges

Given $0, how do I… Create a 3D world that is cool enough

“make or buy” ? (“make” sounds hard) Collect lots of textures Build a detailed 3d model of my world

With enough stuff to do to be interesting Stuff that is education-relevant Implies edu domain-specific tools What you can “buy” won’t have these

Given $0, how do I… Create a 3D world that is cool enough

“make or buy” ? (“make” sounds hard) Collect lots of textures Build a detailed 3d model of my world

With enough stuff to do to be interesting Stuff that is education-relevant Implies edu domain-specific tools What you can “buy” won’t have these

Page 8: Programming Language Support for Collaborative Virtual Environments Clint Jeffery University of Idaho jeffery@uidaho.edu Clint Jeffery University of Idaho

Research Avenueswhere you see ‘state of art’ substitute ‘WoW’

Research Avenueswhere you see ‘state of art’ substitute ‘WoW’

Difficult to advance state of art in: graphics networking

Moderately easy to advance state of art in: if you can even get in the game... AI & gameplay Educational uses

Necessary to advance state of art in: Cost of coding Cost of art, modeling, content creation

Difficult to advance state of art in: graphics networking

Moderately easy to advance state of art in: if you can even get in the game... AI & gameplay Educational uses

Necessary to advance state of art in: Cost of coding Cost of art, modeling, content creation

Page 9: Programming Language Support for Collaborative Virtual Environments Clint Jeffery University of Idaho jeffery@uidaho.edu Clint Jeffery University of Idaho

HypothesisHypothesis

If I build the right language and tools, the cost of developing custom MMOs will become tractable.

So far: graphics and networking Future: AI, physics, 3D modeling, art…

If I build the right language and tools, the cost of developing custom MMOs will become tractable.

So far: graphics and networking Future: AI, physics, 3D modeling, art…

Page 10: Programming Language Support for Collaborative Virtual Environments Clint Jeffery University of Idaho jeffery@uidaho.edu Clint Jeffery University of Idaho

What does “Language Support” Really Mean?

What does “Language Support” Really Mean?

Functions, operators, keywords, and/or Control Structures syntax! ouch! Justifiable bug avoidance, e.g.

matrix stacks, named render sections… Simplifying OpenGL and sockets Built-in smart behavior, but flexible Generalizing things like input handling

(select() and non-blocking read()) Deciding what to do in C, and what not

Functions, operators, keywords, and/or Control Structures syntax! ouch! Justifiable bug avoidance, e.g.

matrix stacks, named render sections… Simplifying OpenGL and sockets Built-in smart behavior, but flexible Generalizing things like input handling

(select() and non-blocking read()) Deciding what to do in C, and what not

Page 11: Programming Language Support for Collaborative Virtual Environments Clint Jeffery University of Idaho jeffery@uidaho.edu Clint Jeffery University of Idaho

TexturesTextures

2D image, to be drawn on a 3D surface Harder than I thought it would be Start with digital photos of everything…

each room needs 3-300 photos Tedious manual editing process!

crop dimensions to power of 2 remove irregularities scale them down to fit more in most textures need to be tileable may need GIMP or Photoshop

2D image, to be drawn on a 3D surface Harder than I thought it would be Start with digital photos of everything…

each room needs 3-300 photos Tedious manual editing process!

crop dimensions to power of 2 remove irregularities scale them down to fit more in most textures need to be tileable may need GIMP or Photoshop

Page 12: Programming Language Support for Collaborative Virtual Environments Clint Jeffery University of Idaho jeffery@uidaho.edu Clint Jeffery University of Idaho

Texture ExampleTexture Example

Page 13: Programming Language Support for Collaborative Virtual Environments Clint Jeffery University of Idaho jeffery@uidaho.edu Clint Jeffery University of Idaho

3D Model3D Model

If CAD/blueprint data is available, use it… if you can read/understand/convert it

Otherwise, start from floor plans Give (x,z) coordinates; add your y’s

Decide on a coordinate system Where is 0,0,0? Feet or meters?

If CAD/blueprint data is available, use it… if you can read/understand/convert it

Otherwise, start from floor plans Give (x,z) coordinates; add your y’s

Decide on a coordinate system Where is 0,0,0? Feet or meters?

Page 14: Programming Language Support for Collaborative Virtual Environments Clint Jeffery University of Idaho jeffery@uidaho.edu Clint Jeffery University of Idaho

ModviewModview

Page 15: Programming Language Support for Collaborative Virtual Environments Clint Jeffery University of Idaho jeffery@uidaho.edu Clint Jeffery University of Idaho

Scripting Example (SecondLife)Scripting Example (SecondLife)

Page 16: Programming Language Support for Collaborative Virtual Environments Clint Jeffery University of Idaho jeffery@uidaho.edu Clint Jeffery University of Idaho

User-defined ContentUser-defined Content

SecondLife lets users create the world We are going to let users create the

quests Quests will be dual-peer rated for (fun,xp)

where completers rate the fun, domain experts rate the xp.

SecondLife lets users create the world We are going to let users create the

quests Quests will be dual-peer rated for (fun,xp)

where completers rate the fun, domain experts rate the xp.

Page 17: Programming Language Support for Collaborative Virtual Environments Clint Jeffery University of Idaho jeffery@uidaho.edu Clint Jeffery University of Idaho

CVECVE

CS educational virtual environment Initial funding from NSF ATE program Lives at cve.sourceforge.net Runs on X11 and on Windows

(OpenGL; so far it stinks on Vista) SIMPLE 3d worlds, needs more tools Collaborative IDE Under construction Departments so far: UI and NMSU CS

CS educational virtual environment Initial funding from NSF ATE program Lives at cve.sourceforge.net Runs on X11 and on Windows

(OpenGL; so far it stinks on Vista) SIMPLE 3d worlds, needs more tools Collaborative IDE Under construction Departments so far: UI and NMSU CS

Page 18: Programming Language Support for Collaborative Virtual Environments Clint Jeffery University of Idaho jeffery@uidaho.edu Clint Jeffery University of Idaho
Page 19: Programming Language Support for Collaborative Virtual Environments Clint Jeffery University of Idaho jeffery@uidaho.edu Clint Jeffery University of Idaho
Page 20: Programming Language Support for Collaborative Virtual Environments Clint Jeffery University of Idaho jeffery@uidaho.edu Clint Jeffery University of Idaho
Page 21: Programming Language Support for Collaborative Virtual Environments Clint Jeffery University of Idaho jeffery@uidaho.edu Clint Jeffery University of Idaho

Static and Dynamic Model DataStatic and Dynamic Model Data

# static properties of a doorDoor {x 33y 0z 3.9height 2.3plane 3rooms [SH 167, corridor 167]}

#dynamic state of a doorlink {name link1openness 1.0delta 0direction 1}

#static properties of a roomRoom {name SH 167x 29.2y 0z 0.2w 6h 3.05l 3.7floor Rect { texture floor2.gif }obstacles [ Box { # window sill Rect {coords [29.2,0,.22,29.2,1,.22, 35.2,1,.22,35.2,0,.22]} }]}

Page 22: Programming Language Support for Collaborative Virtual Environments Clint Jeffery University of Idaho jeffery@uidaho.edu Clint Jeffery University of Idaho

Under ConstructionUnder Construction

High-level object selection 3D model imports

better avatars, more virtual objects NPCs and quests

CS/library tutorial content a recruiting tool, will reach grades 4+

Collaborative debugger (pty API) Collaborative design (UML--) tool Augmented reality and virtuality

High-level object selection 3D model imports

better avatars, more virtual objects NPCs and quests

CS/library tutorial content a recruiting tool, will reach grades 4+

Collaborative debugger (pty API) Collaborative design (UML--) tool Augmented reality and virtuality

Page 23: Programming Language Support for Collaborative Virtual Environments Clint Jeffery University of Idaho jeffery@uidaho.edu Clint Jeffery University of Idaho

S3D FilesS3D Files

// version

103

// nTextures,nTris,nVerts,nParts,nFrames,nLights,nCameras

1,892,445,1,24,0,0

// partList: firstVert,numVerts,firstTri,numTris,"name"

0,445,0,892,"pCube1"

// texture list: name

uvmap.tga

// triList: materialIndex,vertices(index, texX, texY)

0, 8,33.7125,75.1163, 42,32.1658,78.5249, 9,31.0493,70.0337

0, 30,93.7656,9.30429, 5,96.9879,15.1088, 2,94.4741,16.4074

0, 103,209.125,250.495, 106,211.483,238.497, 85,212.028,244.752

0, 30,93.7656,9.30429, 39,97.957,10.0346, 5,96.9879,15.1088

// version

103

// nTextures,nTris,nVerts,nParts,nFrames,nLights,nCameras

1,892,445,1,24,0,0

// partList: firstVert,numVerts,firstTri,numTris,"name"

0,445,0,892,"pCube1"

// texture list: name

uvmap.tga

// triList: materialIndex,vertices(index, texX, texY)

0, 8,33.7125,75.1163, 42,32.1658,78.5249, 9,31.0493,70.0337

0, 30,93.7656,9.30429, 5,96.9879,15.1088, 2,94.4741,16.4074

0, 103,209.125,250.495, 106,211.483,238.497, 85,212.028,244.752

0, 30,93.7656,9.30429, 39,97.957,10.0346, 5,96.9879,15.1088

Page 24: Programming Language Support for Collaborative Virtual Environments Clint Jeffery University of Idaho jeffery@uidaho.edu Clint Jeffery University of Idaho

New This SpringNew This Spring

NASA MMO Planning stages: K-12 edutainment &

recruiting Direct3D port

maybe shaders, while we are at it Mac/Cocoa port

duelling infinite loops

NASA MMO Planning stages: K-12 edutainment &

recruiting Direct3D port

maybe shaders, while we are at it Mac/Cocoa port

duelling infinite loops

Page 25: Programming Language Support for Collaborative Virtual Environments Clint Jeffery University of Idaho jeffery@uidaho.edu Clint Jeffery University of Idaho

I Need HelpI Need Help

Want to build more of uidaho? I’d love to work with you

Want to help? projects for students and new friends standalone tools, or core system elements NPCs Both game and educational stuff to do Instructional activities (quests/skills),

experience points and peer ratings system

Want to build more of uidaho? I’d love to work with you

Want to help? projects for students and new friends standalone tools, or core system elements NPCs Both game and educational stuff to do Instructional activities (quests/skills),

experience points and peer ratings system