The single inheritance model and a strict class hierarchy discourages writing reusable code. For example, if I have an app that runs on iPad and iPhone and they share a common screen (from the user's perspective although the layout/design might be significantly different), it's a real task to write a common parent class holds the common code.
I find that protocols work better that multiple inheritance any day.
Similarly, there's no way to have a truly dynamic object with a clean syntax, e.g. in Python/ruby/js/and a host of others you could have a quick little object you use to pass state around, kind of like a struct that has its members added on the fly, e.g.: x = new Object() ; x.name = 'dave' ; x.age = 3. There is literally no way to do that in ObjC - the best you can do is create mutable dictionary and use its verbose syntax.
Well, it isn't impossible, but it does require some deeper knowledge. Objective-C has a concept called KVC, where you can refer to properties by strings, very useful stuff. There's also a mutable dictionary called the associationObject for each object. You could write the KVC reader to put the values into an assoiciated object, which incidentally is pretty much exactly what Python does internally.
Now, I'd question whether you really want to do this, but it's certainly possible. One thing I like about Obj-C is that things like categories, KVC, KVO, forwardInvocation, exchangeSelector, et al. are there if you really want to use them.
Reducing to a size 3 cube is only one way of solving the cube. It has the drawback of a parity error where your reduced 3 cube can't be solved by using standard methods. For instance, on a size 4 cube you can get to a position where two adjacent edge pieces are swapped and inverted, as if the size 3 cube had one edge flipped, which is impossible. You can also have two corners swapped. There are some known moves to fix these errors, and most (all?) speed cubers use reduce-to-3 so it isn't a major problem. But there are at least two new algorithm required to solve bigger cubes than 3 using this method.
Now, if you don't use reduce-to-3, then you can solve any size cube with just 3 algorithms: one to cycle 3 edges with flipping, one to cycle 3 corners and one to swap center pieces, which are actually very easy because there are always 4 of them that look identical. The really trippy part is that this method was expanded to work on 4 and 5 dimensional cubes, too.
that's a for loop with ints. If you thinking of writing a loop of the form for(float x=start; xend; x+=gap) then you really shouldn't. That's how rounding errors accumulate. You can make your own for loop with a generator
def floatloop(start, end, gap):
val = start
iter = 0
while(val end):
yield val
iter+=1
val = start + iter * gap
then the code is for x in floatloop(start, end, gap)
so, floating loop in 7 lines of code with protection against accumulated rounding errors. Not bad.
Two circles on a piece of paper cannot physically merge with each other if you assume their boundaries are solid and cannot pass through each other. Neither can 2 rings lain on a table, or two cylinders or two spheres be overlapped without breaking them somewhere.
Think of Flatland, always useful for 4D stuff. Suppose that you took a doughnut and shoved it into Flatland halfway so that it arches outside. To a Flatlander, who can only see the one slice, it appears to be two seperate circles. Only by looking in the third dimension could he see how the things were attached. Similarly, two seperate spheres in 3D could be pieces of a 4D torus.
Another example is consider a Flatland safe, a perfect square with no entry, no way to get inside. Unless you reach down from the third dimension, where it is easy to reach into the square. Similiarly, a 4D person could remove something from a 3D safe without opening it.
Finally, as another higher dimension trick, you can make something a mirror image. Take a Flatlander, pick him up, flip him over and back down. He will wind up a mirror of himself. A 4D guy could do the same to you.
Rudy Rucker has a couple of really good books explaining this stuff, I would recommend them.
Time is "a" fourth dimension, in that you can attach a scalar to it and say things like position (10,10,10) at t=4. What this game does is define the game world in 4 spatial dimensions, so you would need four scalars to define a point.
The game idea is easier to explain by removing a dimension. Suppose you generated a cube maze in 3D, where a given cell could be exited up,down,left,right,forward,back. At any given point in time, a 2D slice of that cube is presented on the screen. You can pivot the slice angle so it is parallel with the three axes at will, thus allowing you to see different parts of the maze.
Imagine that the maze has a (squared off) U shape which aligns on this page. If you align the screen view with the page, you will see the U, if you align it be vertical out of the page (so it reaches from top to bottom, you will only cut, say, the left side of the U and see an "I". If you walk along the I to the bottom and then switch to horizontal and out of the page, you'll see it switch from one "I" to a different one, representing the bottom of the U.
Moving up a dimension only means that the "slice" becomes a full 3D space and there are 4 orientations of the slice. The cube maze in my example becomes a hypercube, which is hard to envision, but is mathematically no harder than a 3D, or even a 2D one.
I had a friend in college who wrote a 6D maze generation program and it used a similar idea. He only presented 2D slices on printouts, though, as real-time 3D graphics was pretty scarce in 1990.
I can't remember any teleportation or time travel story that mentions this obvious thing. The tabletop RPG Traveller took all of this into account. It was possible (although very unlikely) to get abilities like teleportation, but the rules were so hard-assed about the actual physics to make it practically useless. For instance, it calculated the amount of potential energy that you get from teleporting up or down in Earth gravity. This was assumed to be applied to you as a near instant change in body temperature which meant in the end that any attempt to actually go much faster than the stairs would cook your brain.
Not to mention getting slammed by a wall of you tried to teleport too far across a planet. The weirdest mix of science and pseudo-science since the golden age of comics.
An early version of this game was playable at GDC. It uses real tablature notation instead of a pseudo fretboard and didn't support whammy or chords yet. You simple plug a real guitar into a USB connected controller and start playing.
It is also very hard compared to Guitar Hero, as you would expect.
You have to give the item permission to animate and/or attach to your avatar. And even once that is done, you can remove the object at any time and regain control. There are some ways you could use this to grief, such as leaving objects in an odd state, but it won't last past a reboot.
And as for replication, check out the YouTube video on a "gray goo" attack using self replicating rings. Despite it's many flaws, I find Second Life interesting simply for the way that it has to deal with such things. The banking runs, taxation questions, DRM, and stuff like that make it a sandbox for learning about issues in building virtual spaces.
I worked for Epic ten years ago, when I joined they had about 40 employees, when I left they were pushing 300. Judy wasn't seen for long periods at a time because she was working insane hours, the woman never stopped working. The art was a little goofy, but at least she tried something more than cubicles. I NEVER worked a 60 hour work week when I was there, even in a big crunch. I was a key programmer on the Visual BASIC front end that apparently grew into this HealthConnect thing. I remember questions as to how scalable the system would be, I guess those questions have been answered.
Yes, MUMPS has some very weird properties, but it's really not that bad for what it does. You're comparing it to languages written 20 years later, and a lot of the really odd things (1 letter commands, 6 character filenames, for example) are long since history. Don't get me wrong, I'm glad to be rid of it, but it's not as bad as people make it out to be. It's made for a specific purpose and does it well.
We had few or no H1B people when I was there, I recall one guy from Bulgaria and that's it. I was treated extremely well, and for a job right out of college, I cannot complain. If all of this you say is true, then that's really sad.
If you game fits in the general category of 2 player, no hidden information games, then you might want to try having a prototype made using Zillions of Games. This program allows you to define the board and movement rules for just about any combiniation you can think of. The basic game plays most of the classics and you can download thousands of versions from their website or Chess Variants
If your game has hidden information which is only know to one player, then Zillions can't handle that, but if your pure strategy, you should be fine. Programming a Zillions requires learning a lisp-like language, it's pretty easy but has its quirks. One nice thing about Zillions is you can create your own new game and have the computer kick your ass at it, that way you can expose flaws and exploits you might have missed. Plus, it would be easy to distibute to your playtesters.
Plus, consoles could track the type of games you play, how often you play, time of day you play...
The Xbox360 very clearly does this already. If you look at a friend on your list, it will tell you what disc he is playing and where he is in the game.
Yeah, It'd be a shame to be loser like the Star Wars I-III movies. Only 2.4 billion dollars in box office receipts. Sad.
I seem to recall that Black & White sold pretty good for while as well, but I can't find any good references. Does snyone know of a webpage for checking game sales?
Hardly, mine was made by a German professor named Bandelow who was a big name in early cube studies.
Actually, I find the 5x5x5 easier than the 4x4x4. The fact that you always have the centers there to orient you makes a huge difference. Also, there's a kind of parity error that requires you to scramble already placed pieces that only occurs in the 4x4x4 (and any other even size). It's annoying, because you can only know you have it when you've already placed most of the cube which you then have to re-solve.
The system called the "Ultimate Solution" gave a really good description of how to solve any size cube, but has unfortunately recently disappeared from the Internet aside from its ghost in the Wayback Machine.
Are there any plans to put up a demo server/version?
You can get a free limited account in some of the current magazines. It won't let you communicate with the other players and has a low level limit, but you can get some idea what the game is like.
You actually want the government to intervene? Haven't you been paying any attention? It would probably go something like this:
We've been attacked by EvilHackerGroup, we must defend ourselves! EvilHackerGroup has ties to, say, the FSF which is an organization with Un-American goals. The government then takes down the FSF, once they learn of SourceForge and how anyone can get a hold of the software equivilent of WMDs, they'll take that down too. They'll then say there only trying to clean out the bad elements and order will be restored any day now. In the meantime, the assets taken will be sold to companies that supported the attack and coincidentally have major financial ties to the current administration.
If you think this is far-fetched Google for Steve Jackson Games Cyperpunk.
The junk could be on either document, and both parties have motives to forge a document.
Since this is an attack in which you create two documents, the party which created the document must be the would-be forger. I think your evil employer would have a hard time convincing the court that I wrote the document they had me sign.
The set of chess games is not infinite. If every piece was distinct, you would have (64 choose 32) possible positions. The pieces aren't distinct (8 pawns) and many positions are (pawns behind their first line, for example). Pawn promotion complicates things a bit, but it is a still finite number. Now, chess has a rule preventing endless repeats, the absolute worst case is you go through every board possibility N times and stop. Since you have a finite number of moves and a finite number of positions, the resuting game space is finite. If every game position was given a number, which wouldn't be too hard, you could just concatenate them togther (padded with zeros) and voila! mapping chess games to integers. Not that it would be of any use, of course.
What's more, it *has* been proven that once we find a solution to an NP-complete problem we'll instantly have solutions for *every* NP-complete problem.
That's true by definition, in fact it means that we'll have a solution for all NP, since P will be equal to NP. That's not the whole story, though. There are further classes such as PSPACE and EXPTIME and a whole lot more
Where's the open source Delphi ? or even Visual Basic ?
It's called Qt and its found at TrollTech. I've used Delphi, VB (from versions 1 to 5) and Qt, I like Qt the best of all of them. Create your GUI graphically, define what signals and slots to hook up, write the functions and go. And you aren't stuck with BASIC or Pascal, two languages that should die.
Re:So they say they've found the missing matter...
on
Dark Matter Discovered
·
· Score: 1
So they say they've found the missing matter, but nowhere in the article do they actually tell us where all the missing socks went.
If you want to know what happens to the socks, read this.
The single inheritance model and a strict class hierarchy discourages writing reusable code. For example, if I have an app that runs on iPad and iPhone and they share a common screen (from the user's perspective although the layout/design might be significantly different), it's a real task to write a common parent class holds the common code.
I find that protocols work better that multiple inheritance any day.
Similarly, there's no way to have a truly dynamic object with a clean syntax, e.g. in Python/ruby/js/and a host of others you could have a quick little object you use to pass state around, kind of like a struct that has its members added on the fly, e.g.: x = new Object() ; x.name = 'dave' ; x.age = 3. There is literally no way to do that in ObjC - the best you can do is create mutable dictionary and use its verbose syntax.
Well, it isn't impossible, but it does require some deeper knowledge. Objective-C has a concept called KVC, where you can refer to properties by strings, very useful stuff. There's also a mutable dictionary called the associationObject for each object. You could write the KVC reader to put the values into an assoiciated object, which incidentally is pretty much exactly what Python does internally.
Now, I'd question whether you really want to do this, but it's certainly possible. One thing I like about Obj-C is that things like categories, KVC, KVO, forwardInvocation, exchangeSelector, et al. are there if you really want to use them.
Use with caution, of course.
Reducing to a size 3 cube is only one way of solving the cube. It has the drawback of a parity error where your reduced 3 cube can't be solved by using standard methods. For instance, on a size 4 cube you can get to a position where two adjacent edge pieces are swapped and inverted, as if the size 3 cube had one edge flipped, which is impossible. You can also have two corners swapped. There are some known moves to fix these errors, and most (all?) speed cubers use reduce-to-3 so it isn't a major problem. But there are at least two new algorithm required to solve bigger cubes than 3 using this method.
Now, if you don't use reduce-to-3, then you can solve any size cube with just 3 algorithms: one to cycle 3 edges with flipping, one to cycle 3 corners and one to swap center pieces, which are actually very easy because there are always 4 of them that look identical. The really trippy part is that this method was expanded to work on 4 and 5 dimensional cubes, too.
what exactly is wrong with
for x in xrange(start, end, gap):
that's a for loop with ints. If you thinking of writing a loop of the form for(float x=start; xend; x+=gap) then you really shouldn't. That's how rounding errors accumulate. You can make your own for loop with a generator
def floatloop(start, end, gap):
val = start
iter = 0
while(val end):
yield val
iter+=1
val = start + iter * gap
then the code is
for x in floatloop(start, end, gap)
so, floating loop in 7 lines of code with protection against accumulated rounding errors. Not bad.
Two circles on a piece of paper cannot physically merge with each other if you assume their boundaries are solid and cannot pass through each other. Neither can 2 rings lain on a table, or two cylinders or two spheres be overlapped without breaking them somewhere.
Think of Flatland, always useful for 4D stuff. Suppose that you took a doughnut and shoved it into Flatland halfway so that it arches outside. To a Flatlander, who can only see the one slice, it appears to be two seperate circles. Only by looking in the third dimension could he see how the things were attached. Similarly, two seperate spheres in 3D could be pieces of a 4D torus.
Another example is consider a Flatland safe, a perfect square with no entry, no way to get inside. Unless you reach down from the third dimension, where it is easy to reach into the square. Similiarly, a 4D person could remove something from a 3D safe without opening it.
Finally, as another higher dimension trick, you can make something a mirror image. Take a Flatlander, pick him up, flip him over and back down. He will wind up a mirror of himself. A 4D guy could do the same to you.
Rudy Rucker has a couple of really good books explaining this stuff, I would recommend them.
Time is "a" fourth dimension, in that you can attach a scalar to it and say things like position (10,10,10) at t=4. What this game does is define the game world in 4 spatial dimensions, so you would need four scalars to define a point.
The game idea is easier to explain by removing a dimension. Suppose you generated a cube maze in 3D, where a given cell could be exited up,down,left,right,forward,back. At any given point in time, a 2D slice of that cube is presented on the screen. You can pivot the slice angle so it is parallel with the three axes at will, thus allowing you to see different parts of the maze.
Imagine that the maze has a (squared off) U shape which aligns on this page. If you align the screen view with the page, you will see the U, if you align it be vertical out of the page (so it reaches from top to bottom, you will only cut, say, the left side of the U and see an "I". If you walk along the I to the bottom and then switch to horizontal and out of the page, you'll see it switch from one "I" to a different one, representing the bottom of the U.
Moving up a dimension only means that the "slice" becomes a full 3D space and there are 4 orientations of the slice. The cube maze in my example becomes a hypercube, which is hard to envision, but is mathematically no harder than a 3D, or even a 2D one.
I had a friend in college who wrote a 6D maze generation program and it used a similar idea. He only presented 2D slices on printouts, though, as real-time 3D graphics was pretty scarce in 1990.
A TESS search, while not 100% conclusive, shows 41 differing uses of the word "Android"
A TESS search, do you know what that means? TESS is obviously based on Phil K. Dick's wife Tessa! Everybody is stealing from him these days...
(Who's this Hardy fellow, anyway?)
Not to mention getting slammed by a wall of you tried to teleport too far across a planet. The weirdest mix of science and pseudo-science since the golden age of comics.
You are thinking of Guitar Rising.
http://www.guitarrising.com/
An early version of this game was playable at GDC. It uses real tablature notation instead of a pseudo fretboard and didn't support whammy or chords yet. You simple plug a real guitar into a USB connected controller and start playing.
It is also very hard compared to Guitar Hero, as you would expect.
You have to give the item permission to animate and/or attach to your avatar. And even once that is done, you can remove the object at any time and regain control. There are some ways you could use this to grief, such as leaving objects in an odd state, but it won't last past a reboot.
And as for replication, check out the YouTube video on a "gray goo" attack using self replicating rings. Despite it's many flaws, I find Second Life interesting simply for the way that it has to deal with such things. The banking runs, taxation questions, DRM, and stuff like that make it a sandbox for learning about issues in building virtual spaces.
"This new suite of applications is a new way that we can make connecting, communicating and sharing anywhere a terrific experience on your Windows PC"
When reading this quote, I couldn't help but be reminded that the root of the word "terrific" is terrify. Which makes it pretty accurate.
I have some difficultly believing any of this.
I worked for Epic ten years ago, when I joined they had about 40 employees, when I left they were pushing 300. Judy wasn't seen for long periods at a time because she was working insane hours, the woman never stopped working. The art was a little goofy, but at least she tried something more than cubicles. I NEVER worked a 60 hour work week when I was there, even in a big crunch. I was a key programmer on the Visual BASIC front end that apparently grew into this HealthConnect thing. I remember questions as to how scalable the system would be, I guess those questions have been answered.
Yes, MUMPS has some very weird properties, but it's really not that bad for what it does. You're comparing it to languages written 20 years later, and a lot of the really odd things (1 letter commands, 6 character filenames, for example) are long since history. Don't get me wrong, I'm glad to be rid of it, but it's not as bad as people make it out to be. It's made for a specific purpose and does it well.
We had few or no H1B people when I was there, I recall one guy from Bulgaria and that's it. I was treated extremely well, and for a job right out of college, I cannot complain. If all of this you say is true, then that's really sad.
This whole thing makes me really sad.
If you game fits in the general category of 2 player, no hidden information games, then you might want to try having a prototype made using Zillions of Games. This program allows you to define the board and movement rules for just about any combiniation you can think of. The basic game plays most of the classics and you can download thousands of versions from their website or Chess Variants
If your game has hidden information which is only know to one player, then Zillions can't handle that, but if your pure strategy, you should be fine. Programming a Zillions requires learning a lisp-like language, it's pretty easy but has its quirks. One nice thing about Zillions is you can create your own new game and have the computer kick your ass at it, that way you can expose flaws and exploits you might have missed. Plus, it would be easy to distibute to your playtesters.
Plus, consoles could track the type of games you play, how often you play, time of day you play...
The Xbox360 very clearly does this already. If you look at a friend on your list, it will tell you what disc he is playing and where he is in the game.
Yeah, It'd be a shame to be loser like the Star Wars I-III movies. Only 2.4 billion dollars in box office receipts. Sad.
I seem to recall that Black & White sold pretty good for while as well, but I can't find any good references. Does snyone know of a webpage for checking game sales?
Quote> Kallisti!
what?
Hardly, mine was made by a German professor named Bandelow who was a big name in early cube studies. Actually, I find the 5x5x5 easier than the 4x4x4. The fact that you always have the centers there to orient you makes a huge difference. Also, there's a kind of parity error that requires you to scramble already placed pieces that only occurs in the 4x4x4 (and any other even size). It's annoying, because you can only know you have it when you've already placed most of the cube which you then have to re-solve. The system called the "Ultimate Solution" gave a really good description of how to solve any size cube, but has unfortunately recently disappeared from the Internet aside from its ghost in the Wayback Machine.
Are there any plans to put up a demo server/version?
You can get a free limited account in some of the current magazines. It won't let you communicate with the other players and has a low level limit, but you can get some idea what the game is like.
If you are willing to use mods, then AutoDecline should do the trick.
I don't suppose you have a link to the 19 problems Mr. Yoran was referencing? That would be quite helpful to know.
We've been attacked by EvilHackerGroup, we must defend ourselves! EvilHackerGroup has ties to, say, the FSF which is an organization with Un-American goals. The government then takes down the FSF, once they learn of SourceForge and how anyone can get a hold of the software equivilent of WMDs, they'll take that down too. They'll then say there only trying to clean out the bad elements and order will be restored any day now. In the meantime, the assets taken will be sold to companies that supported the attack and coincidentally have major financial ties to the current administration.
If you think this is far-fetched Google for Steve Jackson Games Cyperpunk.
Since this is an attack in which you create two documents, the party which created the document must be the would-be forger. I think your evil employer would have a hard time convincing the court that I wrote the document they had me sign.
The set of chess games is not infinite. If every piece was distinct, you would have (64 choose 32) possible positions. The pieces aren't distinct (8 pawns) and many positions are (pawns behind their first line, for example). Pawn promotion complicates things a bit, but it is a still finite number. Now, chess has a rule preventing endless repeats, the absolute worst case is you go through every board possibility N times and stop. Since you have a finite number of moves and a finite number of positions, the resuting game space is finite. If every game position was given a number, which wouldn't be too hard, you could just concatenate them togther (padded with zeros) and voila! mapping chess games to integers. Not that it would be of any use, of course.
That's true by definition, in fact it means that we'll have a solution for all NP, since P will be equal to NP. That's not the whole story, though. There are further classes such as PSPACE and EXPTIME and a whole lot more
It's called Qt and its found at TrollTech. I've used Delphi, VB (from versions 1 to 5) and Qt, I like Qt the best of all of them. Create your GUI graphically, define what signals and slots to hook up, write the functions and go. And you aren't stuck with BASIC or Pascal, two languages that should die.
If you want to know what happens to the socks, read this.