经过了又一个月的开发工作,在此作进度报告。本月的工作可以划分为:完成Web导出工具开发、GDNative、以及新的粒子系统。

Web Export

Godot 现在有了一款实验性的导出工具,导出目标为WebAssembly 与 WebGL2。这要感谢eska的工作成果。这项功能需要在最新的Chrome或Firefox浏览器中进行测试,不过运行效果是真的好。它甚至可以让游戏在移动Web环境完美运行!

这里有一个小型的 platformer demo 供大家体验(记住只能在最新版本的Chrome或Firefox下运行!)。

GDNative

我们最近写了一篇关于 GDNative的文章。现在,让我来告诉你由Thomas Herzog (karroffel) 与Bojidar Marinov (bojidar-bg)开发的这项令人惊艳的新特性。它能产生许多好玩的事情:

  1. 添加用C++编写的Godot对象,而无需重新编译godot或编辑器。原理是在此之前要先创建一个模块,用于进行隐式重新编译一切。
  2. 可以优化游戏的任意部分,即用C++进行重写,也可用任何能编译成目标平台原生代码的语言进行编写,而且无需重新编译引擎或模板。
  3. 不用任何的重新编译即可绑定任意外部库(如SQLite、Steam等)。甚至可能从我们的Asset共享仓库下载这些绑定库。
  4. 使用官方库可以添加更多的Godot之外的导入导出格式。比如你可以从Asset Sharing平台下载一个FBX导入模块。就像直接支持各种素材一样,如Spine(译注:2D动画制作软件)使用自己的库。
  5. 添加外部脚本语言,如Lua、Python等。当然,不到GDScript那么好的整合程度,能发挥的作用会比较小,你要清楚这些限制。

这将是Godot 3.0一项令人惊艳的新副产物。

新的粒子系统

Godot 3.0会带来一套新的粒子系统。随着时代的变化,该系统最主要的区别是粒子系统完全通过GPU来处理的,这意味着什么呢?

速度!

你可以在那些过时的CPU或移动设备上运行几十万个粒子,或者在现代的桌面GPU上运行上百万个粒子。

定制化

我们提供了默认的粒子材质的同时,还可以让你完全通过Shader编写自己的粒子逻辑。还可以将例子系统转换到Shader以便手动进行进一步的修改。

更多能力

默认粒子材质允许使用时间变化曲线对所有参数进行调整(tweaking)。

同时它也不再仅限于公告牌(Billborad)。新的例子系统默认才用Mesh - 要想实现那种代理四面体(译注:你知道公告牌是什么效果就知道这个词什么意思了)的效果,只需要创建一个QuadMesh节点,并指定一个billboard 属性为true的材质即可。

由于可以通过GPU处理更多粒子,因此可以实现更精彩的效果如基于暴风算法的跟随(brute-forced trails):

并且最终能提供更强大的自发光体,如Box、Sphere及Mesh面或体。Mesh平面也可直接按法线发光:

