Monday, July 19, 2021

Priority Queue

 https://github.com/dotnet/runtime/blob/main/src/libraries/System.Collections/src/System/Collections/Generic/PriorityQueue.cs

Service Locator

 https://yinyangit.wordpress.com/2015/09/06/design-pattern-vi-du-ve-service-locator-trong-c/

Saturday, July 17, 2021

Navmesh AI Tutorial 21 - Enemy Skills/Abilities Part 1 - Jump Attack

 https://github.com/llamacademy/ai-series-part-21/?fbclid=IwAR3hkAu-UeySUzUKebgZOix659Sf74GakMP7Jz2KuoobBxT3DaDyimtCAjM

Thursday, July 15, 2021

unity 3rd person camera

 https://code.tutsplus.com/tutorials/unity3d-third-person-cameras--mobile-11230

Monday, July 12, 2021

get content logfile by power shell

 In any batchmode run you can specify a log file location with an argument -logFile, this file will be written into live during the execution of the given method. You can easily monitor the file using different commands. One of them is from powershell: get-content "c:\location-to-your-log.log" -wait


unity-realtime-log command line

 https://github.com/mr-kelly/unity_realtime_log

Thursday, July 8, 2021

Document A* and reference implementation

explain

https://learn.unity.com/tutorial/graph-theory#5e0b72d3edbc2a144cf5cb47

Early exit

https://www.redblobgames.com/pathfinding/early-exit/

Region growth or procedural map

https://www.redblobgames.com/pathfinding/distance-to-any/#region-growth

Apply to towerdefense

https://www.redblobgames.com/pathfinding/tower-defense/

Movement cost and Infulence map for detect enemy or friendly unit

http://theory.stanford.edu/~amitp/GameProgramming/MovementCosts.html


 http://theory.stanford.edu/~amitp/GameProgramming/ImplementationNotes.html

I go into a lot more detail here, with interactive diagrams.

⁽¹⁾ I’m skipping a small detail here. You do need to check to see if the node’s g value can be lowered, and if so, you re-open it.

OPEN = priority queue containing START
CLOSED = empty set
while lowest rank in OPEN is not the GOAL:
  current = remove lowest rank item from OPEN
  add current to CLOSED
  for neighbors of current:
    cost = g(current) + movementcost(current, neighbor)
    if neighbor in OPEN and cost less than g(neighbor):
      remove neighbor from OPEN, because new path is better
    if neighbor in CLOSED and cost less than g(neighbor): ⁽²⁾
      remove neighbor from CLOSED
    if neighbor not in OPEN and neighbor not in CLOSED:
      set g(neighbor) to cost
      add neighbor to OPEN
      set priority queue rank to g(neighbor) + h(neighbor)
      set neighbor's parent to current

reconstruct reverse path from goal to start
by following parent pointers

https://pavcreations.com/pathfinding-with-a-star-algorithm-in-unity-small-game-project/

We now have all the elements to start writing the main algorithm. Let’s get right to it!OPEN_LIST
CLOSED_LIST
ADD start_cell to OPEN_LIST

LOOP
    current_cell = cell in OPEN_LIST with the lowest F_COST
    REMOVE current_cell from OPEN_LIST
    ADD current_cell to CLOSED_LIST

IF current_cell is finish_cell
    RETURN

FOR EACH adjacent_cell to current_cell
    IF adjacent_cell is unwalkable OR adjacent_cell is in CLOSED_LIST
        SKIP to the next adjacent_cell

    IF new_path to adjacent_cell is shorter OR adjacent_cell is not in OPEN_LIST
        SET F_COST of adjacent_cell
        SET parent of adjacent_cell to current_cell
        IF adjacent_cell is not in OPEN_LIST
            ADD adjacent_cell to OPEN_LIST

Wednesday, July 7, 2021

ToString("N1", new CultureInfo("vi-VN"));

 https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-numeric-format-strings