Member

1971

834 Good

• Rank
Contributor
1. ## How many games are possible in Tictactoe?

sounds like a challenging problem.. I think "game" is probably defined as "a sequence of moves that terminates in one player winning or a draw" You'd have to start with 9! and then subtract all the games that are impossible. Specifically, any game where there are moves after a player has reached 3 in a row is impossible. So.. in the whole game there are 9 moves. We don't have to worry about a winner until move number 5 (when X might win). How many different ways can we have a winner in 5 moves? There are 8 different ways to win, and order is important, there are 6 different ways to order 3 moves. Also, O is also playing- there are 6 remaining spots on the board (after you subtract the 3 that X uses to win), so there's 6*5 ways that O could play before losing. So that's 8*6*6*5, or 1440 games that end at move #5. With that number you can figure out how much the 9! total has overcounted. After a victory in 5 moves, there's 4! ways to keep playing. So the 9! number has overcounted by 1440*4! = 34560. So the final answer would be 9! minus 34560. But let's not forget the 1440 valid games that ended after 5 moves, so add 1440 back in. I think you would have to continue and find numbers of games that are impossible because of victories after move #6, #7 and #8. It gets complicated quickly. What class is this for?
2. ## Is OnLive the future of gaming?

Quote:Original post by onfu Pretty good example for this case would be the backlash leveled against Killzone 2 for having just the TINIEST amount of controller input lag. For many COD and Halo gamers the feel was just unacceptable and an outright deal-breaker. Excellent article on the subject: http://www.eurogamer.net/articles/digitalfoundry-lag-factor-article The thing is, the local controller lag in Killzone 2 wasn't tiny, it was 150ms. And it still sold a lot of copies. GTA4 measured even worse, at 200ms, and that one also sold a ton of copies. Those numbers aren't too hard for cloud gaming to compete with. Honestly they are probably already doing better than that on the faster games. I think there's a certain small group of gamers who will start to complain about input lag over 100ms or 150ms, but most people don't mind it that much.
3. ## Relocating family to SF Bay Area

It's hard to go wrong if you're in the general area, it's all pretty affluent and the schools are all good (from what I hear). Some specific areas I know about: Mountain View itself is very nice, it's one of my favorite towns down there. Palo Alto is nice but it tends to be sharply more expensive than neighboring areas. East Palo Alto should be avoided as it's a crime hotspot. But in general, all the suburbs are nice, and they all kind of blend together. If you find that those areas are a little too pricey, things get cheaper in the east bay, like possibly Fremont. But your commute will be longer.
4. ## Two questions: moving to 64 bit., and moving to Linux

It sounds like you know what you're doing, so no, there aren't really any major disadvantages. If you write your code in a standards-compliant way then you shouldn't run into any problems. I have a 20k LOC project that I support on OSX/Linux/Windows and I've never had problems related specifically to the 32-bit / 64-bit difference. The worst thing that happens is that some of your data structures will get bigger, since pointers have 8 bytes instead of 4. Moving to Linux also sounds like a good idea to me; I vastly prefer it as a dev platform. Being able to use apt-get to install your dependencies in seconds is great, and Valgrind is a fantastic tool. The only thing I'd recommend against is continuing to support Windows after you move. Supporting multiple platforms is a pain, you should only do it if it's something that's really valuable for you. Writing cross-platform makefiles is a pain, managing your external library files for each platform is a pain, and you have to double the amount of testing that you do.
5. ## error C2059: syntax error : '='

Ignore the error codes, just look at the line number.
6. ## I'm sorry for 9/11...

I like this thread, I get where OP is coming from. History and psychology research has shown us many times that people can be coaxed into doing bad things, in the right environment. We all have the ability to be evil. But no one will admit it, instead we tell ourselves "Those people aren't like us, we're better than that". So I don't know what I would have done if I had the same life as one of the terrorists. But there's a chance that I would have done the same thing they did. So I guess I'm sorry too!
7. ## Editing a release binary...

Unless you're looking at 64 bit code, those arguments are going to be 4 pairs of hex digits, not 8. I think your value for nCmdShow is the second half of the 0x0012FD14 line, so it's equal to 01 00 00 00. Intel is little-endian so that's the hex you'd expect to see for 1 or SW_SHOWNORMAL.
8. ## Postmortem debugger attach

There's a control panel for this too, dunno where it is on 7 but on Vista it's at Control Panel -> Problem Reports & Solutions -> Change Settings -> Advanced Settings It's possible for the network administrator to change these settings, maybe that's why it suddenly stopped working? Though usually they will just disable the "Send report to Microsoft" option so that no one accidentally sends private info to Microsoft. It would be weird for an admin to disable the crash dialog completely.
9. ## Trying to run an old Mac game on my PC. Help?

.dir sounds like it might be a Macromedia Director file (but it might not be). I don't think the early versions of Director were cross platform, but the new versions are. So maybe if you open it up in Director, there's a small chance that it will be able to read the old file format and let you run it. A very small chance.
10. ## [web] HTML5 Canvas Vs Flash game security

Flash can be decompiled and javascript can be run through an obfuscator; they are probably equally readable after that. HTML5 might be replacing Flash in some areas (like video) but I think Flash will be a better choice for games for many years to come. I'd suggest Flash unless you would rather work on a platform that has fewer features, fewer tutorials, fewer libraries, fewer tools, and is supported by less browsers.
11. ## IDE war ?

No, on Windows nothing comes close to Visual Studio.
12. ## What's With all the Google Flops?

You bought stock 2 years ago? I think you missed the lesson that you're supposed to buy low and sell high- you bought the stock when it was already really high.
13. ## Cross-Compiler Compatiblity of Plugins

Quote:My question is this: If I create pure C "objects", but these objects contain C++ STL containers such as "map", "vector", etc. will that still create a vtable that can break when the plugin is compiled on a different compiler? No, just having more fields won't touch the vtable for that object. So you could safely access the other fields in that object, but the foreign binary probably won't be able to safely access the contents of the map/vector/etc. I think the best strategy (which the Building Your Own Plugin Framework article mentions at the end), is to pass around opaque pointers to C++ objects, and provide pure C accessors for those objects. You can even go further and write a shim C++ class that wraps around the C accessors, if you want to. Edit: Yeah, just like Kwizatz said. Then if you wanted to put a C++ shim on top of that, it would look like this: class MyShimClass { public: MyShimClass() { _data = CreateSomeObject(); } ~MyShimClass() { DeleteSomeObject(_data); } void callSomeFunction(int i) { CallSomeFunction(_data, i); } private: void* _data; };
14. ## How much did Second Life cost to develop?

I'll guess it took 20 skilled engineers (at Bay Area prices) a period of 2 years, so that's roughly 4.5 million.
15. ## DLL source code

Some things you can do with a DLL: - See a list of all the publically exported functions (difficulty: easy) - See all the string literals (difficulty: easy) - Figure out the types of the exported functions by examining how they use the stack (difficulty: medium) - Figure out what it does by examining the machine code (difficulty: hard) If I was going to reverse engineer a DLL, the first thing I would do is load it in Python with ctypes, and just try calling each exported function with plausible arguments.