Mozilla-Student-Projects / Projects-Tracker

Keep tracks of Firefox/Thunderbird/Firefox OS features that can/should/will be implemented as add-ons/apps.
66 stars 19 forks source link

Create (or port) a 3D game for Rust #35

Open brson opened 12 years ago

brson commented 12 years ago

Rust should be a great language for multimedia domains like gaming. It would be nice to have a good demonstration of Rust's suitability for high-performance graphics tasks. Servo has a number of Rust graphics libraries that can be useful here, and there are various other useful bindings out there for things like GL and SDL.

brendanzab commented 12 years ago

GLFW3 bindings by yours truely. I'm trying to keep it up to date with the latest updates to rust and glfw3. opengl-es is all sorted via Servo, but bindings for glcorearb.h would be incredibly useful. D has incredible support for OpenGL – it would be great if Rust could be at the same level.

Subasy commented 11 years ago

Hello,

I'm a student from the University of Evry Val d'Essonne, I would like to have more details concerning this project in order to implement it, what the final application should look like, Do you have some example illustrating it please? Waiting for your answer.

Regards, SR.

Yoric commented 11 years ago

@Subasy Well, basically, pick an open-source 3d game of your choice (preferably something rather simple, to begin with), and port it to Rust. You can find a (certainly incomplete) list of open-source games on Wikipedia.

Subasy commented 11 years ago

Is this kind of game : http://en.wikipedia.org/wiki/Frozen_Bubble a valid subject ?

Yoric commented 11 years ago

I suspect @brson wants a 3d game. However, if the resulting game is in 3d, I assume that he will be happy.

Subasy commented 11 years ago

So it means that if the balls for example are created with a library tool instead of an image it will be okay ?

brendanzab commented 11 years ago

I assume that brson wants to be able to showcase Rust's suitability for real-time 3D graphics. So OpenGL would really be what he'd be looking for.

Subasy commented 11 years ago

Indeed I'm not used to code a lot... that's why I'd like to know if you think that the project could be hold by a novice ?

brendanzab commented 11 years ago

Unfortunately 3D graphics programming is very complex stuff. I won't discourage you, as I'm not a very experienced programmer either and I'm working hard learning it, but I do warn you that the road is long and hard. You will experience many days crying in frustration as you attempt to wrap your head around matrices and quaternions.

Subasy commented 11 years ago

Thank you for your help I'll think about it ... but I've just a last question if I'm not missunderstanding I can do something animated using graphics which is not really a video game too ?

Yoric commented 11 years ago

I am sure that this would also be interesting. We will just have to open another issue for this, but that's no big deal.

Subasy commented 11 years ago

I would be interested by this new issue :)

brson commented 11 years ago

Hi, @Subasy.

So this is a very open-ended project, but I have some basic goals for it. The motivation is that multimedia software, such as games, tend to require precise control over memory and CPU resources, benefit from parallelism, and are usually written in tricky low-level languages like C++. Major game developers have been lamenting their programming languages lately. Video game engines seem like a perfect match for Rust, so I would like to prove that out by exercising the language in a way that typical, modern game engines do.

What exactly this means is open to interpretation, but here are some ideas:

The actual scope of the game itself, and whether it is even a 'game' in the traditional sense, doesn't matter so much. The important thing is to demonstrate Rust effectively doing things that game engines do, and hopefully produce new language and infrastructural improvements for future Rust game programmers.

I think that Frozen Bubble is probably not a good example of a modern game engine - it is very simple from an architectural point of view.

brson commented 11 years ago

@Subasy

I do think a project to produce some interesting animation would be great. In particular, I'm thinking a demoscene-style animation, where the focus is on producing attractive results with efficient code. That type of software has a lot in common with video games. Some attractive 3D graphics + simple audio + a parallel architecture = win.

Subasy commented 11 years ago

I think I understand what you're talking about, something like a well designed 3d car rotating with music for instance would be valid ?

brson commented 11 years ago

@Subasy Yes, I think so.

brendanzab commented 11 years ago

As an update, we now have an OpenGL function pointer loader. This is useful for advanced graphics that requires functionality outside of OpenGL ES.