遊戲設計邏輯 - 炸彈超人

無意間看到網友提問這類遊戲如何設計,所以特此寫一篇給以後要製作
相關遊戲的網友做參考, (以下我要說明遊戲的部份,嚴格說與flash其實
是比較沒有關係
是遊戲製作上的邏輯設計)

大部份製作炸彈超人這類的遊戲 都採取以"地圖陣列"式的作法
不知道的話可以參考我blog裡的國外遊戲設計結構,地圖是
以數字

組合而成的陣列結構

假設今天我們地圖縮小一點只有4x4 (0是沒有任何東西,1是牆,2是障礙)




當炸彈擺在 (2,3) ,
我們預設暴炸半逕是1 ,在炸彈還未暴炸前我們就已經

可以計算出它幾秒後要炸到的地方會是

(2,2)  (1,3) 
(2,4)  (3,3) , 這幾個座標都是會被炸到,事先被算出

盡而取出該座標資訊

假設取到的是1 or 0 
則沒反應,

假設取到是2 則 從陣列中移除2 , 改為0
(假設你有藏寶物 ,一個陣列裡塞的資訊自然就多一些)

炸到
人也是一樣,事先算好的座標是否包含著當前玩家所在地的座標

若是暴炸瞬間它還是存在於該座標範圍內則game over !!

  • 留言者: 小E
  • Email:
  • 網址:
  • 日期: 2010-07-01 20:50:37
謝謝指導~

我會嘗試著用flash製作看看...

有問題可能還會來請教您...

(我就是發問這問題的人)

非常感謝




  • 留言者:
  • Email:
  • 網址:
  • 日期: 2010-11-21 20:31:36
我想請問一下~

我目前做出了陣列的地圖~

牆壁和障礙物也設定好了

但是炸彈的設置,我想要設定在格子內

(因為我人物移動是可以站立在格子和格子之間的,而我炸彈是設定放置

在人物本身站立位子)

請問我該如何設定才能使他判定我人物是偏向哪個格子,而將炸彈放置在

該格子內呢??



還有,我的炸彈爆破,假如我是製作一個爆破的動畫(佔一個格子),我要

怎讓他依照我的火力,向十字方向增加火力呢?(想是火力1就是爆破x3格

y3格的十字架 火力2 就是x4格 y4格)



希望能請您解答~感謝

Gotoandplay() -flash game 設計資源教學



過去的一些設計邏輯教學還是使用2.0 , 最近再去看過已有3.0的設計教學了,
遊戲邏輯設計是很值得參考,尤其是陣列式地圖遊戲結構的學習,各種關卡的
小技巧設計,以及最新開發的各種flash遊戲技術都在於此!!

http://www.gotoandplay.it/_articles/2004/02/tonypa_p11.php

ActionScript3.0 & 2.0 - useHandCursor 如何讓滑鼠手指消失

本篇介紹兩個版本作法 , 主要是因為 as3.0無法直接使用 useHandCursor

請看底下程式代碼:





myMC1_mc, myMC1_mc , 都是MovieClip

//--------as3.0---------------------------------------------------------------------------------------

myMC1_mc.addEventListener(MouseEvent.CLICK,traceMC);

myMC2_mc.addEventListener(MouseEvent.CLICK,traceMC);



myMC2_mc.buttonMode=true;

myMC2_mc.useHandCursor = false;


function traceMC(e:MouseEvent):void {

    trace("you clicked: "+this.name);

};



//注意到了嗎,紅色那行告訴你,要先開起button模式,才能使用Cursor=false;



//--------as2.0----------------------------------------------------------------------------------------
myMC1_mc.onRelease = traceMC;
myMC2_mc.onRelease = traceMC;

myMC2_mc.useHandCursor = false;

function traceMC() {
    trace("you clicked: "+this._name);
};



//as2.0就不必這麼做,因為本來在2.0的MovieClip設release就會出現手指圖示

  • 留言者: ㄎㄎㄎ
  • Email:
  • 網址:
  • 日期: 2012-09-05 17:30:13
好帥

Flash Lite 與 J2ME 手機開發比較





隨著MacromediaFlash Lite方面的大力推廣,這支Mobile新軍看來終于要展露頭角了。

不可避免的,衆多的開發者會將它與現有的技術放在一起品評比較一番,而這次被推上擂 台的,

是已經在移動開發領域有著堅實基礎的J 2M E。技術的比較有的時候很盲目,大家唇槍舌劍、旁

