请问精通设计模式的高手,webgame的基本模式有关问题
请教精通设计模式的高手,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就当是数据存储操作了.
继续讨论 设计模式.

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

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

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

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

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

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

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

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

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