Jump to content

  • Log In with Google      Sign In   
  • Create Account


Member Since 15 Jun 2006
Offline Last Active Today, 05:03 AM

#4875046 Problem with skills

Posted by on 21 October 2011 - 08:05 AM

Bricks aren't all the same.

Some bricks are tough bricks which you can use to make kilns and furnaces. People pay extra for high quality bricks like that.

Lower quality bricks you buy in a stack but some of them will be crumbly. The better the brickmaker, the less chance of getting crumbly bricks.

#4874990 List of medieval offices

Posted by on 21 October 2011 - 03:49 AM

Might I suggest reading some history books?

"tax collector", as an example, was not really a medieval office.

Firstly very few people had noticeable monetary incomes. So there was no universal income tax. Much of the taxation arrived as duties levied on various things -- England, for example, taxed wool exports. These were usually imposed on things that were easy to find -- wool export needs a port, it's fairly easy therefore to see it happening.

Collection of the monies was delegated down through various structures to people such as bailiffs (typically non-landholding tax collectors), sheriffs (landowners who also collected taxes, and also ran local courts) and coroners (in addition to their duties investigating deaths). There was also a scheme of purchasing the rights to collect taxes. For a pre-determined price one would buy from one's Lord the right to tax others; any excess monies collected over the purchase price were your reward. Similarly some grants of land included the right/obligation to collect tax from subholders.

Very rich landowners were expected to pay an amount of money determined by the worth of their holdings. So a landholder with land worth 5000 pounds a year might be required to pay a tenth of that. Terms were somewhat flexible, and the payment might be in money or goods or personal military service or by supplying soldiers or by various other means. These taxes were granted by parliament on a case by case basis -- some years a fifteenth would suffice. In wartime a tenth. One year the King proposed an eighth and nearly provoked a revolution..

In other areas, the church might be responsible for gathering taxation at a local level (the ecclesiastical tenth) and funnelling the money to deliver both to the church structures themselves and also to the King's wardrobe.

So, "tax collector" isn't a medieval job. "steward" (working for a lord running his estates and also collecting taxes), "sheriff" or "coroner" would all be jobs which may include collecting taxes. "bailiff" isn't an office, it's a sort of collective title -- "mayors" are also sometimes included in the term but at various through medieval England it also referred to those who administered a hundred.

These sorts of things are complicated and if you want to be realistic, you shouldn't be just making them up based on a sort of SCA view of what was actually quite a long period of history.

#4872155 N64 Quality Water...

Posted by on 13 October 2011 - 04:08 AM

The surface looks like it's just a triangle mesh, rendered after the scene with a surface texture and the waves are done by shifting the verticies up and down, probably in the shader. It's probably just a simple set of sine waves of different frequencies added together. It's fast and also easily reproducible for when you want to do (say) collision detection.

The interactions with the objects can be done in two ways.

Firstly, for decorative objects (say things floating on the surface of the water) they can be drawn with a shader which just computes the same sort of offset as the waves based on their position and adds that to all coordinates.

For player objects you'd probably do the position calculation on the CPU and send them prepositioned. This allows them to do things like sink into the water upon landing.

Scatter water splash particle effects around at all the interaction points based on what interaction is happening and that'll help obscure some of the polygon edge artefacts (although many are still visible in that video).

The only complicated part is going to be doing the bouncey "floating" behaviour for your player objects but it'll end up being a fairly small lump of code run a few times a frame (so efficiency won't be too much of a stress) with a few constant factors which will need tuning by hand until you get a behaviour you're happy with -- it's that that tuning process which will give your game its character and feel.

#4869315 C++ Interview Questions

Posted by on 05 October 2011 - 03:20 AM

" the one you know the answer to but the interviewer has wrong"

Frankly, it's amazing how common that is. One of the problems with these things is that all too often they degenerate into an opportunity for interviewers to make themselves feel better. And quite often they're over-reaching their own technical skills.

