首頁 後端開發 php教程 请问精通设计模式的高手,webgame的基本模式有关问题

请问精通设计模式的高手,webgame的基本模式有关问题

Jun 13, 2016 pm 01:46 PM
action trigger user

请教精通设计模式的高手,webgame的基本模式问题。
开发一个简单的网页游戏。所有对程序和对功能的要求,假定我们都能实现。现在的问题是对设计模式的选型和处理。

以下是我的初期设定:

基础分析:

一个虚拟玩家。 我的系统必须能提供UI,提供操作按钮。提供玩家属性、方法。

一个虚拟世界。 我的系统必须能构造一个比较完善的虚拟世界。有地图、城市、建筑、商店、住宅、物品、数值(资金、经验值、声望值、技能点)
  、背包、装备等等。这一切基于php+mysql+javascript实现。

玩家交互。 我的系统要拥有玩家互相交互的功能。可以执行各种交互操作。短信息,邀请战斗,控制战斗,多人战斗,共同完成任务。等等。

玩家与虚拟世界交互。 我的系统要拥有玩家能够进行操作的功能。可以执行各种功能操作。
出生,学习,移动,工作,商业(买卖,交换(含物品与资金、物品),自定义任务。),交流,战斗(一系列功能),
做任务(一系列功能加上时间和奖励的集合)。物品处理。资金处理。

定义:

我个人将以上内容定义为:
User(玩家操作的部分) Trigger(执行事件时需要先通过触发,虚类) Action(如移动,工作等都是事件,虚类) AbstractItem(地图、城市、道具等,都属于虚拟物品,虚类)

方法:
User: display() doAction() 
User仅仅只真实用户的操作。

Trigger:display()doAction()needTime()beginTime()endTime()
Trigger提供时间控制,Trigger的派生类,有立刻执行,倒计时执行,玩家交互执行。

Action:display()doAction()begin()Process()end()
Action提供事件的开始,过程,结束,Action的派生类,有移动,工作,战斗等等。

AbstractItem:display()get()lose()use()
AbstractItem构造了整个游戏中所有的虚拟物品。AbstractItem的派生类,如地图、城市等等,包括角色本身。


模式:
个人想法是User只是作为驱动。Trigger提供给User驱动的事件,并且控制Action的执行时间。AbstractItem提供所有Action相关的对应的对象。

这时候,User与Trigger好象是bridge模式,Action与AbstractItem也好象是brideg模式。Trigger与Action又象是Abstractfactory模式。

另外,需要有任务功能。个人认为任务就是一系列的Trigger组合。包括前续、后续等等。个人认为需要一个Task类,但不知道放Action里好,还是放Trigger里好,又或者是独立出来。

同时,由于是webgame,即时或半即时交互,通过ajax模拟。已经有专门的定时器(认为程序运行环境有这项功能)功能。
显示部分呢是web页面即UI包。可能需要语言包,和任务对话包。里面用到的图片也想做成图片包,当然图片包可能属于UI包。

问题:

1、最高层模式是什么模式或者选什么模式比较合理?
2、目前我自己认为的模式是否比较合理或者有更好的优化办法?
3、Task如何加入?
4、ajax与Trigger与定时器如何结合更好?(因为ajax属于纯功能了,但是Trigger又会用到。最关键的是一个是js,一个是php...)
5、UI包(可能会有多套UI)、语言包(可能需要多语种)、对话包等,如何合理的加入到游戏里?(数据库?填表?ini?)

请高手不吝赐教!不需要代码,只给思路即可。当然,有例子和代码更好。


------解决方案--------------------
没做过,ajax估计做不了
ajax是单项通信,连续请求量很大,看过用http长连接的



至于其他,你还是按面向对象思想来设计吧

对象 事件 属性 方法

------解决方案--------------------
说实话,我没看明白你的内容
和我对WEBGAME的想法不一样

还有,为什么一定要用设计模式呢?
我只引用一句话, 当您手中拿着一把锤子时,所有事物看上去都像钉子
------解决方案--------------------
我不否认模式的作用
只是,我认为要在理解模式下才去用,而不是死抠着用模式。。
------解决方案--------------------
个人觉得对话包作为action里比较好,作为atcion的属性或方法
action作为一个动作,触发时就给出或输出相关对话信息,这是系统级
用户级的直接输出就行了
------解决方案--------------------
关注...
------解决方案--------------------
学习,关注
------解决方案--------------------
服务端只需要保存各种对象状态即可.


其它的,就是JS架构的事.
别把MVC框架的那一套用过来. webgame 最重要的是执行效率,而不是开发效率....
------解决方案--------------------
MVC 只是我举的个例子.

对于webgame 

JS 就当是内存了.
PHP就当是硬盘了.

