2011年1月30日 星期日

hu!!!大功告成

今日ai搞掂
(搞到我爆炸!!)
亦搵到save data係iphone既方法
意未著存下level再唔係難事!
gotta sleep..

2011年1月29日 星期六

一個天大白痴的bug

不是說現在的path finding 還有bug嗎?
終於發現問題所在
從來沒有麼白痴過
花了一個小時找到bug
就是

fix前
for (var m:int = openA.length-1; m>0; m--)
{

fix後
for (var m:int = openA.length-1; m>=0; m--)
{

看得出有什麼分別嗎?
就是m>0
讓它永遠讀不到array[0]的數據!!!!!!!!!!!!!!!!!!!!!!!!
fuck me!

2011年1月23日 星期日

一個遊戲的偉大

有感而發寫了這篇文章..

小弟一生裡也玩過很多遊戲了(基本上我是半個宅男吧)
從super mario,逃獄金剛,到aoc,到world of warcraft,之後有了錢,upgrade了配置玩的hitman, crysis, need for speed..etc and etc

現在才明白到一個遊戲入面的可怕
一個很簡單的function, 就是尋路, 也是一種大學問..
可是人家20年前就搞好了這樣的演算法..
發展到了今天,那些gta4,dirt2,那些仿真得跟現實分別不大的物理系統
很難想像裡面幾百萬行的code在電腦裡運行的樣子..
付了多少的心血去畫,去寫..

又辛苦了一晚


今晚終於完成地圖的放大和drag移動
就這樣就花了半晚時間
也fine tone了一下以前的code
使更加有條理

那a star問題還在折磨我
上傳一幅圖就清楚
藍是start, 紅是goal
到了箭咀的位置,應該怎麼走呢???
假使走滿了右邊的空間,那走辦呢?還找不到出口呢
又不能重開走過的點, 到左邊吧?
這就造成一個大爛bug..

2011年1月22日 星期六

a star

既然得寫點東西, 就在這寫吧

3可能的bug
1.全block, unit動彈不得的情況
2.中途block, unit能走到最近target的地方嗎?
3.弓

先有一個seq
var dir_seq:Array

如target.x >= unit.x
先左,後右

先x後y嗎?
不,以distance決定

然後推進了

對!
個人感覺我的寫法可以改變一點
就是說,我找的不是最快的路徑,

這樣會造成unit會走到盡頭才轉彎

like this

if target.x >= unit.x
and target.y >= unit.y

and x distance>y distance

seq is

right
bottom
left
up

result:
1. no-block, 斜者可行曲線
2. 中間有block,
===
想了一個小時
自己的方法有點不行

唉..
明天還是繼續研究一下那些中文網站吧
有點像陷入了pure maths那時候的困境...
對,了解一個新的理論和應用它

A star

想不到我還停留在a star上。。
找了一個source
可是看了很久還不明白
那,還是算了
自己寫一個吧
。。。

2011年1月19日 星期三

天!A-star!!

今天繼續fyp的programming
之前的ai有點不完美, 遇到障礙還是有點笨
所以決定重寫了... (累)
看了一些a star的介紹, 還是決定用了
看來又得腦力操勞.........

2011年1月13日 星期四

上午又fix了一個小bug

這小bug說起來影響真大
亦很難察覺
最初以為是iphone的問題, 跟flash不相容
有點心灰意冷的惑覺..
最後修改了一點code, 終於解決了問題!
所以說, testing這步驟真的很重要...

期中present前進展 (1)




話說這幾天繼續搞核心部份的東西。
花了很多時間解決很多爛問題。
比如說flash 內置的dragging function,真是爛得無話可說
於是我還是自己寫了
還有就是自動移動的各種不名的bug。
花了許多時間去簡化
現在每天在火車上就不斷測試自己的遊戲。。
呵呵,其實樂趣也不少。

2011年1月7日 星期五

01-08

核心的部份快完工了
現在單位可以自由自動地行動
什麼drag and drop的bug都解決了
還差弓兵的attack程序
code變得越來越複雜
快到了除了我誰都不明白的地步了
之前用了pang的方法來dynamically引用number of unit等variable
比方說:
if (unit.x_pos > unit.closest_enenmy.x_pos && unit_pos[unit.camp][unit.x_pos - 1][unit.y_pos] == -1)

呵呵
完全是動態的連結
第一次寫這麼繁複的程序
let's keep going

2011年1月4日 星期二

unit auto moving

今天下午終於搞掂了unit auto moving
auto detect enemy 也ok
現在的問題是其他alternative,比如說當旁邊有盟存怎辦?
那個if 的括括將會挺大的..

讓我想想:

case1: 旁邊是盟友 (或block)
case2: unit是馬
case3: 準備attack
case4: 原來的enemy死了/distance增了

還有很多可能性..
case5: 弓準備attack

這基本搞店後就是defense狀態的處理

想到了
馬的寫法就是, if unit=horse, then loop unit move again
這個行
現在搞原來的enemy死了吧
應該在最開始搞

2011年1月3日 星期一

yup! got it!

今天終於搞掂drag and drop的所有部份
也為即將來臨的enemy detection ai 作好準備了
其實不用tree也可以, 畢竟只是detect distance
每一個loop只是 absolute(x1-x2) + absolute(y1-y2), 不耗太多時間
就這樣

2011年1月2日 星期日

思考

現在很簡單的問題,怎樣令p1的兵自動走到p2的兵。
第一步是找到target.
all unit must contain one variable: target enemy.
this variable determine who to attack.
and then is attack process.
and then is defense states.