本文只有两个主题:
1、游戏设计清晰的必要
2、循环逻辑的代码设计

游戏设计:

未写代码先设计,这是一个非常重要的建议,如果在写代码前还不知道要开发一个什么游戏,那么会遇上很多问题,这些问题包括:
代码编写异常艰难
半路重构
工作量无法估计
预算严重超支

如果第一次开发游戏,那么就容易有两种情况,第一,游戏就那样还用的着设计吗,第二,无从下手,到底该怎么设计,第一种肯定考虑不周全,这是大多数情况,第二种比第一种更悲惨,启示无论那种情况,把问题罗列出来,到一起回答就可以解决很多,比如说,可以尝试回答如下问题:
游戏主题是什么?
是什么类型的游戏,RPG?SLG?FPS?MMO?
有没有剧情?
是单机的还是网络的?
单机的话,单人还是双人的?
网络的话,是局域网还是互联网?
游戏风格是什么样的?
如何操控?
2D还是3D?
打算让玩家玩多久到头?
都是什么玩家玩?
应用技术是那些?
目标终端是否可承载?
能够满足玩家什么需求?

确切来说,以上的问题仅仅是游戏设计的一个小部分,按照经验,可能为一个或者多个问题要研究很久,举例来说,游戏类型将制约代码的主要逻辑,比如说剧情类的游戏就必须要需要一个剧情脚本,而相应的策略游戏相比剧情脚本更加需要智能脚本,这样的情况下,你的代码和处理就需要有很多的考虑。
比如以前我们在开发网络游戏的时候,有一个项目地图是一个整体,不需要独立的地图编辑器去编辑,只需要在3DMAX中将物体名称起好,所有的行为对应到一张Excel表,如果是这样的一种模式,地图编辑工具就不需要花太大力气
可能所在的团队有策划的支持,可以省去很多力气,然而最佳的情况下是开发者就是策划,哈,也许会着砖头吧。

代码设计

首先得了解游戏运行的机制,在考虑更加深层次的东西,任何游戏都是一个循环体,就如下图所示:

可能觉得,这和Silverlight游戏开发有什么关系呢,这不是客户端游戏的开发做法吗?在游戏诞生的那天起,它本身就是一个循环,在程序中更加是一个循环体,这个基础理论是都适用,我们了解了循环机制,就可以依据这个流程设计代码,上面就够了吗?让我们展开来看看:

上面只是写了一个大概,如果你打算开发一个游戏的话,需要考虑的更多,如果转换到最简单的伪代码的话则是:
GameLoop
while( Game.State != emGameState.Exit)
{
switch(Game.State)
{
case emGameState.Init:
Game.Init();
break;
case emGameState.Loop:
Game.Loop();
break;
case emGameState.Exit:
Game.Exit();
break;
}
}

上面是一个最简单的代码设计,只需要在Game类中执行相应的逻辑即可,但是是否想过这样肯定不行,如果按照这个样子写下去,那么就不是一个完整的游戏,最多只是一个展示品,要做成一个完整的游戏,就得在主要循环里加入更多的行为,最好的方法莫过于先构想流程:

按照上面的流程图,那么循环代码可能是这样的:

while( Game.State != emGameState.Exit)
{
switch(Game.State)
{
case emGameState.Init:
Game.Init();
break;
case emGameState.Menu:
Game.Menu();
break;
case emGameState.Starting:
Game.Starting();
break;
case emGameState.Loop:
Game.LoopLogic();
break;
case emGameState.Rest:
Game.Rest();
break;
case emGameState.Exit:
Game.Exit();
break;
}
}

可是问题又来了,无端的循环是不是造成了系统浪费,确实,无论在什么技术上都是在考虑如何解决不必要的开销,而且我们用的Silverlight来开发,c#又是这么面向对象的语言,这么写太不高级,引入高级编程理论该如何做呢,这个部分以后再说,在这里抛砖引玉,看看下图也许会有启示:)

转载于:https://www.cnblogs.com/gnhao/archive/2013/01/18/2866280.html