AJAX就当是数据存储操作了.

继续讨论 设计模式.

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

DJI Osmo Action 5 Pro:發售日期已定,零售商透露發售價格可能會低於 GoPro Hero 13 Black DJI Osmo Action 5 Pro:發售日期已定,零售商透露發售價格可能會低於 GoPro Hero 13 Black Sep 04, 2024 am 06:51 AM

大疆尚未確認推出新運動相機的計畫。相反,GoPro 今年似乎將領先其競爭對手,並透露將於 9 月 4 日推出兩款新的運動相機。

docker掛載目錄權限問題怎麼解決 docker掛載目錄權限問題怎麼解決 Feb 29, 2024 am 10:04 AM

在Docker中,掛載目錄的權限問題通常可以透過以下方法解決:使用-v參數指定掛載目錄時新增權限相關的選項。可以透過在掛載的目錄後面新增:ro或:rw來指定掛載目錄的權限,分別表示只讀和讀寫權限。例如:dockerrun-v/host/path:/container/path:roimage_name在Dockerfile中定義USER指令來指定容器中執行的用戶,以確保容器內部的操作符合權限要求。例如:FROMimage_name#CreateanewuserRUNuseradd-ms/bin/

新款 DJI Osmo 運動相機預計將於 2024 年夏季發布,與最近發布的 GoPro 和 Insta360 相媲美 新款 DJI Osmo 運動相機預計將於 2024 年夏季發布,與最近發布的 GoPro 和 Insta360 相媲美 Jul 01, 2024 am 09:49 AM

自 DJI 發布 Osmo Action 4(亞馬遜售價 299 美元)以來已經過去了近一年。從那時起,該公司開始專注於其他部門,包括新型 RS 相機萬向節。最重要的是,它還推出了各種無人機,例如 Avata

Insta360 Go 3S:新款便攜式 4K 運動相機發布,重量僅 39 克,支援 Apple Find My Insta360 Go 3S:新款便攜式 4K 運動相機發布,重量僅 39 克,支援 Apple Find My Jun 14, 2024 pm 06:05 PM

Insta360 發布了一款新的運動相機,這是繼Insta360X4(亞馬遜售價499.99 美元)之後的第二款運動相機,這是繼Insta360X4(亞馬遜售價499.99 美元)之後的第二款運動相機。錄製功能。

Vuex狀態管理之Action非同步操作詳解 Vuex狀態管理之Action非同步操作詳解 Aug 10, 2022 pm 03:29 PM

某些情況,我們希望在Vuex中進行一些非同步操作, 例如網路請求, 必然是異步的,這個時候怎麼處理呢?下面就給大家介紹Vuex狀態管理之Action異步操作,希望對需要的朋友有所幫助!

GoPro 發表新款 Hero 13 Black 運動攝影機,配備新鏡頭模組以及好奇的 GoPro Hero GoPro 發表新款 Hero 13 Black 運動攝影機,配備新鏡頭模組以及好奇的 GoPro Hero Sep 05, 2024 am 06:45 AM

GoPro 現在推出了年度運動相機更新。與近年來不同的是,該公司決定發布兩款車型。然而,它並沒有回歸 360 度相機,儘管去年這個時候它曾戲稱它將取代 Max wi

MySQL資料庫觸發器trigger怎麼使用 MySQL資料庫觸發器trigger怎麼使用 May 28, 2023 pm 05:31 PM

一、基本概念觸發器是一種特殊類型的預存過程,觸發器透過事件進行觸發而被執行觸發器trigger和js事件類似1、作用寫入資料表前,強制檢驗或轉換資料(確保資料安全)當觸發器發生錯誤時,異動的結果會被撤銷(事務安全)部分資料庫管理系統可以針對資料定義語言DDL使用觸發器,稱為DDL觸發器可以依照特定的情況,替換異動的指令insteadof(mysql不支持)2.觸發器的優缺點2.1、優點觸發器可透過資料庫中的相關表實現級聯變更(如果一張表的資料改變,可以利用觸發器實現對其他表的操作,使用者不知道)保證

Java Flink視窗觸發器Trigger怎麼使用 Java Flink視窗觸發器Trigger怎麼使用 May 03, 2023 pm 01:10 PM

定義Trigger確定視窗(由視窗分配器形成)何時準備好由視窗函數處理。每個WindowAssigner都帶有一個預設值Trigger。如果預設觸發器不符合您的需求,您可以使用trigger(…)。 Trigger原始碼publicabstractclassTriggerimplementsSerializable{/**只要有元素落⼊到目前窗⼝,就會調⽤該⽅法*@paramelement收到的元素*@paramtimestamp元素抵達時間.*@paramwindow元素所屬

See all articles