A Robust Explosion Hit Check Technique

In a recent technical interview I got asked the following question: “if an explosion occurs i.e. from a grenade, how would you determine which characters in the game are affected”. This was a question that I couldnt answer at the time which annoyed the hell out of me and it’s been sitting in the back of my head for the last few weeks. So I decided to discuss it (and my proposed solution) on my blog as an “academic” exercise. I would really appreciate any feedback or comments on this discussion. This is far from being a solved problem for me and while my solution may potentially work quite well, there may be a simpler technique available which I don’t know about.

Coming back to the question. Well the naive answer to that question is to simply do a collision detection check with the explosion area of effect/blast radius (sphere) and any nearby characters’ bounding boxes. Continue reading “A Robust Explosion Hit Check Technique”

Experiences with Interviewing So Far

So I’m currently looking for a job in the game industry, location and salary are secondary to the work at this point. I kinda just want to get out of South Africa and work on something cool. I’m still young enough not have to worry about supporting a family, stability or dealing with crunch time, I kinda just need a chance. I’ve spent the last few weeks sending applications, writing programming tests and interviewing. And to be dead honest, I’m kinda starting to lose a bit of faith in myself and my chances of landing an entry level game dev job without any game experience.

Now before I carry on with this post, I need to just say that I, in no way regret any of the interviews I’ve had, I’ve learned something from each and every one of them. It’s actually been kinda fun even though I felt like a complete idiot a couple of times (I tend to be really hard on myself). The programming tests were a lot of fun and one plus is that I’ve passed all the tests I’ve written. Continue reading “Experiences with Interviewing So Far”

Completed Undergraduate Computer Graphics Course Slides

So I finally managed to complete the undergraduate course slides. I know I wanted to get them completed by the end of December but things didnt really go according to plan.

The slides are available here: http://takinginitiative.net/computer-graphics-course-slides/

These slides cover the entire graphical pipeline from start to finish in detail. They are intended for a modern computer graphics course using the D3D10 API and HLSL. The amount of information contained within the slides is quite significant and to my knowledge there isn’t a single other place online with a more comprhensive coverage of computer graphics theory.

So whats the point of putting up these slides, well they are catering for two types of people:

  • Lecturers – if you wish to modernize your undergraduate computer graphics course or are tasked with presenting such  course, these slides are a great starting point. Hell, if you want just rip them off completely. 😉
  • Hobbyist Graphics Programmers – if you want to learn more about how computer graphics are programmed, GPU architectures or the basics of texturing and lighting.

Anyways, I hope you find the slide useful. This is my last semester as a computer graphics lecturer nd so I figured that there is no point letting all my work go to waste when someone can still get some sort of benefit from them.

Enjoy 😛

I’m going to GDC 2011!!!!!

I’ve been putting off this post for a while cause it still feels like a dream! I’ve been awarded the “Eric Dybsand Memorial Scholarship for AI Development” by the IGDA Foundation as well as a GDC scholarship by the International Game Developers Association.  What this means is that I will be attending the Game Developers Conference this year!

Attending the GDC has been a huge dream of mine for the last few years, as you can see from the banner on the right hand side, financial restrictions have prevented me from attending in the past. In addition to attending the conference, I get to be introduced to various industry VIPs and shown around at the conference by seasoned industry professionals. This is the single biggest opportunity I’ve had to get into the game industry and I am sooo excited!!!

The GDC scholarship provides me with a all access pass to the GDC, so I can attend the talks as well as the expo and career seminars. The “Eric Dybsand” scholarship is an AI specific scholarship which afford me the chance to network and meet a lot of game AI programmers and an opportunity to attend the AI game programmers guild dinner! I’m crazy excited about being able to attend the AI summit especially since the list of speakers is practically the bibliography of my thesis, and as weird as it sounds these guys are like rockstars to me. I’m quite intimidated by the thought of actually meeting them in person. I really hope that I dont make a fool out of myself haha…

I’d just like to thank Neil Kirby from the IGDA foundation as well as Gordan Bellemy and Jack Bodgan from the IGDA for giving me this chance! I really really appreciate it!!!

So whats happening at the GDC this year:

  • The AI summit – 2 days of discussions regarding the key issues in game AI
  • 25 Post-mortems on classic games by the developers (games include Pac-Man, Prince of Persia, Bejeweled, Populous, Doom, Pitfall, Maniac Mansion and more)
  • A game design talk by Cliff Bleszinski of Gear of War Fame
  • Battlefield 3 Unveil (OMG!!!)
  • Keynote address by the president of Nintendo – Satoru Iwata!!!
  • and sooo much more!!

I really cant wait!!!! This has made my year!!!!

PS. I am responsible for all my accomodation and food expenses so if anyone feels like they wanna help me out by donating please feel free to do so.

Currently the total for donations I’ve received over the last ~3 years is $1…

Weapon Modification in Games

I recently played through Fallout: New Vegas and couldn’t help but feel that while the whole weapon modification system was a nice addition, it was a pointless one. I, as much as anyone, love some good gun porn and being able to modify my weapon is a welcome addition to any game but in fallout:new vegas there really wasnt any reason to bother with it.

