近中期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 浏览器和媒体 ...
随机推荐
- rabbitmq关于guest用户登录失败解决方法
刚安装完rabbitmq,登录的时候出现了: login failed问题: 查看rabbitmq的文档,发现在3.3.1以后的版中,处于安全的考虑,guest这个默认的用户只能通过localhos ...
- Spring@PostConstruct注解和构造方法的调用顺序
先看下@PostConstruct的注解 * The PostConstruct annotation is used on a method that needs to be executed * ...
- 利用matplotlib绘画出二特征的散点图
实例的所有数据来源于吴恩达教授的机器学习数据,特此感谢.数据源可以前往course下载. 本文主要目地在于绘画二维的散点图,至于scatter的用法可以参见我之前的博客. import pandas ...
- PAT——1020. 月饼
月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼.现给定所有种类月饼的库存量.总售价.以及市场的最大需求量,请你计算可以获得的最大收益是多少. 注意:销售时允许取出一部分库存.样 ...
- DPDK+Pktgen 高速发包测试
参考博客 Pktgen概述 Pktgen,(Packet Gen-erator)是一个基于DPDK的软件框架,发包速率可达线速. 提供运行时管理,端口实时测量. 可以控制 UDP, TCP, ARP, ...
- HDFS的Write过程
hadoop中重要的组成部分HDFS,它所发挥的重要作用是进行文件的后端存储.HDFS针对的是低端的服务器,场景为读操作多.写操作少的情况.在分布式存储情况下,比较容易出现的情况是数据的损害,为了保证 ...
- Java 8-接口的默认方法和静态方法
Java 8-接口的默认方法和静态方法 Java 8使用两个新概念扩展了接口的含义:默认方法和静态方法.默认方法使得接口有点类似traits,不过要实现的目标不一样.默认方法使得开发者可以在 不破坏二 ...
- Linux下安装pip无法使用的情况
不知道有没有安装成功,首先先卸载软件 sudo apt-get purge --auto-remove python3-pip sudo apt-get update 然后在重新安装 sudo apt ...
- SQL引用DAL
步骤:https://www.cnblogs.com/grom/articles/8981116.html 异常: 解决方案: 执行 ALTER DATABASE [DBName] SET TRUST ...
- 查询表空间及已使用情況的SQL语句
语句一: select f.tablespace_name tablespace_name, round((d.sumbytes / 1024 / 1024 / 1024), 2) total_g, ...