Poject Suggestions Needed

The bold text is the important bits (for those of you with limited time :smiley:)

First thing’s first, one of my classes at uni this semester is software engineering, but believe me, I’m one of the people who do programming because they enjoy it, not because they need to in order to pass a course (those ones annoy me :stuck_out_tongue:).

I have a software engineering (python) assignment for uni, and i can do whatever I want for it. Obviously, I want to do something I enjoy, so my first thought is something related to 3D graphics / 3D games etc.

I’m aiming to get a 7 (high distinction in Australia), and the assignment is marked on how ‘well’ your program is written (is it pythonic, does the program flow make sense, documentation, logical classes/functions/variable names etc) as well as how cool it is (the ‘wow’ factor). The only other criteria is that it has to be advanced, it has to do something tricky or complex…

I first up thought of doing a FPS in panda3D, but that wouldn’t be complex enough, and would involve way too much modeling and content creation, rather than programming.

Other ideas I have had since then have included:

  • A procedural texture generation module that contains functions such as perlin noise, shapes, color modifiers, texture layers, blending operations as well as a scriptable plugin option.

  • A ?flying vehicle network shooter (eg, 2 players are in planes, must fly around and gun down the other player) - this would be less modeling than the FPS as all terrain etc could be done via skyboxes. Vehicles would be the only models really necessary. This could be made complex via the network side, and perhaps by writing my own bluetooth support for wiimotes as a controller option?

  • A 3D plotting / graphing / math simulation program of some sort - I’ve done this before in OpenGL + C though, so it would be boring to do it again.

  • A environment class (i’ve got half working code for this already) for a game engine. This could be a module that handles automatic simulation of the environment around the player in a game. Eg the class would automatically generate noise-based cloud systems and put them in the sky, it would handle sunrise, sunsets, storms, fog etc. -not very complex though

  • An ODE/Panda3D physics demo. Perhaps a small map which contains examples of advanced game physics (explosions, grenades, ragdolls, bouyancy, breakable objects, rope physics, bullet physics etc). Once again, this wouldn’t be very complex, as it would essentially be a whole ton of calls to the PyODE and Panda library, not much of my code.

  • Some sort of AI demonstration / ANN brain simulation environment? This could be ideal for the project, but I’ve never done this before, and it would be a bit of a learning curve.

deep breath

Ok, sorry for the long post, but I just want some feedback about what other people think about my ideas, and any other ideas others have… Which one do you think sounds coolest / most feasible / whatever.

I’ve got 2 and a bit months to do it, but I want to get started asap.

physics is always cool.
if you’r using ODE having something like a gravity-gun (from halflife2) would be quite easy to do, and really cool to toy around with.

for the flightsimulator idea. for the terrain you can use panda’s geomipterrain which can create terrains from grayscale images for you.
for the grayscale images… well either paint them by hand or use panda’s buildin perlin-noise generator to create pnm-images.

networking support over LAN is really easy to do since you dont have to care about lags or traffic limits.

for the “wow” effect. some people recently wrote a shader for volumetric lighting. this really is one of those “wow” effects you might want to have.

i’d say flightsim is by far the smallest project you can try.other than some basic math for the plane’s movement. it only requires the models, some lines of networking (if you add that) and a few other lines for collision and guning but that it.

just to give you inspiration for a bit more advanced (and more difficult to do stuff). i throw a portal-example into the code-snippset section a few weeks ago. not complete but its quite intresting. another good inspiration might be the game “flower” for the playstation 3. try searching youtube for gameplay vids.

anyway. flightsims are good. modell your plane, bake AmbientOcclusion into it. add a slightly blueish omni-light to your scene, and a directonal one for the sun. maybe use the volumetric-light shader. throw in 2 planes (maybe WW1 stuff or maybe even model-planes) and well you’r almost good to go :slight_smile:

Thanks for the reply ThomasEgi.

Yeah, I argee. cool + grab peoples attention = Gravity Gun. However I might leave the physics for a personal project, rather than a uni one, simply because i don’t think it would be complex enough to simply make a ton of calls to other libraries (maybe I’m wrong)… It’s still an option tho.

lol “some people”… :smiley:

Yeah flightsim sounds like a good idea. Like you, I was thinking WWII / model planes…

I just downloaded your portal example (before reading this) :stuck_out_tongue: Having a look now.

flower = WOW FAR OUT AWESOME - they really have done a good job with that (from what I can tell without playing it). It looks like a de blob ish equivalent for ps3, only more laid back… - thanks for the inspiration!

I’d still like to hear other people’s suggestions and comments though…!

ah sory about that “some people” i just crawled out of the bed and didnt realize it was you. i tend to never read the name of the person asking a question. if you’r intrested in the flower thing. i once had a link showing how to do the gras-bending-away. would need to search my history first.