證博引了半天,却發現兩種技術根本就沒有可比性。而那些 狂熱的擁護者則往往要追求一個“A

終會代替B”的極端。

    那麽,J 2M EFlash Lite到底有沒有可比性?

Flash Lite的是否會代替J 2M E原有地位而成爲移動應用開發的首選。


  

       但是,Flash LiteJ 2M E兩者都具備自身的優勢和劣勢,這種優勢和劣勢也導致了兩者必將

在不同的領域發揮作用。http://www.design-nation.net/en/archives/000453.php 這篇文章中談到

的幾點我不再贅述,以下是我對二者區別的補充:


  1.Flash Lite擁有統一的規範,即Flash Lite Player,任何安裝了Flash Lite Player的設備都可

以播放Flash Lite文件而不需要加以編譯修改。J 2M E儘管在基礎規範(MIDP/CLDC)上相對統

一,但是大量的可選包使得程序的兼容性下降。更何况各個廠商的 KVM實現還有衆多Bug



  2.Flash Lite無疑會提供更好的用戶體驗,擺脫了MIDP lcdui甚至是手機底層的MMI實現,開

發者可以自由的設計應用程序的界面,同時也避免了使用API的困擾。相對而言,MIDPUI框架

過于醜陋,而 且功能簡單。(我現在正在試圖解决這一問題)。當然,繪製複雜美觀的界面也會

帶來資源和性能的耗費,因此開發者需要在兩者之間尋找平衡點。


   3.Flash Lite支持SVG,同時本身也是矢量格式,因而在分辨率多樣化的移動平臺上可以更

好的施展拳脚。J 2M E開發者則需要認爲解决分辨率適應的問題。在某些 狀况下,爲了適應分

辨率而帶來的工作可能非常繁複。而且使用J 2M E製作MTV類動畫幾乎不可能,逐楨繪圖方式在

J 2M E上不可能毫無顧慮的使用。


   4.Flash Cast? 現有資料太少,不知道他究竟能發揮多大的威力,但無論如何是值得期待的

。相反,Sun幷沒有推出與J 2M E完美整合的服務器技術,但事實 上,J 2M E可以和任何一種服

務器技術整合。
  
  5.Flash Lite從現在看來,功能還過于單薄。J 2M E則由JCP推動其發展,新規範曾出不窮,

從對手機底層的訪問,到多媒體的支持,從SVGG3D。儘管很多 規範真正在手機上實現還需要

一段時間,但至少我們知道,J 2M E真的可以做很多事。




  6.Flash Lite目前幷不是以native方式存在于手機中,而是用應用程序擴展的方式,儘管安裝

一個.sis文件幷不是難事,但如果廠商可以將Flash Lite Player綁定在手機中,相信推廣程度會更

好。




  7.Flash Lite仍然不適合作複雜的應用,包括商務和娛樂方面,從安全機制,存儲能力,網

絡連接等層面,Flash Lite都比較薄弱,而且可能難以改進,而在這幾個方面J 2M E要强得多。




  8.儘管簽下了NokiaSamSung,但是Flash Lite推廣的路還很長。而且,非智能手機仍然

占據了大部分市場,Nokia雖然致力于發展S60等智能手機平臺,但S40手機仍然是主要盈利點

。因此, 如果Flash Lite只能出現在S60一類的中高端智能手機上,對Flash Lite的普及可能幷

不是十分有利。




  作爲一個開發者,最重 要的是瞭解各種技術的優勢劣勢,用適當的工具完成最適當的工作

        。至于那種技術最强的問題,大可不必爭個你死我活。

Flash基礎 - flash路逕層次指定講座 ,root,this,parent


Flash路逕的指定,是Flash技術中最重要也是精華的關鍵,用來隨意操控
任何影片片段(MovieClip)的播放,然而在flash初學的階段,對於其層次
架構與複雜的影片片段指定是很難瞭解的,特此寫一篇教學,為flash路逕
做詳細介紹!




1.root,一切的根本


若你學習過基礎介紹,應知道影片片段(MovieClip)是一個類似容器的概念,
裡面可以裝載許多東西,當然你也可以為它命名。現在,我們一開打flash,
假設你新建一個檔案,一開始看到的會是完全白白一片的時間軸影格,我們
也可以把許多東西丟在這個容器內,你會問:「難到這容器它也有名子?」,
沒錯,這容器名子就是_root(as2.0),在root(as3.0改為此),所以當你一進
入flash就預設了root這個影片片段這個大容器!





