近几年一直在用业余时间研究3D编程,研究的中期目标是建立一个实用的开源3D编程框架。3D编程技术最直接的应用是开发游戏,所以3D编程框架也就是3D游戏开发框架。在我看来,游戏是否好玩的关键是能否为玩家提供足够的“丰富度”,一个好的游戏应该是一个随着玩家的行为不断揭示新内容的世界。
  然而相对于早期的经典游戏,当代游戏在丰富度上的表现总是不能让玩家完全满意。以策略类游戏英雄无敌为例,在最为经典的3代作品中玩家可以在12个各具特色的种族间自由选择,在尚算佳作的4代中玩家可以选择8个种族,5代6个种族,6代、7代则更少(选择额外种族需要购买DLC)。以此为代表,当代的策略类游戏大多只有3-4个势力可供免费选择,玩家们感到游戏的画面越来越精致,但游戏的内容却越来越少。
  事实上,画面的进步正是游戏丰富度下降的重要原因,更好的画面要求更多的单位细节,而更多的单位细节意味着更多的开发时间和经费,在总成本不变的情况下,商业游戏开发者只能通过减少单位种类来平衡成本。讽刺的是由于硬件设备和玩家接受能力的限制,牺牲游戏丰富性所换来的单位细节往往不能被完全发挥。
  厂商们也在尝试各种变通的方式增加游戏的丰富度,比如使用随机生成的地图和具有自主能力的AI为玩家提供新鲜感;比如为玩家提供基础建筑元素,由玩家按照自己的意愿建造场景;比如将游戏的重心放在玩家的联机互动上,用人类的不确定性弥补游戏丰富性的不足。
  某种程度上,这些替代方案取得了成功,为厂商节约了大笔的设计经费。但是这种由计算机随机产生或由玩家不确定性产生的丰富度并不能作为游戏本身的内涵,缺少“核心丰富度”的游戏难以在创作者和玩家之间产生连接,并生成牢固的游戏文化。
  商业化游戏的另一个问题是过度的重复开发,由于人择原理的作用,每个游戏公司的小世界都需要包含最基础的“魔化野狼”、“强盗头领”之类大众单位,这些小世界的相互隔离导致每个开发团队都必须重复前人已经进行过的开发,这一点大大增加了独立游戏开发的难度。同时并存的多个小世界也会给玩家造成认知上的矛盾,比如玩过魔兽世界的玩家会疑惑“暗夜精灵”究竟应该住在森林里还是住在地底世界,又比如玩王者荣耀的玩家会很困惑荆轲到底是男是女。
  在我看来,相比于分裂的商业化开发,开源精神能够为创造具有足够丰富性的游戏世界提供一种根本的解决方案。可以建立一个保存各种游戏单位的图片、模型、声音、动画、文本、数值信息的开源单位数据库。对各种大量重复的单位提供一个基于投票的最优解决方案,对具有分歧的单位则保存不同的副本设计,开发者可以选取其中的一部分数据作为自己的单位数据库支持自己的游戏开发。
  建立这样的数据库一方面可以降低中小型开发团队和独立开发者的开发成本,另一方面可以借助开源的力量构建出单一厂商所无力承担的超大型游戏世界(比如仙侠小说中数量惊人的材料、法宝设定)。
  要建立一个这样的开源数据库需要两方面的准备,一是要编制一系列零基础的Web*数据库教程,让更多非专业编程者参与进来;另一方面则要全面的了解主流的游戏开发模式,设计出足够实用的数据结构。
  如无意外,六个月到一年的时间可以完成这两方面的准备,愿世界和平,留给我足够的时间。

