Final year student from an IT college in Ireland. I'm not really sure if this is the right place to post but It seems that graphics programming is very closely related to games and the people here would have the most insight.
So just an introduction to myself and the problem. Basically Im in my final year of my degree and rather than do a thesis we do a final year project that has to be crisp.
My primary language is Java and I've used it many times in the past. It is not a language I would say I love but it is easily my strongest. I've also used Ruby on rails for an internship i got this summer and I have a good grounding on the web side of things. I've also done some very basic c++ (what i would consider basic). My c++ skills basically comes down to different tutorials on things that other languages are based on. E.g heres a lab sheet on containers, pointers, operator overloading or something from the STL. It was more a module to develop our analytical thinking than experience with c++. C++ was just the medium for learning.
My opinion on the language? C++ is an amazingly diverse one size fits all language and its no surprise its around this long. My skills in it are basic at best and could use a mountain of polish. No experience in advanced memory management or any UI frameworks.
And now to the project. Every year the final year students pick a project of choice and if it has some interesting functionality and satisfies a certain difficulty level then its approved. This year however they have gone a different approach due to some very lazy approaches from students in the past. Fair enough I thought.
Well I got my project assigned today. Sure enough I was expecting a project based on my strengths, some sort of db, maybe restful services or a cloud App since those are the buzz words these days.
So the sheet was being passed throughout the lecture hall with the list, every few seconds i would notice someone look to me and snicker or look horrified.
I'm sure by this point you've guessed the project. Your just that smart.
A blood flow physics simulator from a human organ based on nvidia's Cuda....
My jaw literally hit the floor and I said WTF aloud. Not my brightest moment. So we've gone from students making lazy decisions to lecturers just crapping out projects handing us a fork and saying eat it...... but i digress.
If I wasn't up to the task of this then why would I be here asking this question?
The reason is as shocked as I am about this. I don't like to lose. I have my own queries on how appealing this project would be to someone looking to hire me as there doesn't seem to be a lot of jobs going for organ blood flow coders. This is something I will be discussing with my lecturer in depth first but if anyone has any comments on that side of things then I'm happy to hear them.
The main point of the question is the feasibility of getting a decent working project out of this though. I could do 2-3 weeks of research and still not come up with any conclusive results on whether this project is the right way to go.
There is no finite answer to this question, just any experienced advice on what route to pick and what resources to go for.
By this I mean I've always heard that graphics programming is hard. So for someone with basic c++ skills and an OK level of discrete mathematics, is it feasible to complete this project spec or is it the equivalent of shooting myself in the legs and stuggling to crawl past the finish line?
Assuming the answer isn't 'go blast your lecturer for giving you this project'
What resources should i seek out to make this not just a passable project but one that'll be demo-able and I can stand proud beside.
What advice can you give to someone like me that you wish someone had told you?
Absolutely any opinion of debate on this topic is appreciated as I'm fairly lost on what to do.
Thanks for reading my rant and I'll finish up here. Look, I'm good at Java but its not the best thing in the world. I'm OK at C++ but its one language I would really like to explore and make my primary language. (assuming there are jobs for grads in this area)
This project will most likely define the career I take and the language that I base my first decade of programming on. This is important to me so please do not dismiss it as another student who likes games and wants to code them. I'm a hungry young developer and intend to stay that way.
Would experience coding a
A blood flow physics simulator from a human organ based on nvidia's Cudawould be worthwhile industry experience.
It may not be the blood flow simulation that gets you
experience as such, but the implementation of the application to a worthwhile standard. I imagine its to that effect you are graded on the project aswell.
There is no finite answer to this question, just any experienced advice on what route to pick and what resources to go for.
This is a Q&A site, perhaps you wanted chat or forums.
This project will most likely define the career I take and the language that I base my first decade of programming on.
It shouldn't, only the experience you get in developing the project should.
This may be more suited for the Programmers stack exchange, its relevance to Game Development is only the use of the GPU...
You can always go 2D instead of 3D to make things easier.
Cuda is C like so that could be a nice experience too, don't give up ;-)
 you can surely dig up an example of something likewise too (check out the Gpu Gems books, (a fast search gave me this link:) Gpu gems 1, gpu gems 2 and specially gpu gems 3)
