我有一个几乎完全基于业务应用程序的背景- Web服务,调度程序,桌面和CRM系统的web前端,等等……
现在,几乎所有上述项目的基本原则都是相同的:
某种类型的数据访问层、业务逻辑层和UI。
显然,有些场景需要一些独特的东西,但通常都是N-Tier。
作为业余爱好,我想做一些游戏开发。我不期望有什么令人印象深刻的东西,因为我没有资源去致力于它,但一些挑战我一点的东西会很好。
我应该从我目前的经验中学到什么(如果有),我需要再次学习什么?
我假设,根据我所有的经验,不同类型的游戏会有不同的架构,但它们都是基于相同的核心原则吗?为了便于讨论,假设我正在构建一个简单的MUD (也许是一个自上而下的UI,就像以前的Zelda游戏一样)--这看起来像是我可以使用我的三层逻辑的东西--一个带有BLL和DAL的服务器,以及一个客户端UI --但我不太确定这是否正确--当然,使用实体框架似乎并不合适,因为访问数据库中的很多东西有非常多的开销,我可以想象性能将是一个问题--例如,我假设我不想经常使用Db来存储玩家的位置,如果他们每秒改变20+时间...
有没有专门针对游戏场景的模式和实践?
在创建UI之前开发后端系统是否可行(例如,在添加UI之前插入一个控制台应用程序,以允许我开发我想要的功能)。这是好的实践还是坏的实践?
简而言之,我不知道从哪里开始,我希望得到一些建议--特别是那些有经验的人。
大概唯一固定不变的是,我想要一个有中央服务器的多用户游戏。欢迎游戏建议。
发布于 2010-12-04 10:39:38
首先,游戏倾向于实时模拟
因此,游戏有更新的loops
(如果你没有模拟游戏(例如:“拼字游戏”,“文明”,大多数facebook游戏),这不是真的。mud不倾向于有太多的模拟,所以不清楚你的游戏是在哪一边)
因此在实践中,在高度模拟的游戏中,
小型/非持久性多人游戏(雷神,反击,星际争霸-可以在一台机器上运行的游戏):通过不使用数据层来解决这个问题(如果它们实现了保存,它们就会作为游戏状态的巨大转储)
大型多人游戏(mmos需要多台机器的游戏):将其持久数据存储用作只写管道(并用于恢复),然后将大量精力投入到数据分区方案中,以便模拟(即业务)逻辑可以在本地内存访问顺序上延迟的情况下获得所需的数据。
一些数据用于透视:如果一个“服务器”处理500个玩家,并且你的模拟速率是15 if,那么每个玩家每一次节拍都会获得每个玩家的.13ms。因此,如果你需要‘这个帧中火球了吗’需要<<.13ms,这对于网络往返或sql查询来说还不够长。是的,你可以在游戏设计中摆脱许多这样的问题--例如,“不要有冲突”解决了前面的例子。但到了某个时候,你就不再是一个模拟游戏了,哈。
第二个最大的区别是“图形”
图形编程与商业应用编程有很大的不同。虽然有时我认为所有的编程都是“在X格式中把数据放在A处,在Y格式中移到B处”,这适用于商业编程和图形编程,但在大多数情况下,图形编程的容错性要差很多个数量级。
(尽管顺便说一句,信封后面的快速计算将谷歌式的问题放在同一个桶里:
**:实际上,游戏不能移动那么多数据,所以图形编程的“诀窍”是跳跃“我们如何才能在每一帧都需要的地方获得千兆字节的图形数据”-加载屏幕是一个常见但不幸的答案:(
同样,如果你正在制作一个图形要求较低的游戏,这一点就不那么重要了。
因此,游戏倾向于以“游戏性/图形”为框架。
而不是"ui/logic/dal“。也就是说,当我从web-land过渡到游戏时,我对世界的3层看法(是的,当时我们只有3层)给我的项目带来了很多洞察力,并导致了针对游戏内容的“数据访问层”的开发,它在多个项目中都非常成功(解决了游戏世界的问题,比如从磁盘上获取东西,处理开发时版本控制,热加载等等)。
虽然无论游戏开发带你去哪里,都会有新的东西需要学习,但你以前的经验将帮助你一步步前进。
关于你的咨询请求,
我建议专注于一款设计与你的体验非常匹配的游戏。
如果你对数据库、网页和日程安排非常在行,可以做一个电子表格游戏:http://www.ogame.org/
如果您想要更多的游戏逻辑和模拟,可以制作一个可收集的纸牌游戏:http://apps.facebook.com/warstorm/
如果您想要更复杂的玩家交互,请查看mmo-scrabble:http://wordsquared.com/
如果你想学习图形,可以从单人游戏开始:)
使用你熟悉的技术和技术,看看它们从哪里开始分解,然后回到这里并发布你的问题和发现。
玩得开心!
https://stackoverflow.com/questions/4349936
复制相似问题