Bas*_*sic 12 architecture game-engine
我的背景几乎完全基于业务应用程序 - Web服务,调度程序,桌面和Web前端到CRM系统等......
现在几乎所有上述项目的基本原则都是相同的:
某种数据访问层,业务逻辑层和UI.
显然某些场景需要一些独特的东西,但总的来说它一直是N层.
我想做一些游戏开发作为一种爱好.我没有期待任何令人印象深刻的东西,因为我没有足够的资源来投入它,但是有点挑战我的东西会很好.
我应该从目前的经验中学到什么课程(如果有的话),我还需要学习什么?
我假设根据我的经验,不同类型的游戏将有不同的架构,但它们都是基于相同的核心原则吗?为了争论,让我们说我正在构建一个简单的MUD(也许是一个像旧的Zelda游戏一样的自上而下的UI) - 这似乎是我可以拥有我的3层逻辑的东西 - 一个带有BLL和DAL和客户端用户界面 - 但我不太确定这是否正确 - 当然使用实体框架似乎不合适,因为在Db中访问大量内容会产生大量开销,我认为性能将会成为一个问题 - 例如,我假设我不想经常使用Db存储玩家位置,如果他们改变20次/秒......
是否有针对游戏场景的模式和实践?
在创建UI之前开发后端系统是否可行(例如,插入控制台应用程序以允许我在添加UI之前开发我想要的功能).这是好/坏的做法吗?
简而言之,我不知道从哪里开始,并希望得到一些建议 - 特别是那些有经验的人.
关于唯一一件事就是我想要一个带有中央服务器的多用户游戏.游戏建议欢迎.
(如果你没有模拟(例如:'scrabble','文明',大多数facebook游戏),这不是真的.泥do不会有太多的模拟,所以它不清楚你的哪一边围栏游戏正在开启)
因此在实践中,高仿真游戏,
小型/非持久性多人游戏(地震,反击,星际争霸 - 可以由一台机器运行的游戏):通过没有数据层来解决这个问题(如果它们实现了保存,那么它们就像游戏状态的巨大转储一样)
大型多人游戏(mmos - 需要多台机器的游戏):将其持久数据存储用作只写管道(并用于恢复),然后将大量精力投入到以模拟方式划分数据的方案中(即业务)逻辑可以根据本地内存访问的顺序获得延迟.
透视的一些数字:如果一个'服务器'处理500个玩家并且你的模拟速率是15hz,那么每个玩家每个玩家得到0.13ms的cpu.所以,如果你需要'火球击中任何东西,这个框架'需要<<.13ms,不足以进行网络往返或SQL查询.是的,你可以在游戏设计中解决许多这些问题 - 例如'没有碰撞'解决了前面的例子.但在某些时候,你不再是一个模拟游戏,嘿.
图形编程与业务应用程序编程完全不同.虽然我有时会把所有的编程都想象为"以X格式将数据放到位A并将其转换为格式为Y的B",这适用于商业和图形编程,但图形编程在很大程度上要宽容许多个数量级.
(虽然顺便说一句,快速回退信封计算器会在同一个桶中放置谷歌式问题:
**:实际上,游戏无法移动那么多数据,因此图形编程的"技巧"正在跳过"我们如何获得需要每帧的千兆字节图形数据的箍"与现实只是实际移动/操纵一帧的兆字节' - 加载屏幕是一个共同但不幸的答案:(
如果您正在制作具有低图形要求的游戏,那么这又不太相关.
而不是"ui/logic/dal".话虽这么说,当我从网络地转变为游戏时,我对世界的三层观点(是的,我们当时只有3层)我感觉对我们的项目有很多了解,并导致了我们的发展一个用于游戏内容的"数据访问层",它在多个项目中非常成功(解决游戏世界的问题,比如从磁盘上取下东西,处理开发时版本,加载等等).
虽然在游戏开发的任何地方都会有新的东西需要学习,但您之前的经验将帮助您顺利完成.
我建议着眼于游戏与设计,并密切配合您的体验.
即如果您对数据库,网页和日程安排非常称职,请制作电子表格游戏:http: //www.ogame.org/
如果你想要更多的游戏逻辑和模拟,制作一个可收集的纸牌游戏:http: //apps.facebook.com/warstorm/
如果您想要更复杂的玩家互动,请查看mmo-scrabble:http://wordsquared.com/
如果您想学习图形,请从单人游戏开始:)
使用您熟悉的技术和技术,看看他们开始分解的地方,然后回到这里并发布您的问题和发现.
玩得开心!