• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.


  • Content count

  • Joined

  • Last visited

Community Reputation

130 Neutral

About n0b

  • Rank
  1. Quote:Original post by NQ That would mean that 'life' is just what we call this thing that occurs when a bunch of neural cells are linked together. By this definition there's no other difference between insects and humans, aside from the number of interlinked brain cells. Nope. As far as i know, the difference does not come from the number of interlinked brain cells - that would be something like "the more brain the better" - but that does not always suite. It actually depends on HOW INTENSIVE the information-exchange between those inter-linked brain cells is. I guess there was a link about this topic on the wikipedia.org-human brain page. Just take a look at it : http://en.wikipedia.org/wiki/Brain The idea of billions of little cells melting temporarly together, creating one huge, gigantic mind with many times the capability of a human's mind was also discussed by Frank Schätzing in 2004 within his scifi "Der Schwarm". Although he used a quite dramatic scenario, it includes some interesting thoughts. One of his theories includes the possibility of those "goo"s being able to create a living, learning and thinking individual all by themselves based on information-exchange going on during DNA-Modifing. He was the first person i know which stated that thinking might not nessessarily be based on neurons / brains. However, i don't know if it was released in english. But i like your article. I've watched the entire Ghost In The Shell stuff by myself, therefor i'm quite familiar with some of those theories. I guess it's a nice review of them and you also inserted some additions - other thoughts. Nice one.
  2. Hi. I want to discuss different attempts at creating a smart playing AI for a game called "snakes" (not SNAKE). I don't know if you know this game, so i ll give a short review; -> the game is round-based -> each match is played one on one -> there exist 5(M) snakes -> each player owns one hole(Goal), where he has to lure the snakes to -> the player with the most snakes lured into his hole wins -> in order to lure the snakes, each player can place 10 meatballs -> the snakes can move one field per round -> the snakes always try to reach the meatball / hole which is closest to them (the distance is calculated using euklid) -> each snakes consists of 5 segments The playing field is a 20*21 units large 2D-Grid; However, the first three rows are blocked, so the playing field is only 17*21 units large. So the AI can place a total of 10 meatballs; the question is : where can they be placed to reach the highest output? How to maximize it ? I'll present you my first idea and my the idea i'm working on right now; #1 At first i thought it would be enough to lure (M/2)+1 snakes, which are needed in order to win the game. Its obvious that this is much easier to solve if i concentrated on those snakes which are closest to my goal. So i took the midpoint (referred to as P from now on) of them and used A* to calculate a path from my goal to P. I modified A* so that the output path would be bend. That would ensure that each snake crawling that way would increase the distance between itself and the enemy goal while coming closer to my own goal. Fig.1 : #1 = own goal; ++ A* path; P = midpoint of S1-S3 [---][---][#1][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][#2][---][---] [---][---][++][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---] [---][---][++][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---] [---][---][++][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---] [---][++][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---] [---][++][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---] [---][++][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---] [---][++][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---] [---][---][++][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---] [---][---][---][++][++][++][++][---][---][---][---][---][---][---][---][---][---][---][---][---][---] [---][---][---][---][---][---][---][++][---][---][---][---][---][---][---][---][---][---][---][---][---] [---][---][---][---][---][S1][---][P][---][S3][---][S4][---][S5][---][---][---][---][---][---][---] [---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---] [---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---] [---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---] [---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---][---] Each round that path would be recalculated in order to be up-to-date; if the AI has to place a meatball is determined by the influence the closest enemy meatball has, and if non exists, the influence of the enemy goal. A meatball will always be placed on the unit of the A* path which is exactly one unit closer to the snakes than the enemy. However, that idea did not really work out, so i thought it all over and crushed this old idea. #2 Now i'm using a different base; i evaluate each board position in order to find the most fitting position. I discussed the issue of finding a good evaluation-function in the maths-and-physics section (http://www.gamedev.net/community/forums/topic.asp?topic_id=366826 ). This method holds several advantages : using a limes the AI gets more flexible cause there are more moves available; i can judge positions based on future moves (using a specific depth for evaluation). its easier to determine wether the AI has to use a meatball or to wait and save them for later times. This method can also be improved by grouping snakes : if the distance between two snakes is less than „l“ (user defined) and both snakes want to reach the same point, they ll be judged as a group. Using this grouping method the fitness of units can be changed upon the basis „do they influence another group which wants to reach one of my meatballs / goals negativ?“. It would be possible to make the AI precisily lure the snakes which are going for the enemy's goal. The already placed meatballs could also be integrated into calculating the fitness of a unit – cause a meatball itselfs lures the snakes, points around it would have a higher fitness. Also the AI could use a „meatball-queues“ which hold the rough tactic for the whole match - each round a fitting move is dequeue, if one exists; the other moves get checked each turn for their fitness – if better exist, they ll be changed. If this queue gets saved at the end of a match, together with the enemies contra-moves the ai could evaluate even better based on those informations, which could be read in each game. So it would be kind of self-learning, wouldnt it ? I haven't implemented the whole stuff further than the grouping, which is by now quite simple. So the really bashing stuff is still missing. Any ideas what could improved / how it could be improved ?? Oh, well. Happy new year :d (its already 2006 over here^^) n0b
  3. Quote:Original post by Zipster It seems to me that each criteria could be used to create independent attraction/repulsion field, that are overlayed together to produce a final fitness value. Yes. That's the idea i'm working on. As you can see from my first post i tried to combine all those factors into one function to calculate the fitness directly. Quote: Overlay all these fields by adding them together, and normalize to the highest value to get it into the range [0, 1]. Humm...Yea. Actually i thought the range [0, 1] would be helpful 'cause it would be easier to calculate a limes. 'Cause if i had a well calculated limes then the AI could choose between a number of moves which all have about the same fitness. But that should work if i didnt normalize to the highest, too. And i could make the algorithm a little faster by not normalizing each value. It's no must-have after all. I'm not quite sure but i guess your step-by-step method would proove very helpful as soon as it comes to "look-aheads", judging using a specified depth - it would be nothing more than calculating and exchanging a value-table to get to know how the area would look after some moves. I guess i ll try out both methods. They are not that different, after all.
  4. After all i figured out a quite good working alternativ : ( (MB+MP) / (MA+MP) ) * n this gives me quite acceptable points but the limes doesnt work, though. So i m using a simple gamefield analysis which quits the whole thing if there is no need for a move. Writing down my problems sometimes helps :D thanks anyway :)
  5. Hi there. I was not quite sure wether to post this question under AI or MATHS so i'll just post it here 'cause its more to the topic i guess. Anyway, i'm trying to find an evaluation-function which is able to calculate the fittness of a R2 Pos. The function should only have outputs between zero and one, cause there ll be a limes which controlls if there is work to be done by the AI. -Nothing out of the ordinary here- The base of my calculations is a 20*21 2D Grid. [0/0]...[0/20] . . [19/0]...[19/20] The positions are jugde on the base of their distance to five(three) points, two are fixed. It also exists a per-field changing factor n. Lets call those fixed points A(2/2) and B(18/2), the point which arent fixed are C(c1/c2), D(d1/d2) and P(p1/p2). But the Points C and D are just optional. Sometimes they dont exist. Sometimes they are identical to A(C=A) and B(D=B). The point beeing judged is M(x/y). Playing area looks like this : [x][x][x][x][x][x][x][x][x][x][x][x][x][x][x][x][x][x][x][x][x] [x][x][x][x][x][x][x][x][x][x][x][x][x][x][x][x][x][x][x][x][x] [x][x][A][x][x][x][x][x][x][x][x][x][x][x][x][x][x][x][B][x][x] [ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ] [ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ] [ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ] [ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ] [ ][ ][ ][ ][ ][C][ ][ ][ ][ ][ ][D][ ][ ][ ][ ][ ][ ][ ][ ][ ] [ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ] [ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ] [ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ] [ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ] [ ][ ][ ][ ][ ][ ][M][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ] [ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ] [ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ] [ ][ ][ ][ ][ ][ ][ ][ ][ ][P][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ] [ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ] [ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ] [ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ] [ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ] n is a factor which lies between 0 and M. the closer n gets to M, the better. n = M is possible. I ll first presume that the points C and D are nonexistant : Because of the gamerules point M is an interesting point if : The distance MA is less than the distance MB, the distance MP is less than the distance MA, and n is quite high. therefor a field is attractive if (MB/MA) > 1, (MP/MA) > 1 and n > 0 so my eval function would be (MB * MP * n) / (MA)^2 But this ll only lead towards one thing : all points close to A will have super-high-fittniss because MB*MP*n is divided by one or a little more, even if n is not very good. And the fittness values are greater than one. if the Points C and D are existant than M is fit, if : the distance MC is less than MD, CD > CA, CB > CA, PC < PD and n high. so i could say my eval-value is good if (MD/MC) > 1, (CD/CA) > 1, (CB/CA) > 1, (PD/PC) > 1 and n high,so func = (MD * CD * CB * PD * n) / (MC * CA^2 * PC) Because C can be identical to A and D ident. to B the eq. could look like (MB * AB^2 * PB * n) / (MA * [AA^2=0] * PA). Ups, division through zero. This will also ony lead to one thing : all points close to P will have a super-high-fittness or i ll get a division error. I m not sure why but i m unable to find a function where all factors make up a value between 0 and 1 and where no places have a super-high-fittnessI feel like i left some important factors along the way ...Um...any ideas ? EDIT : dunno if it helps, here's a short review of the game : there are 5 snakes, 2 Players. To win the Player has to get more snakes to his own hole than the other does. He can do that by using some meat. Each player can place 10 meatballs in order to make the snakes move their way. The snakes always move to the closest distance, calculated using euklid. In order to find a good position for my meat balls i thought it would be good if my AI would give each field a fittness value, so each field gets a calculated fittness. If some fields exist which fitness is above the limes (dunno how to determine the limes yet, though) the AI is going to place a meatball on one of them - else no meatball will be used. This is important cause i only have ten of them. So a field is interesting if it attracts many snakes, lies in the direction of my own hole, is close to the snakes (so the enemy wont make them go his way) and is far away from the enemies hole. the point P is the midpoint of the Snakes attracted by a field. so if a field attracts three out of five snakes, P is the midpoint of these three snakes. Guess thats all to say about this game. Maybe i ll make another post in the AI section just to see if theres a better aproach to programming a valuable AI-Enemy...