Wktz

Gnomo Brujo 80
Antigüedad: 10/05/13
No tiene hermandad
Temas: 17


Me gustaria proponer 1 par de implantaciones que ai ya en algunos servidores. continuacion de ids de instancias para todos esos que por culpa de alguien se comen 1 save estupido y se quedan tirados (como pasa aqui frecuentemente si no es de guild) lo cual le daria mas vida al pve y que la gente aprendiera todos los boses. los mmaps : esto lo que ace es que los npcs detecten las paredes suelos etc lo que aria que los npcs no fuera volando y atravesando paredes como locos (esto comprobarlo a conciencia si se piensa en poner por que deja mas bonito el servidor y todo pero suele tener fallos en la configuracion). weno y esto es lo que puedo aconsejar como pequeño aporte espero que alguna salga adelante PD: buen server en el poco tiempo que llevo aqui e visto funcionar cosas que jamas pense ver en 1 privado






Thalassa   
Vyr

Humana Paladín 80
Antigüedad: 09/04/13
Endwalkers
Temas: 1409

+1 yo también quería proponer lo de los movement maps ya que un servidor que funciona tan bien que los npc atraviesen objetos se ve raro... aun que puede que no estén por problemas del emulador ya que repito que algo tan cuidado como NaerZone es raro que no lo tenga.
Mortos

No muerto Brujo 80
Antigüedad: 06/07/11
No tiene hermandad
Temas: 74

[quote="t-14910"]atravesando paredes como locos[/quote] VMaps [quote="t-14910"]esto lo que *hace es que los npcs detecten los suelos etc[/quote] MMaps [quote="t-14910"]continuacion de ids de instancias para todos esos que por culpa de alguien se comen 1 save estupido y se quedan tirados (como pasa aqui frecuentemente si no es de guild) lo cual le daria mas vida al pve y que la gente aprendiera todos los boses.[/quote] Dafuck? Saludos. -Mortos.
Reisa

Staff NaerZone
Antigüedad: 16/02/10
Staff WowRean
Equipo: Administrador
Temas: 17771

Esa implementacion esta prevista para el 2013-2014 siempre que sea factible, es un desarrollo que esta muy verde y que afecta en muchos aspectos del servidor, con lo cual requiere de mucho tiempo y de revision y de desarrollo.
Aimed

Orco Chamán 80
Antigüedad: 06/01/12
Reaching into Infinity
Temas: 21