我们也想让骨骼变换(skeletal transform)支持发光Mesh,不过虽然不是太复杂也得等到3.1啦 :(

Godot 3.0 alpha

截止本次报告为止,在3.0中计划的所有主要功能均已实现。我们很快会释出一个alpha构建版本,以便所有人开始体验及『捉虫』。敬请期待!

查看代码

如果你有兴趣看看代码里这几个特性是如何实现的,可以检出托管在GitHub上的 master 分支代码。

本文译自: https://godotengine.org/article/godot-30-progress-report-6

GODOT 3.0 开发进度汇报 #6的更多相关文章

  1. GODOT 3.0 开发进度汇报 #7

    由于原文采取了记流水账的方式,觉得没有必要照直翻译了,就只选取了其中的主要信息. GDNative C++ 语言绑定 进行了重写以便Godot更好的生成和处理脚本. D 语言绑定 也正在积极开发中. ...

  2. GODOT 3.0 开发快照版本 ALPHA1 释出

    经过将近一年的开发后,master 分支(即未来的Godot 3.0)所有功能特性接近完成,可以在Godot社区里进行更广泛的测试了.因此我们释出了第一个Alpha快照版本,供老用户体验.报告Bug. ...

  3. stm32上的Lava虚拟机开发进度汇报(3)

    感觉遇到一个瓶颈了,这几天都没有什么进度. 前几天把函数和一些最基本的伪指令实现了一下,能跑一点仅使用了绘图函数的lav,但是函数调用的问题一直没解决. 后来发现是粗心漏写了个++,解决了函数调用的问 ...

  4. stm32上的Lava虚拟机开发进度汇报(1)

    这几天我打算在stm32上做一个lava的虚拟机,只要160*80的黑白显示就行了,主要是想怀旧一下,嘿嘿. 目前的进度是图形显示和按键处理完成了,还有文本显示.文件处理.其他函数等. 当然,这都仅是 ...

  5. stm32上的Lava虚拟机开发进度汇报(4)

    这段时间颓废了,基本上没在弄这个东西. 主要是因为前段时间把代码基本上写完之后,但是问题一大堆,除了自己写的几个简单测试程序,其他现成的东西没有一个是能正常运行的,很是郁闷,也不知道哪里有错误,所以放 ...

  6. stm32上的Lava虚拟机开发进度汇报(2)

    现在已经基本完成了Lava主要函数的编写,但还是有几个问题没解决: 1.实心圆和实心椭圆 2.FillArea 3.GetWord 其中FillArea如果没有很好的解决方法就算了,GetWord用g ...

  7. [课程设计]Scrum 2.0 多鱼点餐系统开发进度(第二阶段项目构思与任务规划)

    [课程设计]Scrum 2.0 多鱼点餐系统开发进度 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题:餐厅到店点餐系统WEB ...

  8. JRainbow开发进度

    最新版本下载 http://pan.baidu.com/s/1c0GcDMg&third=15 相关信息 JRainbow的简单介绍:http://blog.csdn.net/jrainbow ...

  9. ASP.NET Core 1.0 开发记录

    官方资料: https://github.com/dotnet/core https://docs.microsoft.com/en-us/aspnet/core https://docs.micro ...

随机推荐

  1. [转]python pickle模块

    持久性就是指保持对象,甚至在多次执行同一程序之间也保持对象.通过本文,您会对 Python对象的各种持久性机制(从关系数据库到 Python 的 pickle以及其它机制)有一个总体认识.另外,还会让 ...

  2. [转]IC行业的牛人

    转载的:   说来惭愧,我所了解的牛人也只是大学教授,工业界的高手了解的还太少,虽然我对教育界的牛人了解的也不多,但这里也要牢骚几句,论坛上的人好像只是认识Gray,Razavi,Allen,Lee, ...

  3. Java 8 – Filter a null value from a Stream

    Java 8 – Filter a null value from a Stream package com.mkyong.java8; import java.util.List;import ja ...

  4. Python MySQLdb insert(插入) 封装

    def insert_data(dbName,data_dict): try: data_values = "(" + "%s," * (len(data_di ...

  5. django后台使用MySQL情况下的事务控制详解

    写在前面: 默认情况下django会把autocommit设置为“1”也就是说所针对数据库的每一次操作都会被做成“单独”的一个事务:这样的处理好处就在于它方便, 在编程的时候可以少写一些代码,比如我们 ...

  6. C# delegate 委托

    http://www.runoob.com/csharp/csharp-delegate.html

  7. HTML5学习笔记(十三):JavaScript函数

    函数定义 在JavaScript中,定义函数的方式如下: function abs(x) { if (x >= 0) { return x; } else { return -x; } } 上述 ...

  8. python-enumerate方法

    enumerate方法用于循环list或tuple,循环的时候可以得到索引值和当前索引的对象: letters = ['a', 'b', 'c', 'd', 'e'] for i, letter in ...

  9. Lua中的模块与module函数详解

    很快就要开始介绍Lua里的“面向对象”了,在此之前,我们先来了解一下Lua的模块. 1.编写一个简单的模块 Lua的模块是什么东西呢?通常我们可以理解为是一个table,这个table里有一些变量.一 ...

  10. html+css+jQuery+JavaScript实现tab自动切换功能

    tab1.html内容 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> & ...