底下這張圖可以看到一進入flash,在沒有任何階層的最上層場景下,時間軸
就是一個預設的MovieClip.










當這個預設的大容器root,之下建立一個新的影片片段(MovieClip)名叫 B1_mc
則他們在程式(as)路逕下的完整為


root.B1_mc (as3.0)


若是 (as2.0)寫法為

_root.B1_mc






2.看不見不代表沒有



也許你在觀摩或看到網路上許多as程式,它的物件前面開頭是沒有任何路逕



舉個例子:
假設一個影片片段建立於場景  B2_mc.gotoAndStop(1);



疑? B2_mc 的前面完全沒有任何路逕名稱,是怎麼回事?


實際上它是省略了 this , this代表物件與程式代碼同層才能以此用法,
所以它完整的程式代碼為


this.B2_mc.gotoAndStop(1);



以下我們以圖示舉幾個例子:



註:藍底框的root是代表我們在該層寫程式代碼
註:Ball.x(Ball 的x座標屬性)



當 Ball 物件位於 root 下,則我們可以指定完整路逕 root.Ball . 當然,Ball 與 root 是同一層
所以也可以寫成 Ball.x(省略了this寫法)












當 Ball位於 B1_mc(MovieClip),而as程式代碼為於 root ,我們要對 Ball操作,
這時我們就可以寫包含影片片段完整路逕 root.B1_mc.Ball












當 Ball位於 B1_mc(MovieClip),而as程式代碼為於 B1_mc ,我 們要對 Ball操作,
這時 我們就可以寫包含影片片段完整路逕 root.B1_mc.Ball
,由於 程式代碼與
Ball
同一層 所以我們又可以寫成 Ball.x 或是 this.Ball.x















當 Ball位於 B3_mc (MovieClip),而as程式代碼為於 root ,我 們要對 Ball操作,
這時
就必須寫個完整路逕 root.B1_mc.B2_mc 來指定 Ball 所在位置!





















3.隨意操縱我的上一層 parent





有人也許會反問:「如果我的程式要操作的物件是在影片片段的上一層或上上一層操作,
該怎麼辦?」,聽懂這問題的意思嗎?,不懂的話請參考下圖!



當as程式代碼寫在B3_mc影片片段下,要對 B2_mc下的物件ball操作時,對程式碼來說
是 它的父親層(父層),因此我們在Ball前加上parent,代表該操作上一層物件Ball.x
















接著下面舉一反三,當一個物件在程式碼的上上層時,我們可以連接parent,使其為
parent.parent. 看下圖的例子

















舉凡市面上所有你看過的flash,都可以由上面三種來完成一切工作,所以基礎是非常重要
若還有需要補充,歡迎各位網友提出建議,將適時的更新內容!





ActionScript2.0 - txt 傳值給 Flash ,

var my_load:LoadVars;
my_load = new LoadVars();

my_load.onLoad
= function(success) {
  mydata1=my_load.var1; //var1 var2 就是接txt 檔裡的
&var1變數值
  mydata2=my_load.var2;
  show_txt();
}

function
show_txt(){
   
trace("file1--->var1"+mydata1);
trace("file1--->var1"+mydata2);
}

my_load.sendAndLoad("123.txt",my_load,"POST");

------------------------------------------------------------------------------
123.txt
內容

&var1=abcd123&var2=123

Flash基礎 - 影格切換基礎講座



所謂影格切換基礎,是指利用不同影格的互相切換,達到特定目地的視覺效果.
不想看廢話的人,請直接跳底下解說,或至中階篇看應用.

這種方法,是簡單而快速達到切換畫面作法,當然以有程式背景的人員下去開發同樣的效果
自然有不同的方法,也許是利用函數或是各種數學方法觸發事件讓效果呈現,但不論如何
效果與呈現的結果是一致的,在開發速度與結果一致的情況下,找一個平衡點來做同樣效果
的事是很重要.


應用範圍:


  1.物理動畫迴圈流程控制

  2.網頁畫面切換

  3.遊戲角色切換與物件流程控制

  4.紙娃娃系統

  5.按紐特效變換





我們馬上來看看影格切換技術方法



註:在此我們非常重視邏輯結構,若你對此技術非常熟悉,建議你直接看中階 影格切換教學應用篇





