Advertisement Jump to content
  • Advertisement


  • Content Count

  • Joined

  • Last visited

Community Reputation

109 Neutral

About Luhz

  • Rank
  1. Luhz

    Goodbye 4th Ammendment

    There's nothing revolutionary about this decision, it's actually relatively normal. When someone's rights are violated, they still have civil remedies available; that doesn't necessarily mean any criminal charges or evidence should simply be discarded.
  2. Luhz

    Fallout 3 too similar to Oblivion?

    I definitely feel it is too similar to Oblivion. Since I got the game, the day after it released, I've only sat down to play it about three times. It's like playing Oblivion, except with the color palette reduce to brown and all the foliage removed. I do like some things about the game (explosives are great, they fixed up container lag, added more keyboard hotkeys for menus), and I can't really say that it's a bad game, but it's just not interesting enough to make me really play it. I don't really care about the "main storyline", I guess that's why Morrowind/Oblivion appealed to me, but I've felt that there isn't much to Fallout3 other than the main questline. Sure, there's lots of crap to wander around and explore, but it all feels very "same-ish".
  3. Luhz

    Realworld names on enemies

    You don't hate Fargoth because he's named Fargoth, you hate him for every aspect of his existence (including his name). Names do not create significant or memorable NPCs, but they do allow people to easily reference memorable NPCs. "Fargoth" is easier to reference than "The ugly and annoying wood elf that you first meet outside the Census office," so when you want to discuss the game with someone, it's easier (which is much more important in multiplayer games).
  4. I use C/C++ goto when I'll be allocating at intervals inside the function. Examples: void function() { int* a = malloc(A_SIZE); int* b; if(!somefunc(a)) goto abort_a; b = malloc(B_SIZE); somefunc2(a, b); free(b); abort_a: free(a); } I wouldn't use goto in a case like this: void function() { int* a = malloc(A_SIZE); int* b = malloc(B_SIZE); somefunc(a, b); free(b); free(a); } The emphasis here is on a couple things: de-allocating in the reverse order that allocation was done in; using goto ONLY to move down inside the current function; and only allocating when truly necessary.
  5. Other options of course are to provide a constant slow time scale, but allow the player to 'fast-forward'. Like in The Elder Scrolls (and whatever other games), where you rest for up to 24 hours and the time advances that far in the game. This has the advantage of allowing the player to decide when they want to advance. Perhaps the time advanced could be capped at the resources the player has available - if you only have enough food stored to last 4 months, you can only advance by 4 months.
  6. I think game difficulty should scale something like this: A player familiar with the genre will always be able to play the game one difficulty higher than an unfamiliar player, with the same level of success. An experience player could play at least two levels higher than an unfamiliar player with the same level of success, or one higher than a familiar player. Very Easy: A player unfamiliar with the genre may fail few (~2 or less) times during the complete game. Easy: A player unfamiliar with the genre may fail several (~3-5) times during the complete game. Normal: A player unfamiliar with the genre may fail multiple (~6-10) times during the complete game. Hard: A player unfamiliar with the genre will not be able to complete the game. A player familiar with the genre will fail multiple times during the complete game. Very Hard: A player familiar with the genre will not be able to complete the game. A player experienced with the genre will fail multiple times during the complete game. Essentially, anyone should be able to play on Easy and beat the game with little frustration or failure. It should be... easy. Normal difficulty will likely frustrate an unfamiliar player due to frequent failure. Etc...
  7. Luhz


    You will find that skill based (twitch, primarily) will always be less popular than non-skill based. Why? Because everyone wants to win, and the vast majority of players don't have the time or dedication to practice (play) for the extreme amount of time it takes to develop skill (FPS is a very good example). Compare the popularity of skill based games in general to non skill based games. This is one of many reasons why WoW has become so popular. The FPS genre demonstrates this concept very clearly. Tactical-strategy games require are easy to get into, and require less time to master than strategy-twitch games. Examples of tactical-strategy are games like Counter Strike (Source) and the Battlefield series. Examples of strategy-twitch are the Unreal Tournament and Quake series. Both CS and BF have notably larger playerbases than either UT or Quake, when considering all games and versions. blah blah blah. Personally, I'm in the camp that prefers skill based. I've been playing UT/Quake for several years, and I am still at best an average player (where as it took me a matter of months to become average at CS with no prior FPS experience). However, despite constantly facing defeat, it is very gratifying to know that when I do win it is entirely due to superior play. Both winning and losing is more displeasing in non-skill based games, because the outcomes in either situation are hardly based upon the players involved.
  8. Personally I believe that adults are simply more willing to give up after failure. People become attracted to what they're good at, and the longer they spend doing things they excel at the more accustomed they become to success. When then confronted by a new challenge, especially a difficult one which may take /anyone/ a long time to learn, they become more prone to accepting defeat early. My life seems to follow this pretty well in my experience. Thinking back, there isn't anything that really came that easily, it's just that repeated failure on the way to success didn't seem nearly as hindering as it does now. How long did it take to learn to program? Years certainly before I really felt like I understood the concepts, and I know I still have a lot more to learn. When I feel like giving up on something because I'm performing poorly, I usually recognize that I just haven't spent enough time on it and force myself to continue to practice until I'm comfortable with it. Despite this, I believe I learn new and more complex concepts more easily than when I was young due to all the additional experience I have to draw upon.
  9. Luhz

    create a solver, get $2,000,000

    Quote:Original post by Iftah heuristic and A* style search can do much better than DFS style, I think. But I wonder what sort of heuristic function one can use... I think you can have great optimization if you check the "crowded neighborhood" first. For example suppose you reach a point (_=empty): 1 2 3 _ _ _ 4 _ 5 _ _ _ 6 7 8 _ _ _ you should try all pieces in the "crowded" spot (between 2,4,5,7). If nothing fits there then there is no point filling the other empty 9 cells. This can be easily done if you sort the empty spaces based on the "crowd" value (0..4). I may write a solver for this, I have some more advanced optimization ideas which can cut the tree fast. That's an interesting idea. To try maximize it I would try create a fill pattern which maximized the number of pockets created. A pattern like this for example: X _ X _ X X X X _ X _ X X X X X All pieces would have to be placed adjacent to one already existing if you want to maintain an algorithm that isn't entirely random. I would do this by starting from the top left, and operating on two lines at a time. The bottom line would always be filled, while the top line would be staggered. After 3 pieces have been placed in each row, the pocket would be created, then filled. The algorithm would then continue the step.
  10. Luhz

    create a solver, get $2,000,000

    Nice to see the algorithm is holding up on larger board sizes. I haven't tried anything other than the 4x4 demo so I wasn't sure how it would last. How large a board can you get to before the time becomes unreasonable?
  11. Luhz

    create a solver, get $2,000,000

    Prolog works by basically performing a depth-first search over the possible solution space. When one branch leads to a dead end, it goes back to the last fork and tries a different branch. This is repeated until a solution is found (the correct branch), or if no branches are found the solution fails and it tells you 'No.'. IE. Whenever the given situation occurs, it will remove the last piece placed and look for an alternative, if there isn't it will remove the one before that etc. Whenever an alternative is found, it tries to solve the full puzzle from there. Also worth mentioning on that note, prolog will stop when it finds the FIRST solution, not when it brute forces all of them. The likelyness of having to check all solutions? Not very high. According to my program, there's 2560 solutions to the demo puzzle (this includes a massive amount of duplicates due to symmetry/board rotations of course). It takes 35 seconds to compute every possible solution, it takes ~0.01 seconds to generate the FIRST one (I've removed some redundancies which has improved it somewhat). [Edited by - Luhz on June 19, 2007 2:11:06 AM]
  12. Luhz

    create a solver, get $2,000,000

    My implementation solves the demo 4x4 puzzle in 0.3 seconds. I used Prolog. Edit: I'll elaborate on my algorithm. Each piece is a list which defines the 4 colors of the sides, and a 'ID' for the piece. The ID is to ensure each piece is only used once. It starts at the top left corner of the board and selects a corner piece. It then selects a piece for the spot to the right, making sure that the existing edge matches. This is repeated until the top right corner is reached. Every other row is repeated in the same way, except doing the additional check to make sure the edges match on the top and on the sides. Looking at my code, there's still some significant redundancies I could remove from it if I really feel like it.
  13. Luhz

    create a solver, get $2,000,000

    I finished writing my puzzle solver, and tested it against their demo puzzle. What have you guys been doing all this time!?
  14. I'm guessing you would do something like... Get your reference tone sound file. Have the person record their version. Analyze the frequencies of the recorded file. This guy has some apparant values for tone frequencies: From: David Levine ( Date: 4-Apr-95 (21:1:5 GMT) Subj: Tone Frequencies Tone A = 73.179 Hz Tone B = 85.375 Hz Tone C = 97.572 Hz Tone D = 109.768 Hz Tone E = 121.965 Hz Tone F = 134.161 Hz And so on. Each tone is about 12.1965 Hz higher in freq. than the prev. tone. Each tone is 0.492 seconds long, plus or minus 5 percent, pretty much randomly. AU file, anyone? I would try go from there. Depending on how scienfic it needs to be, you could also try overlapping the relative tones and listening for beat frequency or just variation in general to glean some new insight into the problem. To move up to realtime, you'll just have to take whatever strategy you use (say, comparing incoming frequency to those listed within a % margin of error) and execute it on the stream once inputted.
  • Advertisement

Important Information

By using, you agree to our community Guidelines, Terms of Use, and Privacy Policy. is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!