Ni Vmaps ni MMaps, estais confundidos los dos, lo necesario para que eso no suceda es "Pathfinding" o "Phat", ¿Who is phat? - Algorithms: [b]At its core, a pathfinding method searches a graph by starting at one vertex and exploring adjacent nodes until the destination node is reached, generally with the intent of finding the shortest route. Although graph searching methods such as a breadth-first search would find a route if given enough time, other methods, which "explore" the graph, would tend to reach the destination sooner. An analogy would be a person walking across a room; rather than examining every possible route in advance, the person would generally walk in the direction of the destination and only deviate from the path to avoid an obstruction, and make deviations as minor as possible. Two primary problems of pathfinding are to find a path between two nodes in a graph and to find the optimal shortest path. Basic algorithms such as breadth-first and depth-first search address the first problem by exhausting all possibilities; starting from the given node, they iterate over all potential paths until they reach the destination node. These algorithms run in , or linear time. The more complicated problem is finding the optimal path. The exhaustive approach in this case is known as the Bellman-Ford Algorithm, which yields a time complexity of , or quadratic time. However, it is not necessary to examine all possible paths to find the optimal one. Algorithms such as A* and Dijkstra's algorithm strategically eliminate paths, either through heuristics or through dynamic programming. By eliminating impossible paths, these algorithms can achieve time complexities as low as .[1] The above algorithms are among the best general algorithms which operate on a graph without preprocessing. However, in practical travel-routing systems, even better time complexities can be attained by algorithms which can pre-process the graph to attain better performance.[2] One such algorithm is contraction hierarchies.[/b] ===Dijkstra's Algorithm=== [b]A common example of a graph-based pathfinding algorithm is [[Dijkstra's algorithm]]. This algorithm begins with a start node and an "open set" of candidate nodes. At each step, the node in the open set with the lowest distance from the start is examined. The node is marked "closed", and all nodes adjacent to it are added to the open set if they have not already been examined. This process repeats until a path to the destination has been found. Since the lowest distance nodes are examined first, the first time the destination is found, the path to it will be the shortest path.http://students.ceid.upatras.gr/~papagel/project/kef5_7_1.htm Dijkstra's algorithm fails if there is a negative [[Edge (graph theory)|edge]] weight. In the hypothetical situation where Nodes A, B, and C form a connected undirected graph with edges AB = 3, AC = 4, and BC = -2, the optimal path from A to C costs 1, and the optimal path from A to B costs 2. Dijkstra's Algorithm starting from A will first examine B, as that is the closest. It will assign a cost of 3 to it, and mark it closed, meaning that its cost will never be reevaluated. Therefore, Dijkstra's cannot evaluate negative edge weights. However, since for many practical purposes there will never be a negative edgeweight, Dijkstra's algorithm is largely suitable for the purpose of pathfinding.[/b] ===A* Algorithm=== [b][[A*]] is a variant of Dijkstra's algorithm commonly used in games. A* assigns a weight to each open node equal to the weight of the edge to that node plus the approximate distance between that node and the finish. This approximate distance is found by the [[Heuristic (computer science)|heuristic]], and represents a minimum possible distance between that node and the end. This allows it to eliminate longer paths once an initial path is found. If there is a path of length x between the start and finish, and the minimum distance between a node and the finish is greater than x, that node need not be examined.http://www.raywenderlich.com/4946/introduction-to-a-pathfinding A* uses this heuristic to improve on the behavior relative to Dijkstra's algorithm. When the heuristic evaluates to zero, A* is equivalent to Dijkstra's algorithm. As the heuristic estimate increases and gets closer to the true distance, A* continues to find optimal paths, but runs faster (by virtue of examining fewer nodes). When the value of the heuristic is exactly the true distance, A* examines the fewest nodes. (However, it is generally impractical to write a heuristic function that always computes the true distance.) As the value of the heuristic increases, A* examines fewer nodes but no longer guarantees an optimal path. In many applications (such as video games) this is acceptable and even desirable, in order to keep the algorithm running quickly.[/b] [img]http://imageshack.us/photo/my-images/20/250pxpathfinding2dillus.png/[/img]
Aimed

Orco Chamán 80
Antigüedad: 06/01/12
Reaching into Infinity
Temas: 21

=== Sample algorithm === [b]This is a fairly simple and easy-to-understand pathfinding algorithm for tile-based maps. To start off, you have a map, a start coordinate and a destination coordinate. The map will look like this, X being walls, S being the start, 0 being the finish and _ being open spaces, the numbers along the top and right edges are the column and row numbers: 1 2 3 4 5 6 7 8 X X X X X X X X X X X _ _ _ X X _ X _ X 1 X _ X _ _ X _ _ _ X 2 X S X X _ _ _ X _ X 3 X _ X _ _ X _ _ _ X 4 X _ _ _ X X _ X _ X 5 X _ X _ _ X _ X _ X 6 X _ X X _ _ _ X _ X 7 X _ _ 0 _ X _ _ _ X 8 X X X X X X X X X X First, create a list of coordinates, which we will use as a queue. The queue will be initialized with one coordinate, the end coordinate. Each coordinate will also have a counter variable attached (the purpose of this will soon become evident). Thus, the queue starts off as ((3,8,0)). Then, go through every element in the queue, including elements added to the end over the course of the algorithm, and to each element, do the following: # Create a list of the four adjacent cells, with a counter variable of the current element's counter variable + 1 (in our example, the four cells are ((2,8,1),(3,7,1),(4,8,1),(3,9,1))) # Check all cells in each list for the following two conditions: ## If the cell is a wall, remove it from the list ## If there is an element in the main list with the same coordinate and an equal or lower counter, remove it from the list # Add all remaining cells in the list to the end of the main list # Go to the next item in the list Thus, after turn 1, the list of elements is this: ((3,8,0),(2,8,1),(4,8,1)) * After 2 turns: ((3,8,0),(2,8,1),(4,8,1),(1,8,2),(4,7,2)) * After 3 turns: (...(1,7,3),(4,6,3),(5,7,3)) * After 4 turns: (...(1,6,4),(3,6,4),(6,7,4)) * After 5 turns: (...(1,5,5),(3,5,5),(6,6,5),(6,8,5)) * After 6 turns: (...(1,4,6),(2,5,6),(3,4,6),(6,5,6),(7,8,6)) * After 7 turns: ((1,3,7)) - problem solved, end this stage of the algorithm - note that if you have multiple units chasing the same target (as in many games - the finish to start approach of the algorithm is intended to make this easier), you can continue until the entire map is taken up, all units are reached or a set counter limit is reached Now, map the counters onto the map, getting this: 1 2 3 4 5 6 7 8 X X X X X X X X X X X _ _ _ X X _ X _ X 1 X _ X _ _ X _ _ _ X 2 X S X X _ _ _ X _ X 3 X 6 X 6 _ X _ _ _ X 4 X 5 6 5 X X 6 X _ X 5 X 4 X 4 3 X 5 X _ X 6 X 3 X X 2 3 4 X _ X 7 X 2 1 0 1 X 5 6 _ X 8 X X X X X X X X X X Now, start at S (7) and go to the nearby cell with the lowest number (unchecked cells cannot be moved to). The path traced is (1,3,7) -> (1,4,6) -> (1,5,5) -> (1,6,4) -> (1,7,3) -> (1,8,2) -> (2,8,1) -> (3,8,0). In the event that two numbers are equally low (for example, if S was at (2,5)), pick a random direction - the lengths are the same. The algorithm is now complete.[/b]
Aimed

Orco Chamán 80
Antigüedad: 06/01/12
Reaching into Infinity
Temas: 21

[b]IN VIDEO GAMES[/b] [b]Pathfinding in the context of video games concerns the way in which a moving entity finds a path around an obstacle; the most frequent context is real-time strategy games (in which the player directs units around a play area containing obstacles), but forms of this are found in most modern video games. Pathfinding has grown in importance as games and their environments have become more complex, and as a result, many AI software packages have been developed to solve the problem. Real-time strategy games typically contain large areas of open terrain which is often relatively simple to route across, although it is common for more than one unit to travel simultaneously; this creates a need for different, and often significantly more complex algorithms to avoid traffic jams at choke-points in terrain, or when units come into contact with each other. In strategy games the map is normally divided into tiles, which act as nodes in the pathfinding algorithm. More open endedly structured genres such as first-person shooters often have more enclosed (or a mixture of open and enclosed) areas that are not as simply divided into nodes, which has given rise to the use of navigation meshes. These are constructed by placing nodes in the game world that store details of which nodes are accessible from it.[/b]
Eilo

Humano Sacerdote 80
Antigüedad: 17/02/10
No tiene hermandad
Equipo: Ex-Mjs
Temas: 1714

Desestimada, Por motivos de equipo de gente que no tenemos no se hará hasta dentro de un buen tiempo. Aimed muchísimas gracias por las acotaciones y datos de interés al público para cuando vaya a ser implementado. Saludos Eilo

Esta cuenta tiene limitado el acceso para publicar comentarios por la siguiente condición:

No tienes permisos para comentar en el foro al que pertenece el tema.

Sólo los Maestros de Juego y los moderadores pueden comentar aquí.


  •  Información