Presumably there is a reason you got that assignment. If your lecturer thinks you will grow a new pair of limbs by being shot in the legs, perhaps that's why he did it. The best projects for learning, IMO, are the hard projects. No pain, no gain. That sounds like by far one of the coolest projects out of any that were probably handed out -- even games -- because that's some pretty hardcore tech you'll be dealing with it.
Take it on the jaw, and start learning now (not tomorrow). Find the right online sources for learning and support, and get some good books.
Out of the numerous fields I've touched on as a professional developer (not just games), computational geometry, graphics and physics are some of the most interesting by far.
In my final year of uni, there were two game projects: our project (myself and a partner), and another (a group of three). Although visually not nearly as impressive as the other project, ours took top marks for the year. Why? Because we wrote it from the ground up, engine included, whereas they used a prebuilt engine. That was a long time ago, and the landscape of game development has changed enormously, but it's a lesson in the benefits of taking the hard road.
This thesis (from a friend) on Particle Tracking on a GPU should give you a few basic insights on what is necessary when doing GPU work. This was a MSc Engineering final work.
OpenFOAM is often used for blood flow simulations, see GPU-based simulation of 3D blood ﬂow in abdominal aorta using OpenFOAM.
Remember to cite your sources if you use these as a base!
them to be attached to the node in most cases, even if I allow setting global lights to the scene. @Nicol: Yes that's what I'm trying to figure out. You can see the code doesn't rely on any hardware... know if my speculations are ok, as I don't have much experience with 3d animations yet. I want to make a well decision as any option I choose would require a lot of work to get it to render and I... that make really hard to work with when coding some functions that use them. I was thinking of making ie. SimpleMesh and HierarchyMesh objects, which will also require that the renderer can deal
library and stick with it. I switched physics engines 3 times which caused quite a bit of wasted time, so I would like to be set when I pick an Audio lib. I will be falling into the "indie" section as far as licensing goes. Here is what I have so far.. FMOD - Quality Middleware, success has gone to their heads and it seems they did away with the indie license recently. Price range seems to go from... months ago on par with FMOD/BASS/etc that were fairly new. No matter how hard I look now, I cannot find them. Hopefully someone here knows what they might be called. Anyways, basically just looking
the current stage of my work is not even close to actually making the wall-related code, I've come up with three different ways to do it. Right now I'm unsure which one of my ideas will work best..., nothing to change in the engine. Cons: Two things. One - it might be just in my head, but some combinations just look ugly. Second - this approach allows to make a double-wall from two adjacent tiles... the players double-wall the whole map, I'm going to beat them to it. Every wall has two halves that are attached to the edge of the tile from inside. So, to make a single "Wall unit" I'll have to create
, they are horrible. Absolutely unusable, I'd need to make my own for sure. I didn't look at their API, but if their tools are so bad, I'm not inclined to look further. Unity3D. This one is quite nice, but I really don't need 3D, and it is quite ...a lot of work to learn. I also don't like that it is so expensive to use for different platforms and that I can only code for it through scripting. You have to buy each... don't really need 3D. The editor usability is a little worse than Unity3D in my opinion and it wasn't clear to me how to start programming. I think it requires C++ for coding, so that's a negative too. I
, not noticeable, so it's better to optomize how much work you can get done in your lifetime, than to make things a millisecond faster, again, assuming it's not in your physics engine or something like that. All this seems well and good, except I have one question, why not linked lists rather than arrays? Sure, if you had to make your own linked list class, I would be on board, but in c++ anyway, assuming.... And I could see a case there for using arrays rather than linked lists, because you would have to make your own (which while simple enough to do, could potentially lead to many more errors). I also
together. I am not an animator so i assume most of what i just said is not right but i hope that some one can understand what i mean and provide an answer. PS) I am a programmer and I am in the process of building a hitmanesque game, just because i love that style of game and I want to increase my skills on something fun, so if you do know what i'm talking about have some examples...I am just curious as to how in many games (namely games like arkham asylum/city, manhunt, hitman) do they make it so that your character can "grab" a character in front of you and do stuff to them. I
ago, decided to switch to C++. I wanted to get a good handle on C++ since it's been awhile since I used it heavily, and figured an interesting project like this would be a good motivator. I've been... areas of concern I have and wanted to get some opinions on the proper way others have solved them or would solve them. 1. Cyclical Dependencies When I was doing the game in C#, I didn't really have... my classes and still have them do what I want. Here's a few examples of a dependency chain: I have a status effect class. The class has a number of methods (Apply/Unapply, Tick, etc.) to apply
detection. Up is negative y and down is positive y, as it is in most games. Hopefully I have provided enough information for someone to help me successfully. If there is something I left out that might... to work correctly. Player movement ends up being very glitchy and repositions the player when I don't want it to. Part of the reason is probably because I feel like this is something so simple but I'm over-thinking it. If anyone thinks they can help, please take a look at the code below and help me try to improve on this if you can. I would like to refrain from using a library to handle this (as I
happy to outsource graphics and sound, leaving me with coding, game design, level design and so forth. Do I need to learn C++ properly, or can I rely on my C# and .Net knowledge? If I'm going to leave C... to devote to pure maths self-education, or can I pretty much figure it out as I go? In a nutshell, I'd love to get some idea of what the best approach for me would be, including DO's and DON'T's that might slow me down. I know that baby steps will be required at first, but it would be nice to get some advice as to what path I should follow to get myself up to speed quickly so that I am able to create