1.跳指定影格



  影格技術首先第一項就是 跳指定影格,利用按紐觸發事件,跳指定影格



  當按紐A觸發時,跳至第2個影格

  當按紐B觸發時,跳至第3個影格



  在影格中設定以下語法:



 AS3.0寫法

 











 AS2.0寫法










 影格結構表示:(第2,第3影格為自訂內容)








別忘了為按紐命名!











測試結果!!















2.跳指定標籤



  既然能跳指定影格,又為何還需要跳指定標籤?

  如果你注意到上面的例子,假設今天你把第2個影格移動至第10影格

  你是不是又要將語法gotoAndStop(10),由2改成10呢



  但若是標籤就沒有這問題,不管你影格如何移動,它只認標籤位置



  在影格中設定以下語法:

 










 AS2.0



 





  影格標籤設定:(先用滑鼠點一下想設定的影格,在屬性(ctrl+F3)欄位設定名稱) 

      










  影格結構表示:(注意看到A_content,B_content為在影格上的標籤)

 

 








3.跳指定變數影格



  這項技術是進階的應用,將我們想跳至的變數傳遞至gotoAndStop(變數);或gotoAnPlay(變數)


  應用上多在效果呈現上,例如一個效果消失,接續另一個效果開始,這樣的效果光是gotoAndPlay影格

  是無法做到的,馬上為大家示範!



  在影格中設定以下語法:(當按紐按下觸發play(),並且傳遞變數V1 )

 

 







  




影格結構表示:





  


  記得在每一段動畫尾巴影格加上以下語法:(讓動畫離開時接變數值)

 












  範例下載(記得將副檔名改為rar)

 






4.多層MovieClip與複雜層次指定


  當你製作的遊戲,或網站內容結構越來越複雜時,你要操控的影格不會
  永遠都在最外層root影格,也許你做了許多影片片段(MovieClip),裡面
  又包含了許多內容,要對其做操控.


  在影格中設定以下語法:



  












  指定 MovieClip(root)之下的Main_mc , 如果你是as2.0慣用者記得 root.Main_mc(會顯示未定義錯誤)


  MovieClip(root).Main_mc.gotoAndStop();
  或省略root寫法

  Main_mc.gotoAndStop();



  若你對flash指定路逕 還不熟悉,可以先去看flash路逕指定篇  

  影格結構(外層): 我們新建一個MovieClip,名叫 Main_mc ,記得在屬性命名








  



   

 



 



   













Main_mc內部結構


 

   




  範例下載(記得將副檔名改為rar)

 

遊戲專題設計02

每當期末到了, 一堆專題作業又開始求救 , 這次設計是一個小遊戲
一共分為四關卡

這次設計比較大的挑戰應該是某幾個關卡, 子彈發射,與彈道設定
與敵人追逐 AI 等邏輯演算設計







遊戲邏輯設計 - 淺談碰撞

在flash學習過程中,也許你學習到許多語法,但你卻不知如何用它,在遊戲設計碰撞到
物件就無法行走,今天我們不談語法, 偏重在學習邏輯設計上,

以下是 遊戲設計碰撞時, 可能需要的方法:


1. 當碰撞時,產生反作用力 如果你產生行走的 power=1.2 反作用力 power = -1.2
    一加一減相抵消

2.另一作法是控制住你的變數 , 當碰撞時就鎖住你的 方向 變數與加速度
   舉個例子,你power = 1.2  xspeed +=power ;  則當發生碰撞時,
   power = 0 ; 產生的加速 xspeed = 0 ;

3.第三種作法是 一般國外做遊戲碰撞常用的邏輯, 跟 第2點提到很像
   它是以你物件下一步要走的位置,來判斷 是否你下一步要走到的位置
   是否與物件發生碰撞
  
  舉個例子;

  物件在 (x ,y ) , 你下一步要往左走 , 也就是 (x -1 , y) , 我們事先將下一步要走的
  (x-1, y)座標, 與下一步會碰撞到的物件 做偵測
  假設下一步(x-1, y) , 在(x-1, y)並沒有障礙物 , 則可以work
  若否 , 則不work !


   不管是上面那一種方法 勢必都要以你要物件碰撞的方向去偵測
 
   舉個例子 :

            物件座標是(x , y) , 它的左碰撞點是在  (x- 20 , y ) ;20只是假設
            表示 碰撞點在你物件的左方座標 (用該座標去偵測與邊界是否碰撞
            或是 用 左物件與物件 去碰撞偵測  偵測是否左方發生碰撞)