Silverlight C# 游戏开发:未写代码先设计相关推荐

  1. Silverlight C# 游戏开发:方向键的组合,八方向实现

    Silverlight C# 游戏开发:方向键的组合,八方向实现 在游戏中,有一种情况是斜向移动,就是同时按下两个方向,形成斜线操作,在Win32GDI开发中,可以通过在逻辑循环里加入键盘状态判断取得 ...

  2. Silverlight C# 游戏开发:游戏循环体的五种设计方式

    我们在游戏设计和开发中,尤其是引擎开发中,逻辑循环是一个重要组成部分,循环决定了游戏的基础逻辑和运行方式,在不同的开发环境和语言下,对于循环的释义甚至相差甚远,那么我想和大家分享的是在Silverli ...

  3. Silverlight C# 游戏开发:面向对象在游戏中的实例(一)

    本系列所有代码都是使用Microsoft Visual Studio 2008开发,为基于Silverlight的游戏开发技术,如果您看完之后觉得不错,回复顶一下,万分感激:) 今天,我将带来一个非常 ...

  4. Silverlight C# 游戏开发:L5 3D基本的灯光

    Silverlight C# 游戏开发:L5 3D基本的灯光 我们在设计和开发3D的时候最常用的就是灯光,它有的时候比摄像机还要重要,一些花哨漂亮的表现主要通过灯光实现,相比场景中只有一个的主要摄像机 ...

  5. Silverlight C# 游戏开发:Flyer06小小的改进让游戏更有趣

    Silverlight C# 游戏开发:Flyer06小小的改进让游戏更有趣 今天这套主题,仅仅是通过改进让游戏更加有趣,游戏中的细节永远是耐人寻味,有的游戏团队为此付诸努力甚至成为整个项目的成功关键 ...

  6. Silverlight C# 游戏开发:项目开发实例和小技巧索引

    Silverlight C# 游戏开发:项目开发实例和小技巧索引 相比于技术文章而言,本索引中包含的都是独立的项目,争取按照每个独立的项目开发来编写系列,全部为原创,开发过程可能语无伦次,可能相当幼稚 ...

  7. Silverlight C# 游戏开发:Silverlight开发环境

    Silverlight C# 游戏开发:Silverlight开发环境 所谓工欲善其事必先利其器,没有好的工具也没有办法做事,我以前曾经想学习C++以外的程序语言,当时有java和C#来选择,当时考虑 ...

  8. Silverlight C# 游戏开发:L2 自定义模型导入

    Balder的Geometries里提供了很多的已有的模型,比如立方体.圆柱等等,但是我们在开发游戏的时候大多情况下都是使用3D设计工具制作自定义的3D模型,而本篇则介绍的是如何导入显示一个自定义的3 ...

  9. Silverlight C# 游戏开发:资源的处理,图像算法(二)

    Silverlight C# 游戏开发:资源的处理,图像算法(二) 也许说,图像算法很过时,那是许久以前的做法,可是作为Silverlight来说,我认为非常有用,这些有趣的处理就像是在Web上实现了 ...

最新文章

  1. 有一种道理叫“实践”
  2. Appium-关于appium的原生控件的 xpath 定位问题及常用方法
  3. 《人月神话》读后感1
  4. 阶段3 1.Mybatis_02.Mybatis入门案例_2.mybatis入门案例中的设计模式分析
  5. delphi 2010 mysql_delphi2010读取MySQL数据库TEXT类型乱码的解决方案
  6. 小型餐厅管理系统 java_小型餐饮管理系统的设计与实现(JSP,MySQL)
  7. 嵌入式系统架构设计师的理解
  8. 论K21O Draco开发板的概论
  9. 引气管理计算机失效,TAT信号无效导致ND上TAS-显示消失B737系列机务在线 - 认真、负责、细致 我们秉承的理念...
  10. 羚珑视频编辑器开发总结
  11. 水果生鲜类抖音号被大量封号
  12. Flink的双流join介绍
  13. 计算机组成原理——微程序实验
  14. C#经常用到的编程词汇
  15. Python简单绘图一
  16. docker安装(linux版)
  17. 苏州公交线路查询api-苏州公交状态实时跟踪
  18. 阿联酋esma认证_阿联酋发布ECAS认证计划
  19. WordPress模板Uigreat1.4设计资源主题
  20. SpringBoot 全国省市区三级联动 Ajax动态绑定select

热门文章

  1. HDU - 6438(贪心+思维)
  2. 正则表达式的兼容性问题
  3. Java并发编程艺术----读书笔记(二)
  4. 一种NVMe SSD友好的数据存储系统设计
  5. 【.net深呼吸】动态类型(高级篇)
  6. 模块可测性设计之无损插桩
  7. 2005年2月9日(星期三) 晚上,熱 - 大年初一,首次創作。
  8. node.js koa 实现长轮询
  9. 201771010101 白玛次仁 《2018面向对象程序设计(Java)课程学习进度条》
  10. 华硕fx60vm安装macOS10.13.6和Windows10双系统