Advertisement Jump to content
  • Advertisement


  • Content Count

  • Joined

  • Last visited

Community Reputation

216 Neutral

About RPGeezus

  • Rank
    Advanced Member
  1. RPGeezus

    Adaptive Game AI

    Scripted enemy behaviour, and well thought-out level design, are tried and true methods that give a testable product with low CPU overhead. Product Verification is time consuming enough, as is. There is another side to this: If I'm playing a first-persons shooter, blowing away several hundred enemies a round, would the player even notice if the cannon-fodder is behaving a little smarter? I guess what I'm saying is that only some types of games could benefit from an adaptive AI. I think you would need to demonstrably show a clear advantage, from both a game play and a development perpspective, to using an adaptive AI in place of existing methods. My $0.02. Will
  2. RPGeezus

    AI for poker, chess

    I think you'd probably want to approach Chess and Poker differently. One is a game of perfect knowledge, and the other is a game of imperfect knowledge. Most Chess programs use a Game Tree, and not neural nets. Even Chess programs that have used a neural net (or some other 'AI' technique) still use a Game Tree as well. Will
  3. RPGeezus

    Q. Limitation of the flight space

    First thing: use a state based approach for tactics, so you can have a 'pursue', 'intercept', 'attack' mode for your planes. To make your plane avoid crashing in to it's target: Instead of having your plane fly directly at the target aircraft, have it chase a point somewhere behind the target aircraft. For added realism, the 'chase' points distance behind the target aircraft should be based on the difference in vectors between the two aircraft. Add rules in your state table for situations like: chase plane is in front of target plane. Or chase plane is below target plane. This way you can start adding rules that avoid things like crashes, and dumb tactics. If you add multiple possible responses to any given situation, then you can have enemy AI that behave differently from one another. Good luck, Will
  4. RPGeezus

    alphabeta - interitive deepening

    Normally if you implement Iterative Deepening, you keep track of the best line of play on each iteration. When you re-search, you search the best line first. So, short answer: No, you don't limit the search ordering to the first ply only. If you have transposition tables implemented, you can also use that to see if you have a 'best' move for ALL nodes, and search those first too. Will
  5. RPGeezus

    cryptography in videogames

    I'm just going to assume that your professor isn't crazy, and that he's not asking you to find an example of machine learning AND assymetric cryptography as PART of a gameplay experience. Some people use public keys as part of a copy protection scheme. One of the products I work on used to do this. We would sign licenses, and our public key (shipped with the product) was used to verify the signature on the licenses at runtime. Black and White gets lots of kudos for it's machine learning based game play. If my assumption is wrong, then you might have to write your own game just to meet your prof's requirements. lol You're probably be the first to do it. Will
  6. RPGeezus

    Chess Moves Storage

    There is a very common way of sorting captures by their importance called MVV/LVA. Most Valuable Victim, Least Valuable Attacker. The idea is that a pawn capturing a queen is much more profitable (in terms of potential cut-offs) than a queen capturing a queen. Essentially you divide the victims value by the attackers value, and this gives you a number. Sort the captures based on this number and search them first. Based on your post it sounds like you might be trying something wonky with your move generation. For ChessPig I generate all of the valid legal moves for a given position, and then search them one by one. I don't bother trying to generate only certain types of moves first. ChessPig is a memory hog though. This isn't really a big deal, given ChessPig only goes out to ply 30 or so, and there are only 100 (+/- 10) possible moves for any position. Sorting doesn't have to be expensive. Sort indexes to moves, not the moves themselfs. This will save you from making expensive copy's of objects. Moves myMoveList[112]; int moveIndex[112]; moveIndex[0] = 0; . . moveIndex[112] = 112; . . . AlphaBeta ( myMoveList[ moveIndex], ........); . You mentioned that you're using Java. By trying to make your code 'proper' OO Java code you're going to make your Chess program very slow, and may even cause crashes on some computers. You might want to consider statically allocating all of the objects you're going to need right from the get go and reusing them. I should mention first: Do not worry about any of this stuff until after you have your Chess program playing with at least Alpha/Beta and Quiscence searching. Those are _essential_ and should take priority over all other things. Will
  7. RPGeezus

    Oddly Shaped 2d Maps

    I think you're over thinking it. :) If you're worried about memory, use repeating patterns (as was suggested earlier). If you're moderately concerned about memory stop using 4 bytes per tile!!! Conserver memory... <byte> <byte> imageIndex attributes or, for the 1 byte per tile crowd: <nibble> <nibble> imgIndex attributes (blocking / slippery / damaging / insta-death or for the 4 bit crowd: <nibble> tileIndex (tile index is an index in to a 'scene specific' list of tiles). where tileIndex points to an image in a list, and the list is setup in a way so that ALL tiles of index 12 are slippery, and ALL tiles of index 17 cause damage.. :) Will
  8. Quote:Original post by kbundy Thanks for your reply.... Hmmm the games like chess shouldn't it have complex AI in it... or is that very easy too. I've never used Prolog of CLIPS, but based on what has been said in this thread I would not use either to write a chess program. This doesn't mean you couldn't use either to write a chess program, just that _I_ wouldn't. The 'AI' behind most chess programs might surprise you. :) I try to describe it in laymans terms on my website at I would love to see a Chess program written in LOGO. :) Will
  9. Check out my website, under Projects. I have a few screen shots from an application I wrote which extracts 3D information from image pairs. and again at Both pages are a work in progress, but I promise I'll update them with more information one of these days. :) Essentially, what Steadtler said, only I've never done anything quite so precise as knowing the cameras position. :) Will
  10. RPGeezus

    Java and network IO

    Right right-- Its more that if the Java runtime gets flakey, how can you trust anything? I've seen J2ME mess up data during runtime (values in arrays magically changing) so I wouldn't be surprised if J2SE can pull the same trick. Anywho, I've reduced the .sleep, and the problem seems to have gone away for the most part. I'm worried that if the .sleep gets interrupted (which it can) then the problem might still rear it's ugly head. In my case, I'm not directly communicating with a socket. It's Java, and even then I have an IOStream I access that ties in to the socket. The way I handle game states is that each client tells the server it's ready for the next phase of the game. Only after both clients have indicated that they are ready for a state change will the server send out a 'ok, change states now' message. I rely heavily on the sequential order of TCP/IP, as I don't want to get 'place piece at x,y' AFTER we exit the build phase of my game. I've noticed, in the past, that I'd often get 'ok, change state now' messages prematurely-- that is, other data should have arrived before the 'change now' message. This problem has mostly vanished, and It seems to be related to the .sleep issue. Then again, maybe it's a coincidence. I'm not blaming TCP/IP-- it's likely that the data just never made it out, or never made it in, from my applications stream-of-data perspective. While possible that this has something to do with fragmentation of data, it's not likely. I send tiny tiny messages-- the TCP/IP headers are much larger than my message data (my messages are usually 4 bytes long). Thanks again for the help. If you're up for a game of Rampy, come visit my site. Will
  11. RPGeezus

    Java and network IO

    Quote:Original post by hplus0603 "Missing packets" -- doesn't happen in TCP. In theory. :) If the system time is getting altered I can only imagine what kind of messes that's creating with other parts of the system. Not to blame TCP/IP though. Once I clean up the sleep issue we'll see what happens. Will
  12. RPGeezus

    Java and network IO

    Wow! Thanks. :D I bet you that is the source of 99% of my problems on the client. :) It explains why some systems behave differently than others too. I'll fix that when I get home. Will
  13. RPGeezus

    Java and network IO

    The demo can be found at I know I've likely got synchronization issues somewhere.. I do mean the system clock (even the little timer down in your task bar) gets changed. It's really strange. The applet works really well for some people, and not well at all for others.. Will P.S. There is a bug on the first map with reds castles-- picking the second oen in from the left will generate an out out bounds expection.
  14. I recently put my game, Rampy, up for play. It's written in Java, and the client is an applet. It's using Java 1.5, and TCP/IP. I have a thread (first mistake I bet) which listens for incoming network traffic. When it receives data, it makes 'synchronized' (java keyword) calls to a GameState class I created, and updates various system values. I've been noticing some really horrible problems that occure at seemingling random intervals. Some of the crazy things I've had happen: -On one computer, the system clock started running at about 5x speed once my Applet loaded. I have no idea how this is even possible, as it seems like a violation of the Java security model (and my applet is not signed!!). This is reproduceable on the one machine (Windows XP Professional, JRE 1.5_ 6). -The client can MISS PACKETS. The server seems fine. Missing packets???? I surely cannot be the only person to have run in to problems writing networking code for online games. :) Does anybody have any advice, or resources for handling this type of thing in Java? I made the mistake of basing my code off of an example Sun Microsystems made... Never again. I suspect my problem is threading, so I'm thinking about moving to a non-blocking socket type. Any help / advice would be greatley appreciated. Will
  15. RPGeezus

    Simple web-browser game

    Is that a screen shot from your game? :) Looks good. I like the style. Using state machines is a good way to go. While I can't really offer anything specific, you might want to google 'Rogue' or 'NetHack' programming. They're both older text based games, and have been very well documented. Good luck, and please let me know when I can play your game. Will
  • 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!