So what did I find so wrong with the weapon modification system in new vegas? Well two things, the first being that unique weapons exist in the game world. These unique weapons are far superior to their fully upgraded standard counterparts which makes you wonder why should I bother with the upgrades? You’ll spent a ton of cash buying the upgrades just to end up with an inferior weapon. Honestly, if designers want unique weapons, I think they need to either remove the entire modification system (and offer more unique weapons) or make the unique weapons upgradeable as well. Hell, make unique weapons unique by adding smaller perks like offering increased criticals or accuracy due to improved internals or improved reliability or something along those lines. That way the the player still has the option of modifying the unique weapons as well and not lose any of the unique features. Basically what you’d be doing is offering the player an improved base platform for the weapon modifications.

Hunting Rifle Upgrade Options from Fallout:New Vegas

Continue reading “Weapon Modification in Games”

Setting up the DirectX SDK with Visual Studio 2010

So I had a bit of time this morning and finally upgraded to visual studio 2010. There are a lot of changes but I am really enjoying it. It is a definite improvement over VS2008, some features that I have been begging for for years are finally in and the interface has been cleaned up significantly.

The new help system takes a bit of getting used to but it is only the first version and they promised that some massive improvements are coming.

Now Getting DX integrated with VS2010 was a bit tricky as the installer doesn’t automatically as the SDK include and lib folders to the default include/lib folders as it did in VS 2008, and it requires a bit of fiddling.

Setting up the Include and Library Paths

They removed the global VC path system accessible through the options dialog and have opted for a per-project path system with several global user files. This mean that for every single project that you make that uses the DX API you will need to add in the DX SDK directories manually via the project properties -> VC++ Directories (I’d personally recommend this technique since it allows projects to be more portable) but if you are lazy, you can add the SDK paths to the default c++ project settings template stored in the glocal cpp user file. This is done as follows:

Step 1: Open up the “Property Manager” under the “View” menu.

Continue reading “Setting up the DirectX SDK with Visual Studio 2010”

Discrete Pulse Transforms and Rants…

I don’t know if I mentioned this before but my father is a math’s professor at the University of Pretoria. I’ll be doing my honors year next year, and I can maybe get credit for my one subject by helping my dad develop an algorithm/program to do discrete pulse transform in a 2d space. The inventor behind these transforms (also referred to as LULU operators) is a math’s professor at the University of Stellenbosch.

My role isn’t an important one, my task is to get my dad’s semi working (or not) matlab programs and rework and optimize them in c++, and then focus on maybe porting them over to a GPGPU format. So far this has been a tiring task since matlab programming is basically scripting, really badly formatted scripting. Now I have to take managed code written by my dad who has almost no experience in programming and convert it into a fast and efficient c++ program.

Architecture wise this is proven to be a nightmare as I don’t know c++ intimately and by that I mean know ever little trick in the language, and I’ve been working in c++ for years. I now have to think about the smallest performance problems, for examples will a lookup table really be faster or will the resulting cache misses result in it being slower, if you remember I tried using a lookup table in a previous project and it turned out to be a lot slower, I think this might be the reason.

The most embarrassing thing is that I work in the computer science department; this department produces almost as much computer science research papers as every single other department countrywide put together. And there is’nt really any one that I can talk to about extreme c++ optimization and techniques. There is way too much focus on software engineering and documentation, and not enough on the serious in depth topics concern with programming and its techniques. I’ve completed my undergraduate degree and the term cache miss has never cropped up, I think this is absolutely unacceptable. And now the department has moved almost all the undergraduate courses to java including the data structures and algorithms courses, the degree might as well be a bsc “java monkey” or a bsc “I can’t program anything complicated”.

The entire degree program and evaluation system here has just been one frustration after another, everything I’ve learnt I’ve had to do myself, and the courses where I’ve had a thorough understanding of the material and that interested me (namely AI and graphics) my marks were bad in, I’m just bad at memorizing material verbatim, I’m sorry but I’m really angry at this, I’m probably in the top 10 programmers in my year group and my marks are sitting towards the bottom of the spectrum just because my brain doesn’t work well with remembering exact phrases and dry theory too well. And the worst part is I’m one of the top programmers not because I’m a great programmer or super smart, but because everyone else here are idiots, it’s easy to memorize class notes and vomit them back up at the exam time. I thought it was just here but I’m starting to think that it might be the same everywhere…

Anyways I’ve gotten off topic with that rant about the sorry state of computer science in academia and my disillusionment with it.

I had a meeting with my dad and that professor from Stellenbosch and I felt like such an idiot, at least it seems in mathematics there are still people that have talents and know what there are talking about, that discussion was crazy intense. It’s awesome to actually feel like an idiot for a change, I don’t run into many humbling experiences in my field unfortunately. The 2d application of the LULU operators / DPT transforms hasnt really been explored and we dont really know if we’d be able to even apply it to a 2d image but i guess thats the goal of research. At least i’m learning things bit by bit…

Now I’m still carrying on with my conversions but I’m stuck here staring at a profiling and I’m have lot of idea for different implementations but I’m so tired of having to write 6 different versions and test them to see how they perform and then sit in front of google and hope to find out what causes the performance differences. I’d love to just meet someone that I can ask a ton of technical questions on compiler optimizations, cache techniques, storage of instructions in registers etc. I’m so tired of self study…

Guess it’s just wishful thinking at this stage. At the end of the day the cold reality is that I can’t rely on anyone here for advice.

I’m tired now and this rant has gone completely off topic, i’ll write up my initial progress in the weeks to come… I’ve also started with my game dev project, its going to be a total conversion for the UE3 engine, should be tons of fun and a nice challenge. I’m pretty much living my life one challenge after another…