A simple piece of advice - 2 months is not long, so something going wrong could prove catastrophic. In other words, choose something that is modular/layered etc, so if you run out of time you still have something cool to show anyway. In my mind that means ‘complete’ games are quite risky, so the procedural texture and physics demo ideas you posited seem best, as there quick to get working and can then be refined. Also remember that if quality of code is an issue a small amount of well written and designed code is probably going to be better from a marks perspective than a rushed system which is too big to get right in the time available. A comment on the AI idea - justifying why you did something often matters for marks, but justifying decisions in an AI system can be rather tricky at times.

Now, if I was in your position I would go for the procedural texture gen - there is a nice but small bit of design work that goes into the structure of it all, followed by a bunch of individually researched and, potentially quite different, modules. Its also something you could contribute back to this community, though it might need to be ultimately converted to c++ first for speed, and maybe integrated into pack panda for install time generation. btw, remember that a real world procedural texture system is not just an interface design and modules that plug together - there is caching for speed of future loading, there is generation of normal/specular etc maps, there is physics based texture simulation and then there is the ability to construct modules from other modules. And finally there are guis for designing the procedural textures and file formats for storing them - and every one of those is optional in such a project and something to throw at the ‘future work’ section of documentation if not done.

Thanks for the advice, lethe!

You make a good point, procedural texture generation would be easy too fall back to a simpler project, if something went wrong - very modular. I’ve once looked at this before in C, however that was a while ago and was also a very simple ‘look into it’ :smiley:

Sorry, could you explain what you mean by this? -Generating textures on the fly, based on dynamic (physics) events?

Thanks for your input!

@ThomasEgi: lol, don’t worry about it, I know the exact same feeling - I’m not a morning person :wink: Yeah, I’d be interested in anything to do with the flower game, it looks so awesome. Mind you, I don’t think I’ll do something quite like that for my proj, so don’t feel in any hurry to dig up that link… sometime would be nice tho :slight_smile:

After a discussion with my dad ^^ I have another idea.

Problem: My university has 14 libraries, and all of them are huge. I can look up books in the catalog, but can never find them on shelves :S

I could write a program that reads in a library file containing 3D model data and the position of stairs and more importantly, library books on shelves. The program then calculates the path to the book code you have entered in using some simple path-finding algorithm and returns the distance and approximate time to that books location (using stairs/elevator etc). After this, the user gets a 3D wireframe overview of their current location and the location of the book, and the program then shows a first person flythrough, moving from their current position to the book on the shelf.

It could be made more complex by focusing on the path-finding alg. It is, admittedly, not as interesting as a network plane shooter, a proc tex generator or a physics sim; but I think I could earn extra brownie points simply because the staff marking the project will be able to relate to it (as well as other students - the program has an immediate use within the uni).

Suggestions about implementation / general comments?


I’m not referring to any physics simulation from the game being involved, I’m referring to how the material is generated. This mostly refers to ageing processes, i.e. rust, wear & tear, consequences of water flow, and organics, i.e. moss growing on the texture etc. Physics may not be the best term - its more the sense of having a simulation where you set parameters including, how long the simulation runs for, and get a texture or layer of a texture or modified texture back. Its quite a powerful technique - its behind all good landscape generation for instance. (Simulating erosion and water flow makes a real difference. And yes, a procedural texture generator should do height maps as well.)

Saying that, now you mention it, there has been work where textures are generated from in game physics events beyond simple decals. This mostly involves crumpling cars etc, where the detail in the crumple simulation is turned into a normal map texture rather than polygons as they are not detailed enough, and will often include paint flaking effects as well.

took me almost halfn hour to find that link again:
thought their grass-textures are not really that good. the technique itself is nice. combine it with some others and it’ll look great.
more on grass stuff:
the gpu-gem article has about the best-looking one.

Thankyou both for your prompt replies again!

The library idea seems really interesting. It seems a little too big for the time you have, perhaps. And by that I mean to make a full demonstration of it, it seems like a lot of repetetive coding things rather than unique and interesting ones. Like plugging in a bunch of books manually, or creating the system to be able to add them. I’m honestly not seasoned enough to even know how to do these things, but it seems too heavy on the less creative side for a project like this than is necessary.

That being said, I feel like the environment class is the one that can be expanded to be the most complex. Between lighting, weather, and sounds, you’d have a great base. You can also expand it to where the user can move around, and the environment changes dynamically based on where you are, what direction you’re moving, etc. You could even implement your path-finding idea into it.

I dunno, just my thoughts, whatever they’re worth. :laughing:

Thanks AamesxDavid fir your reply.

About the environment class; you’re right, it could be expanded indefinably. I’ve actually already started on something like this in my spare time. -it linearly interpolates between different colours in the sky depending on the weather / time of day. I stopped work on it when I got up to adding procedural clouds :slight_smile:

Thanks for your advice/comments