Fizzbuzz or reverse a string is entirely sufficient to lose the maybe 60% of candidates who actually can't program AT ALL[1]. Anything beyond that is frankly labouring the point; esoteric questions about the C++ spec are boring for everyone concerned and have no relation to work actually done. (It was amazing the amount of interviews I went to as an IT contractor which were all about weird tricky edge cases of C++ exception throwing, but when I actually started work there, the codebase doesn't use exceptions because the developers aren't confident enough at using them. And usually therefore they're banned...)

[1] What I find slightly bonkers is that a substantial number of these candidates actually think they are good developers and are surprised to find themselves struggling. It seems to stem from being in large matrix-managed teams where one can spend many many years being only borderline competent at developing without anyone noticing. The actual output of the team is caused by the work units being regularly and randomly swapped between members until (eventually) they're done by the one or two competent developers. In many industries this is normal working practice[2], and staff can truly believe they're contributing because the work units passed through their hands. Likewise I meet an amazing number of highly experienced OO devs who, on closer inspection, have actually spent many years going to meetings where some OO design got done... not *necessarily* by them.

[2] And the appallingly low productivity is (in a storming bit of double-think) considered normal because... well... software developers just actually aren't very good are they? Well, on average NO, they're not...

#4868370 Fundamentals of Game Programming?

Posted by on 02 October 2011 - 02:29 PM

"Should I be creating a simple, procedural program?"


"or should I be using state/process managers and complex class structures"


#4868314 Choosing a college in London as a Programmer

Posted by on 02 October 2011 - 11:11 AM

They're just called A-levels (A for advanced). Yes, they come with grades of A-F.

There used to be O-levels (O for ordinary), but they were replaced by GCSEs in 1988 {IIRC}.

There are also AS-levels (I didn't know why, but google says "advanced subsidiary"), which you used to do as separate subjects but which are now just the first half of an A-level.

There are also S-levels (S for specialist, I think) which are the next one up from an A-level. If you go to an academic college, it's quite often an option to take an S in some of your A subjects {I did an S in physics. Badly.}. S-levels are graded in numbers; there may only be something like 1,2 and U grades for them.

#4868071 Terrain multitexturing problem

Posted by on 01 October 2011 - 02:36 PM

"Is it could be done by multipass? Use depth function to set equal for second pass?"

Yes, this is typically how it would be done.

Make sure you write solidly for the first pass (to populate the depth buffer), turn off depth writing for the subsequent passes (for speed), set equal as the test and then use chained texture blend units to feed the R G or B component from one stage as the alpha into the second.

The key phrase to look up here is "texture combiners".

Basically if you imagine the fixed functionality has a bunch of little units in it which can have the inputs fed from selections of different things -- constant colours, a texture lookup, the glColor or (crucially here) the output from one of the earlier stages.

Setting them up is faffy and fiddly and involves a big stack of glTexEnvi(GL_TEXTURE_ENV,...) calls; it's a good idea to plan out carefully what needs setting up before starting to write the code.

You'll need to do some jiggery pokery with the texture coordinate scales; because one of your textures is big (landscape sized) and one of them is the grass/sand/rock tile. I *think* you do this by chosing the active texture unit and then manipulating the texture matrix, and it'll apply to just that unit. So you can put a scaling on one of the lookups.

You could I guess, possibly do this in one go. Maybe. You'd have to look really carefully at the texture combiner modes available.

Is there any reason why you can't just do this in a modern vertex shader? It seems a lot of work to go to to do this ye olde fashionedey wayey.

#4868068 Choosing a college in London as a Programmer

Posted by on 01 October 2011 - 02:18 PM

If you want to go to university to do computer science or a related course, you'll need to be doing A levels of suitable types. Maths is a MUST. The double maths (maths and "further maths") is good. More science subjects are good. I personally did maths, computing, physics and electronics. Those sorts of subjects are good for compsci entry.

Don't bother doing general studies, it's just wasting time. Steer clear of what are regarded as "soft" subjects. "Media studies" for example being one. Likewise English Lit is useful if you're about to embark on a degree in English Lit, but CS depts will bin your application.

Good news time; compsci courses aren't very oversubscribed!! In other words; good A level grades and you're sorted. No need to be captain of the rugby team and play the lute and also walk on water to differentiate yourself like if you were applying for a "afternoon lectures only" subject like (say) English Lit.

Here is an example of ICL's entry policy; http://www3.imperial.ac.uk/computing/teaching/undergraduate/computing/admissions/advice/

Notice they do not require A-level computing, however TBH, it's probably a useful building block.

Similarly, here's Cambridge's equivalent -- http://www.cam.ac.uk/admissions/undergraduate/courses/compsci/requirements.html

Lots of science, lots of maths. Sorry.

Right, now you know that you need to be doing lots of maths, lots of science, you can go look for a suitable college to go to. Generally this will be a "sixth form" college, not a "further education" college. Colleges in the UK tend to be split into two types; sixth forms are more academic the others are "vocational"; they do courses in (for example), hairdressing, beauty therapy, office administration and so on. If the website does a lot of talking about vocational studies, mentions things like RSAs or diplomas or NVQs, they've maybe not got the focus you'll need.

Your school should really have routes into suitable colleges -- So if you pick a set of four or five A-levels that you'd be interested in studying that fit those sorts of entry requirements, they'll be able to point you in the right direction. I know you're in London, but you can't be the FIRST person at the school to aspire to university :-)

