Archive for the College Category

    C++ Callbacks

    Good ‘oul C++, all these magic intricacies.

    m_CheckDifficultListener = new nsCEQGameCheckCorrectCallback( this );

    and

    m_CheckCorrectListener = new nsCEQGameCheckCorrectCallback( this );

    will actually call the same callback.

    Time to find bug: 2 hours

    How to Make a Better Games Masters

    We’ve been having running discussions in college about how ridiculous some of our modules are, and the way some of the modules are set up.

    For example, one particular module, which shall remain nameless, consisted of weeks of lectures dedicated to teaching us how to design massive enterprise-level software systems. How to manage distributed teams. What best software methodology to use.
    Only problem is, all of that is completely irrelevant to someone who isn’t a manager or architect.
    Sure, maybe if it was a postgraduate course in management or something, that’d be a fine module to teach. But are we seriously going to need to know what sort of development methodology would be required when company X needs system Y to do task Z?
    It’s nice to have a vague understanding of the area, so when someone says “Model driven development”, you at least know what it means. But a module about designing systems? That’s for system architects, who, I imagine, by the time they get to that point in their jobs, they’ve already learnt everything they need to know on the job.

    This, combined with a ridiculously difficult individual project, thrown at us early in the year (develop a multithreaded asteroids game to be run over a network – 20%), a ridiculously undervalued group project (develop an entire networked 3d pool game – 20%) meant the module became a bit of a joke towards the end.

    And instead?
    Have a module that’s actually about games. Not about the rendering or the AI but about game design. Each week (two weeks for the longer ones!), the class is instructed to go play a particular game (and keep them awesome, like TIE Fighter and Prince of Persia: Sands of Time). They then write a short (1-2 page) report on it (what they liked, what they didn’t, what worked, what didn’t) each week, getting 5-10% for each report.
    Everyone would get to play some good games, everyone would have to form an opinion. People would chat, they’d then have to discuss it in class (maybe for more credit?).

    Also, rather than inviting some fairly generic/rubbish speakers for seminars (an mid-level designer who helped develop a really really bad game is not a good role model), bring people who inspire, who are shaping the current industry. Sure, it’s a bit unrealistic to have those three (Peter Molyneux, Will Wright, Sid Meier) come talk to a bunch of students, but it would’ve been far better to have, say, a speaker from Rockstar, Lionhead, Criterion, Rare, Free Radical/Crytek UK and Media Molecule (which are all UK-based) rather than three speakers explaining what localisation was, at least two basically just demoing middleware and one nearly explaining what XNA was (luckily we pointed out we’d already developed a fairly substantial project in it).

    Maybe they’ll do better next year?

    We Now Return To…

    Finally finally finished my last exam today, I’ve got five glorious days off before it starts again (though I do have a conference call Thursday).

    Best I can remember, in the last six weeks I:
    Generated a torus procedurally in XNA
    Wrote a 2000 word report on an NLG system developed (by Andrew and Tom!) for GIVE, put together a presentation for said report (in college till 4am that day), then presented most of it
    Did a 15 minute presentation on TIE Fighter that was meant to be about the graphics, but was generally about how awesome it was (FUCKING SUPER AWESOME)
    Wrote a report on election modelling
    Tried to implement election modelling in Mathematica, gave up and did some basic poll stuff
    Wrote game rules for our (mainly Dave’s) pool project (demo video soon, hopefully)
    Generally bug fixed and coded on the pool project
    Did half of the pool project demo
    Wrote most of one of the accompanying reports
    Wrote 2000 peer evaluation report
    Read 4-6 papers on explosion simulation, explosive smoke simulation, smoke simulation, eventually implemented a really really really fucking basic smoke simulation
    Wrote accompanying 2500 word report
    Got the front square of Trinity displaying in XNA (from 3ds Max – bastard of a thing), implemented realtime lighting (kinda worked), lightmaps (worked), phong shading (worked) and a pixel effect that made it look like Sin City/MadWorld (awesome) (video soon)
    Deployed it to 360
    Wrote accompanying report (7 pages I think)
    Had a meeting about our next project (four weeks solid of group development), which we’re expected to get to commercial/scientific quality in that time (ah…no!!)
    Studied for a maths exam that went fine
    Studied for a graphics hardware exam that didn’t go so fine
    Studied for a software engineering exam that went ok
    Been in college for at least 8 hours all but three days (one cos of the birthday, two cos I’m lazy)
    Generally averaged about 13 hours each day (10am-11pm)
    Cleared the story of Chinatown Wars (like 5:01, it was pretty short)
    Watched Ireland win the Grand Slam (oh, it was good alright)

    So it’s down to Limerick tomorrow (see the lads, Wednesday of Rag week, woo!), home Thursday, back up Friday, out Friday night, games Saturday, games Sunday.

    Then it’s back.

    Procedural Torus with Point Light Source

    After my self-imposed one-post-a-day rule for February, I’m significantly worse in March. Pretty much zero free time’s the reason, obviously, but here’s a very late lab!

    This lab wasn’t as pretty as the other ones – just a torus with a spotlight.

    The torus is generated from a flat 2d plane (using its parametric equation). The torus itself wasn’t too bad to generate, never quite got the textures working properly though.
    The spotlight took a bit of tweaking to work too, but it was ok in the end.

    Break; Continue;

    Fscking late night coding (in college till 11 tonight, 11 last night).

    foreach (Vector2 y in neighbours(x)){
        if (closedList.contains(y){
            break;
        }
        //Loads of other important code
    }

    is not the fucking same as

    foreach (Vector2 y in neighbours(x)){
        if (closedList.contains(y){
            continue;
        }
        //Loads of other important code
    }

    Time to find bug: ~3 hours