近中期3D编程研究目标的更多相关文章

  1. UWP简单示例(二):快速开始你的3D编程

    准备 IDE:Visual Studio 2015 了解并学习:SharpDx官方GitHub 推荐Demo:SharpDX_D3D12HelloWorld 第一节 世界 世界坐标系是一个特殊的坐标系 ...

  2. UWP简单示例(二):快速开始你的3D编程

    准备 IDE:Visual Studio 开源库:GitHub.SharpDx 入门示例:SharpDX_D3D12HelloWorld 为什么选择 SharpDx? SharpDx 库与 UWP 兼 ...

  3. 开始3D编程前需注意的十件事

    http://www.csdn.net/article/2013-06-21/2815949-3d-programming 原文作者Vasily Tserekh是名3D编程爱好者,他发表了一篇博文&l ...

  4. QT Graphics-View 3D编程例子- 3D Model Viewer

    学习在Graphics-View框架中使用opengl进行3D编程,在网上找了一个不错的例子“3D Model Viewer”,很值得学习. 可以在http://www.oyonale.com/acc ...

  5. Qt 3D的研究(十):描边渲染(轮廓渲染)以及Silhouette Shader

    Qt 3D的研究(十):描边渲染(轮廓渲染)以及Silhouette Shader 之前写了两篇文章,介绍了我在边缘检測上面的研究.实际上.使用GPU对渲染图像进行边缘检測.前提是须要进行两遍渲染.前 ...

  6. WPF 3D编程介绍

    原文:WPF 3D编程介绍 上一篇文章简单的介绍了WPF编程的相关的内容,也推荐了本书.今天要来讲一下在WPF如何开展3D编程. 使用的xmal 和C#开发的时候:需要使用如下的关键要素: 1:摄像机 ...

  7. 3D编程模式:依赖隔离模式

    大家好~本文提出了"依赖隔离"模式 系列文章详见: 3D编程模式:开篇 本文相关代码在这里: 相关代码 目录 编辑器需要替换引擎 设计意图 定义 应用 扩展 最佳实践 更多资料推荐 ...

  8. Autofac的AOP面向切面编程研究

    *:first-child { margin-top: 0 !important; } .markdown-body>*:last-child { margin-bottom: 0 !impor ...

  9. USB编程研究之二(常见设备类型的GUID)

    在USB编程之前要事先了解一下GUID的概念. 应用其他网页中的定义: 全球唯一标识符 (GUID) 是一个字母数字标识符,用于指示产品的唯一性安装.在许多流行软件应用程序(例如 Web 浏览器和媒体 ...

随机推荐

  1. Tomcat中日志组件

    Tomcat日志组件 AccessLog接口 public interface AccessLog { public void log(Request request, Response respon ...

  2. Fiddler模拟Http请求

    Fiddler模拟Http请求 一.自定义Http请求:

  3. C# windows服务安装及卸载

    --C# windows服务安装及卸载   保存BAT文件  执行即可 @SET FrameworkDir=%WINDIR%\Microsoft.NET\Framework@SET Framework ...

  4. Hive 的collect_set使用详解

    Hive 的collect_set使用详解   https://blog.csdn.net/liyantianmin/article/details/48262109 对于非group by字段,可以 ...

  5. ztz11的noip模拟赛T2:查房

    链接: https://www.luogu.org/problemnew/show/U46611 思路: 这道题告你n-1条边就是骗你的 部分分也是骗你的 这道题连对边5分钟的事 一个点对另一个点有影 ...

  6. shiro使用框架,自定义过滤器

    1.shiro配置文件配置 <!-- Shiro Filter --> <bean id="shiroFilter" class="org.apache ...

  7. react 使用antd 按需加载

    使用 react-app-rewired 1. 安装react-app-rewired: 由于新的 react-app-rewired@2.x 版本的关系,你还需要安装 customize-cra. ...

  8. [示例] 用代码设置 ListView 颜色 (只适用 Win 平台,无需修改官方源码)

    如果可以使用代码随意设置 ListView 的颜色,而不用加载额外的 Style 及修改官方的源码,那该有多好?! 其实 Style 提供了很强了扩充性及可塑性,可以很容易的去操作它. 下面以 Lis ...

  9. 【原创】Dynamics CRM 2015/2016,以PDF的形式打开SSRS报表。

    基本步骤: 使用SSRS建立报表,以下的例子是以记录的GUID作为报表的参数 获取ReportSession 和 ControlId来调用报表 以PDF的形式预览报表 一.根据报表的名称获取报表的GU ...

  10. Navicat 报错1251连接不成功Mysql

    使用Navicat 连接数据库时候出现1251错误,解决方法. 1.首先打开mysql.exe,然后输入密码(mysql.exe可以在安装的位置搜索一下) 2.输入ALTER USER 'root'@ ...