近中期3D编程研究目标
近几年一直在用业余时间研究3D编程,研究的中期目标是建立一个实用的开源3D编程框架。3D编程技术最直接的应用是开发游戏,所以3D编程框架也就是3D游戏开发框架。在我看来,游戏是否好玩的关键是能否为玩家提供足够的“丰富度”,一个好的游戏应该是一个随着玩家的行为不断揭示新内容的世界。
然而相对于早期的经典游戏,当代游戏在丰富度上的表现总是不能让玩家完全满意。以策略类游戏英雄无敌为例,在最为经典的3代作品中玩家可以在12个各具特色的种族间自由选择,在尚算佳作的4代中玩家可以选择8个种族,5代6个种族,6代、7代则更少(选择额外种族需要购买DLC)。以此为代表,当代的策略类游戏大多只有3-4个势力可供免费选择,玩家们感到游戏的画面越来越精致,但游戏的内容却越来越少。
事实上,画面的进步正是游戏丰富度下降的重要原因,更好的画面要求更多的单位细节,而更多的单位细节意味着更多的开发时间和经费,在总成本不变的情况下,商业游戏开发者只能通过减少单位种类来平衡成本。讽刺的是由于硬件设备和玩家接受能力的限制,牺牲游戏丰富性所换来的单位细节往往不能被完全发挥。
厂商们也在尝试各种变通的方式增加游戏的丰富度,比如使用随机生成的地图和具有自主能力的AI为玩家提供新鲜感;比如为玩家提供基础建筑元素,由玩家按照自己的意愿建造场景;比如将游戏的重心放在玩家的联机互动上,用人类的不确定性弥补游戏丰富性的不足。
某种程度上,这些替代方案取得了成功,为厂商节约了大笔的设计经费。但是这种由计算机随机产生或由玩家不确定性产生的丰富度并不能作为游戏本身的内涵,缺少“核心丰富度”的游戏难以在创作者和玩家之间产生连接,并生成牢固的游戏文化。
商业化游戏的另一个问题是过度的重复开发,由于人择原理的作用,每个游戏公司的小世界都需要包含最基础的“魔化野狼”、“强盗头领”之类大众单位,这些小世界的相互隔离导致每个开发团队都必须重复前人已经进行过的开发,这一点大大增加了独立游戏开发的难度。同时并存的多个小世界也会给玩家造成认知上的矛盾,比如玩过魔兽世界的玩家会疑惑“暗夜精灵”究竟应该住在森林里还是住在地底世界,又比如玩王者荣耀的玩家会很困惑荆轲到底是男是女。
在我看来,相比于分裂的商业化开发,开源精神能够为创造具有足够丰富性的游戏世界提供一种根本的解决方案。可以建立一个保存各种游戏单位的图片、模型、声音、动画、文本、数值信息的开源单位数据库。对各种大量重复的单位提供一个基于投票的最优解决方案,对具有分歧的单位则保存不同的副本设计,开发者可以选取其中的一部分数据作为自己的单位数据库支持自己的游戏开发。
建立这样的数据库一方面可以降低中小型开发团队和独立开发者的开发成本,另一方面可以借助开源的力量构建出单一厂商所无力承担的超大型游戏世界(比如仙侠小说中数量惊人的材料、法宝设定)。
要建立一个这样的开源数据库需要两方面的准备,一是要编制一系列零基础的Web*数据库教程,让更多非专业编程者参与进来;另一方面则要全面的了解主流的游戏开发模式,设计出足够实用的数据结构。
如无意外,六个月到一年的时间可以完成这两方面的准备,愿世界和平,留给我足够的时间。
近中期3D编程研究目标的更多相关文章
- UWP简单示例(二):快速开始你的3D编程
准备 IDE:Visual Studio 2015 了解并学习:SharpDx官方GitHub 推荐Demo:SharpDX_D3D12HelloWorld 第一节 世界 世界坐标系是一个特殊的坐标系 ...
- UWP简单示例(二):快速开始你的3D编程
准备 IDE:Visual Studio 开源库:GitHub.SharpDx 入门示例:SharpDX_D3D12HelloWorld 为什么选择 SharpDx? SharpDx 库与 UWP 兼 ...
- 开始3D编程前需注意的十件事
http://www.csdn.net/article/2013-06-21/2815949-3d-programming 原文作者Vasily Tserekh是名3D编程爱好者,他发表了一篇博文&l ...
- QT Graphics-View 3D编程例子- 3D Model Viewer
学习在Graphics-View框架中使用opengl进行3D编程,在网上找了一个不错的例子“3D Model Viewer”,很值得学习. 可以在http://www.oyonale.com/acc ...
- Qt 3D的研究(十):描边渲染(轮廓渲染)以及Silhouette Shader
Qt 3D的研究(十):描边渲染(轮廓渲染)以及Silhouette Shader 之前写了两篇文章,介绍了我在边缘检測上面的研究.实际上.使用GPU对渲染图像进行边缘检測.前提是须要进行两遍渲染.前 ...
- WPF 3D编程介绍
原文:WPF 3D编程介绍 上一篇文章简单的介绍了WPF编程的相关的内容,也推荐了本书.今天要来讲一下在WPF如何开展3D编程. 使用的xmal 和C#开发的时候:需要使用如下的关键要素: 1:摄像机 ...
- 3D编程模式:依赖隔离模式
大家好~本文提出了"依赖隔离"模式 系列文章详见: 3D编程模式:开篇 本文相关代码在这里: 相关代码 目录 编辑器需要替换引擎 设计意图 定义 应用 扩展 最佳实践 更多资料推荐 ...
- Autofac的AOP面向切面编程研究
*:first-child { margin-top: 0 !important; } .markdown-body>*:last-child { margin-bottom: 0 !impor ...
- USB编程研究之二(常见设备类型的GUID)
在USB编程之前要事先了解一下GUID的概念. 应用其他网页中的定义: 全球唯一标识符 (GUID) 是一个字母数字标识符,用于指示产品的唯一性安装.在许多流行软件应用程序(例如 Web 浏览器和媒体 ...
随机推荐
- ASP.NET Core 中的 WebSocket 支持(转自MSDN)
本文介绍 ASP.NET Core 中 WebSocket 的入门方法. WebSocket (RFC 6455) 是一个协议,支持通过 TCP 连接建立持久的双向信道. 它用于从快速实时通信中获益的 ...
- ASP.NET MVC & WebApi 中实现Cors来让Ajax可以跨域访问 (转载)
什么是Cors? CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing).它允许浏览器向跨源服务器,发出XMLHttpReq ...
- 设计模式 - 抽象工厂模式(abstract factory pattern) 具体解释
抽象工厂模式(abstract factory pattern) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/2709 ...
- Ajax缓存
一.Ajax缓存的好处 这种设计使客户端对一些静态页面内容的请求,比如图片,css文件,js脚本等,变得更加快捷,提高了页面的响应速度,也节省了网络通信资源. 二.Ajax缓存的不足 Ajax缓存虽然 ...
- Java监听器原理及实例
一.监听器原理 监听器是基于事件驱动的,用于对操作事件进行监听.处理,是观察者设计模式的应用 监听器三元素: 2.1 事件源:事件发生的源头 2.2 事件:对事件进行抽象.封装 2.3 监听器:用于监 ...
- Eclipse操作Servlet入门案例,创建类无法实现Servlet接口和继承HttpServlet类
问题描述: 从昨天下午到今天中午,这个问题被缠绕了良久.百度了很多,却都没有一言命中要害. 首先,还是基于对Web的理解. 第一:建立的是Dynamic Web Project: 第二:然后需要 ...
- JS如何截取-后面的字符串
str为要截取的字符串 通过获取字符串中“-”的坐标index,其他特殊字符以此类推 var index=str.lastIndexOf("\-"); str=str.subst ...
- redefinition of class解决
垃圾玩意我在这儿翻车了. 编译器:Code::Block(懒得用VS,而且又太大了,CB小,而且也就一个控制台程序) Note to myself: 写完一个class的文件定义,编译,通过之后: 1 ...
- C++_构造函数与析构函数
构造函数与析构函数 OOP第二课 1 构造函数 1.1 构造函数具有一些特殊的性质 1.2 定义构造函数的一般形式 1.3 利用构造函数创建对象 2 成员初始化表 3 缺省参数的构造函数 4 重载构造 ...
- docker之MySQL主从复制
MySQL主从复制 主服务器 配置文件目录 mkdir /var/lib/mysql/master/conf.d 数据存储目录 mkdir var/lib/mysql/master/data 配置my ...