You do not really need a masters degree to do well in the IT industry. I know people who have done the BSc/MSc/PhD routes and while they generally have a useful toolbox of exotic maths and reading papers about FTL neutrinos doesn't make them frown as much as it does me, they aren't intrinsically better software engineers. If you're going to do a masters, do an MBA later on in your career -- being both technical AND business savvy is pretty valuable. But you shouldn't be doing that until you've got some time served at the coalface. Also, if you're sneaky about it, you can locate a company to work which will pick up the bill for doing the MBA (which is NOT CHEAP by the way!)

It's not that an MSc/PhD isn't something to do, but do bear in mind that a) slots for people doing them are restricted, b) you'll be a student for longer. Compsci masters and doctorates are not a key to instant success. On the other hand, it's not unknown for master/doctoral projects and groups to suddenly become startup companies and also I've found that people who have done them seem to have larger social networks within the IT industry. I'm unusual, for example, for being a mere grad still being in fairly close contact with a lot of my graduating year. Whereas masters and doctorates people seem to be more connected. That DOES help with employability, but if you know about this upfront, you can do it without spending five years longer eating pot noodle.

#4863252 Jump thunk table?

Posted by on 19 September 2011 - 01:36 AM

It's just a table of jumps to code which actually does the work. The point being that code outside the module can just call to well-known entry points. Those entry points are jumps to the real routines. The real routines can move around in different versions of the library and the user code doesn't need to be relinked.

#4862701 Windows OpenGL and choosing from multiple video cards

Posted by on 17 September 2011 - 01:19 AM

Aren't you supposed to do this by calling EnumDisplayDevices to get the list of video cards and then using CreateDC to create HDCs on those devices? Then you can use wglChoosePixelFormat (which takes the HDC) to get a render context of the right type on the right device?

#4861419 what is a practical use for the determinant of a matrix?

Posted by on 14 September 2011 - 01:40 AM

If you're working in 3D and using 4x4 matricies as transforms, the determinant has an immediately useful value.

If you put a unit cube through the transform, then the determinant will tell you what the volume of the output cube will be; in other words it tells you the volume scaling that the matrix will do.

Hence, well behaved 3D transforms will all have positive non-zero dets; and all rotation/translations which you expect to do no scaling will have a det of 1.

This also helps explain why zero det matricies can't be inverted. In order for it to have det zero, it must shrink one of your unit cube dimensions to zero. Hence there can't be a matrix which goes the other way, because there's no way to reinflate that deleted dimension back to one. Hence there's no inverse for the matrix.

