Title: eNVyMyCar
1eNVyMyCar
a Multi-player Car Racing Game for Teaching
Computer Graphics
Fabio Ganovelli Massimiliano Corsini Visual
Computing Lab, ISTI - PISA
2Before starting...
- meet
- SoftOGL
- how to make your students hate you
32006 appointed contract professor at University
Of Siena for the course of
Fundamental of Computer Graphics
- 7 weeks
- 42 hours (middle term test and lab included)?
- 9 students
Pisa
Siena
4Possible Course Program
- Introduction (history, uses, trends...)?
- general notions (rendering paradigms,
hardware...)? - tranformations
- rasterization
- lighting and texture mapping
- final project simple projects using OpenGL...
I could have done this way...
still...
5(No Transcript)
6(No Transcript)
7Course project SoftOGL.sf.net
Implementing a working OpenGL-like graphics
API benefit to make the students gain a
solid understanding of CG algorithms
8namespace softogl namespace impl //
DDA segment rasterization // void
DDASegmentRasterization(Segment2d s,int size1)
// .................implementation............
...... // // Bresehnam segment
rasterization // void BresenhamSegmentRasteri
zation(Segment2d s,int siz 1) //
.................implementation..................
// // Polygon Filling // void
PolygonFilling(Polygon2d p) //
.................implementation.................
// // // end impl namespace
sdk // ... // end sdk
students iplementation
me environment and SDK tools
9(No Transcript)
10SoftOGL
first day, Feb 27, 2006
11last day, April 9, 2006
12Mistakes
- programming skills (
- little sense of achievement (
- way too much work for the number of credits given
by the CG course (
132007 My collegue Massimiliano was appointed
contract professor at University Of Ferrara
Ferrara
Pisa
Siena
14Goals of the course project
- Give them a reachable target
- Generate cooperation and competition between
students - Make them learn some CG
- Set the students in a common framework without
too much specialized tasks - Do not burden them with non-CG problems
15(No Transcript)
16yeah..
17eNVyMyCar.sf.net
a Multi-player Car Racing Game for Teaching
Computer Graphics
18Concept
- A software framework implementing a simple
multi-player car-racing game over a LAN - Student's task implement a client for the game
- RENDER the scene interactively
- take the user input
doesn't it remind you something?...
19Goals of the course project
- Give them a reachable target
- Generate cooperation and competition between
students - Make them learn some CG
- Set the students in a common framework without
too much specialized tasks - Do not burden them with non-CG problems
20Envy factor
- At any moment, a client may send a snapshot of
its view to all the others connected
NVMC_Server
21Goals of the course project
- Give them a reachable target
- Generate cooperation and competition between
students - Make them learn some CG
- Set the students in a common framework without
too much specialized tasks - Do not burden them with non-CG problems
22(No Transcript)
23NVMC Architecture
\
24include ltgame_client.hgt extern NvmcClient
cli void draw_scene() cli.UpdateScene() /
...../ cli.UpdateScreenshots() void
process_event(....) switch(..) case ...
cli.Command(COMMAND_INCREASE_SPEED) break case
... cli.Command(COMMAND_DECREASE_SPEED)
break case ... cli.Command(COMMAND_TURN_LEFT)
break case ... cli.Command(COMMAND_TURN_RIGHT
) break case ... cli.Command(COMMAND_BRAKE)
break case ... cli.Command(SEND_SCREENSHOT)br
eak int launch_viewer() ......
25making a circuit
- NVMC provides a simple code to convert a bitmap
in a circuit
26Implementation
- the simpler the better
- C
- VCG for geometric concepts (vcg.sf.net)?
- QT for networking and multi threading
- whatever you/they like for GUI (sdl -glut -qt)?
- used with Windows ( .net), Mac (xcode), Linux
(eclipse/Kdevelop)
27Goals of the course project
- Give them a reachable target
- Generate cooperation and competition between
students - Make them learn some CG
- Set the students in a common framework without
too much specialized tasks - Do not burden them with non-CG problems
28(No Transcript)
29(No Transcript)
30Encourage clean code
- code must be modular if student A includes
features written by student B it is a bonus for
both - Q How do you know who did it first?
- A1 trust them
- source code is open envymycar.sf.net
- CVS repository
- A2 have a look to the commit timestamps
31Goals of the course project
- Give them a reachable target
- Generate cooperation and competition between
students - Make them learn some CG
- Set the students in a common framework without
too much specialized tasks - Do not burden them with non-CG problems
32Conclusion
- NVMC was used in 2 courses in 2006 and in one
course in 2007 (just finished)? - The feedback of the 39 students of these courses
was very satisfactory (after the usual
it's-too-much-work default complaint)? - problems can be in the background knowledge of
c and the bit of Stl they need to know.
33Future Work
- Implementation is quite poor
- no collision detection
- only flat circuits
- ...other things we can put there having time..
- Set up a public NVMC server for students of
different campus to show off
34Thanks!
http//envymycar.sf.net
thanks to all our students who worked with
nvmc Renata Otfinoswka for all the drawings