4. 再來談談碰撞語法

  flash 內建的碰撞 hitTestObject  這是一個很"陽春"的碰撞

  它有一個很大的缺點 就是它碰撞是以 物件元件的藍色外框邊界做為判斷

  假設你有一個圓形的物件 要跟正方體碰撞  還未碰到圓形就顯示碰撞了
  因為圓物件外框是以四方藍色邊界所圍起來 , 當碰到元件邊框時就產生
  碰撞
 
 
  而且 如果你物件是中空的情況, 你要偵測的物件又在物件裡, 那更是糟糕
 



 所以為了解決這問題 在國外早就有人把完美的碰撞法
 寫出來給大家使用, 是一種 以"像素"偵測"像素"法來偵測碰撞 ,就再也不
 會有形狀偵測上的問題






  • 留言者:
  • Email:
  • 網址:
  • 日期: 2010-10-12 11:07:27
請問是否可以提供一下國外寫好的碰撞的source code呢?或者是否可以提

供個好網站來參考~感謝~

我歷年的flash書籍


不知不覺flash書籍超過了17本 , 還有一些沒照到就留待回家整理完再合照好了



在此為各位簡介一下我使用的flash書籍

FlashMX2004 語法字典  博碩出版
as2.0語法全靠它了,每一部份細分的很清楚,查找很容易

ActionScript3.0 語法字典 博碩出版
相對as2.0那本這本編排比較不太好,要找一些東西分類上有些問題 ,3.0就靠它了

PHP for flash
其實市面上 php for flash就有3-4版本 , 後來還是最早期的 php for flash寫的最好
後面寫的內容都不是很推薦

Flash Actionscript2.0 RIA
這本很多觀念教學導正 , 很適合美工程式人員來看,沒有想像中的那麼"程式"

Flash MX (紅色那本)
這本很多特效可以參考,最重要是它最後面有介紹可以去flash邊框的軟體
我應該是為這個而買的,jugglv這套

Flash Lite 2.x 手機遊戲
如果你有可支援 flash lite2.0以上的手機千萬別錯過這好機會
打開你的手機 撰寫自己的介面與遊戲

Flash遊戲設計與製作
這本是介紹flash遊戲各種邏輯,是一本很重要的遊戲設計書籍
包含各種遊戲邏輯,物理學,數學,遊戲模式結構等等

Actionscript 互動多人遊戲
是在介紹線上遊戲 ,連線上的問題 , 同步與不同步解決等相關
如果你在做flash線上遊戲 要解決同步問題,瀰補時間差,一定要看這本

漏了一本,很好的書
A.D.A.M 出了一本叫"flash mx 介面呈現'
這本真的寫的太好了,如果初學者還不知道一些物件如何利用程式控制滑動加減速等相關
一定要看這本,絕對不會讓你失望!

  • 留言者: clara
  • Email:
  • 網址:
  • 日期: 2010-09-09 13:46:12
您好~我是一個剛要開始接觸學習flash和dreamweaver的新手,

想買書自學,想請教您有哪幾本書籍可以推薦參考的呢?感謝!!!




  • 留言者: clara
  • Email:
  • 網址:
  • 日期: 2010-09-21 16:44:55
您好~我主要是從事平面設計方面的工作,想增進關於網頁製作這部

份的知識學習,感謝您的回覆唷~我再來尋找適合的書籍!^ ^

flash game 國外開發資源站與教學




http://www.emanueleferonato.com/

1.內容包含作者豐富的開發遊戲資源經驗
2.開放遊戲code
3.遊戲設計的教學 (as2.0)

   是2.0 不過沒關係 看看它撰寫的邏輯 也是不錯的 !

Actionscript - 局部形變,凹凸透鏡效果





以下是凹凸透鏡效果資源教學:
http://www.emanueleferonato.com/2007/12/03/understanding-flash-displacement-map-filter/

範例載點:
http://www.emanueleferonato.com/downloads/mapping09.zip


displacement_map = new flash.filters.DisplacementMapFilter(bmp,
offset, channel1, channel2, x_mult, y_mult, mode);
bmp.draw(displace);

仔細研究一下,它主要結構是利用 flash.filters , 但邏輯物理結構是
利用灰階度變化 將要凹透形變的bg , 依據灰階度來做局部變型