Obviously, since you HAVE to squash one of the dimensions away to go from the 3D world to the 2D render plane, this means all projection matricies must have det = 0. And hence, this is why there is no general case system for taking a pixel in the window and finding it's location in 3D space, because that would amount to being able to invert your projection matrix.

#4861271 How long until c++ disapear from game development

Posted by on 13 September 2011 - 03:43 PM

" I remember reading an article in Dr Dobbs years ago about how REXX was going to make all programmers obsolete"

I remember reading adverts in the 1990s for the languages which would replace C and C++ with languages so easy that managers would be able to write the code themselves... I'll bet no-one's ever heard of any of them these days.

Easily 20 years this conversation's been going.

It's actually getting very very hard to hire good C/C++ people. And that's a problem because Google runs on hardcore C++ stuff; KVM and Xen need good C hackers, performance libraries for Android need C and C++ coders... Just this week Google is talking about tech to run C++ code natively inside sandboxes because they know the world isn't replacing that stuff any time soon. Good. Means my pay will go up for my rarity value...

We've all been waiting 50 years for Cobol to die and it still won't.

#4857146 How to Log and stay Modular

Posted by on 03 September 2011 - 08:02 AM

" but globals are bad right?"

No, they're not. They're bad if you're an academic computer scientist. Academic computer scientists never actually have to ship code. Globals work, use what works, ship code.

"really messes up my goal of keeping things modular."

Don't have a goal of being modular. Have a goal of "shipping code". What value to you is "being modular"? None. It's an **ideal**. It's not a goal. Your goal is to ship code. That means you get to sacrifice ideals sometimes. This could be one of those times.

You're over-thinking this problem. Everyone always does. Everyone thinks there's a problem with "logging" because it's always either too verbose or not verbose enough and it's never quite right and everyone thinks the way to fix it is to somehow make the logging production more complication.

The problem isn't with the logging. It's with the tool on the other end. Make your program be either "verbose" or "succinct" based on a flag. That's all you need on that front.

Then just output strings but have smarter tools looking at the output.

The UNIX world manages to handle tons and tons of logging using "syslog" which is hardly sophisticated. "syslogd", the program on the other end, that has versions which'll do everything up to handling global networks with millions of servers...

Don't try and solve your logging analysis problems during your log generation.

#4855941 Sprite class and memory effeciency

Posted by on 31 August 2011 - 10:07 AM

Oooooh. Interesting. Maybe there's a reputation threshold?

#4850257 What is the fastes way to load textures in opengl ?

Posted by on 17 August 2011 - 05:39 AM

Instead of using an actual image format (such as TGA) which supports BGRA format, why not ship your images as plain image files already in that format. You don't need all the headers, you just need four bytes per pixel.

Lay them all out in a big block of ram, save that to disk, gzip it. When you come time to load it, you're only loading one file -- you hoof it into one giant block of ram (only 1 allocation, only 1 directory walk). Ungzipping a file is pretty easy on loading it. In addition your compression should be even better; larger files generally compress better than a set of smaller files because the compression can find more similarities to reduce.

Instead of generating the mipmaps on load every time, generate them on first run and save them out to disk. Again, do this one big block if possible. On load, pull it in, rattle down it transmitting the mipmap levels individually.

If you're on an OS which supports mapping the files, you don't need to load them or do an actual memory allocation. Map the file into your address space, provide suitable "linear access" hints to your buffer caching system so it will do read-aheads, start accessing the memory and away you go. The OS will try and load pages ahead of your accesses in the background; you don't have to wait for the "read()" call to complete. The effect of this is that you can already be generating and uploading mipmaps for texture 1 while the disk IO channels are still loading texture 20.

Instead of asking the GLU library to generate your mipmaps, you could build them yourself by using rendering of the fullsize image to pixel buffer objects and copies internal to the card to make them. That way the mipmap data doesn't have to transit the host-GPU bus.