Todays goal is to get you guys working.
To this end I am going to talk briefly (< 20 minutes) and then we are all going to head over to the cs lab to install nebula and play around with stuff.
I will discuss the first project, and briefly go over the build systems (detailed instructions on this are below).
Finally we will talk about projects for you guys, help you pick a minor project and a major one.
This is an easy one to explain, build a 3d version of othello.
You can build the usual 2d board, or try a 3d version of the game but it must be displayed in 3d.
Use the keyboard to select where to move and try to follow atleast most of the rules of the game.
You do not need to implement an AI, this is just an exercise in displaying in 3d.
Model the solar system using gravity (no hard coding orbits).
Be COOL! add asteroids, comets with trails, solar flares, whatever!
To add classes to nebula you need to understand the nebula build system.
Instead of manually maintaining a makefile, they abstract it another level and use files that define how the makefile should be built.
It works quite simply actually (much better the using super complicated makefiles).
To further simply this there is a little gui to create the original source files for you which makes the process less error prone.
go to nebula/code/templates
run wish classbuild.tcl
This will present a nice lil gui for adding classes.
The class to create is called nGravity.
It inherits from PhysicalAspect as it needs to interact with the physics aspect to apply the force of gravity.
This will create 3 files, ngravity.h, ngravity_main.cc, ngravity_cmds.cc
Under nebula/code/src there are a number of .pak files.
Each file contains information used to build the makefile.
To add a class go into vr.pak
#-------------------------------------------------------------------- beginmodule ngravity setdir vr setfiles { ngravity_main ngravity_cmds } setheaders ngravity endmodule #--------------------------------------------------------------------
Each one of these blocks describes a module, which is essentially a class to compile.
The various lines describe the
directory it is in, the name of the .cc files, and the name of the .h files
The second section describes how the classes are organized into dll's or libraries.
#-------------------------------------------------------------------- begintarget vr settype package setmods { ngravity } setdepends { nkernel nnebula opcode ncollide } setlibs_win32 { nkernel.lib nnebula.lib opcode.lib ncollide.lib } setlibs_unix { nkernel nnebula opcode ncollide } endtarget #--------------------------------------------------------------------
After this run tclsh updsrc.tcl, and it will run through these and produce makefiles. It does a nice job of parsing the files for you, and determing the dependencies.
After updsrc runs, run make (nebula/code/src) and it should build your new class.
The FIRST thing you should do is open up the game, and see if the class was actually added (try to call new ngravity gravity it).
It might throw an assertion (as its not the child of an ent), but that is fine just make sure it exists.
Doing a serious racing game raised too many problems to present feasible prjoects for you guys.
Too much time would have been spent tuning physics, without getting to anything interesting.
Below I have sorted them on how difficult I expect them to be, and what kind of work will it mostly involve.