Skip to content

GDevelop与Google Summer of Code

Google Summer of Code是一个全球性的项目,旨在吸引更多的贡献者参与开源软件开发。贡献者在夏季与开源组织合作进行编程项目(项目长度取决于项目)。

Google Summer of Code

在2020年,GDevelop是指导组织之一。我们也正在申请成为2024年的组织。如果您有兴趣与我们合作,请继续阅读!

注: GSoc 2020项目的结果可以在此结果页面上查看。

点子清单

提示: 这些点子并非穷尽所有可能。欢迎提出您自己的想法!或将多个点子结合成您自己的想法。描述足够通用,以便您可以提出不同的方法、目标和延展目标。每个列出的点子都有导师可供支持。

3D物理引擎

GDevelop包括一个2D物理引擎,但尚未具有3D物理引擎。调查最适合我们使用案例的物理引擎,并将其集成为一个新行为。调整游戏引擎以支持物理引擎所需的一切。一个可工作的实现,即使不包括3D物理引擎的所有功能,也将足够。

  • 技能: JavaScript,TypeScript
  • 难度: 中等
  • 项目规模: 90小时
  • 可能的导师: Alex,Clem,D8H,4ian
  • 预期结果: 可应用于对象的可工作行为,至少包括静态和动态对象+几个基本属性和操作/条件。

允许在编辑器中直接编辑瓦片地图

GDevelop支持使用Tiled或LDtk构建的瓦片地图-这两个编辑器专门用于创建大型瓦片地图。但对于许多用户来说,在GDevelop中直接编辑瓦片地图将更直观。初学者可以在场景编辑器中直接开始绘制全新地图。高级用户可以在GDevelop内对其地图进行快速修复,并继续使用外部编辑器进行较大的更改。

此项目旨在为GDevelop带来一个非常简单的瓦片地图编辑功能。这是许多用户要求的功能!

  • 技能: JavaScript,TypeScript
  • 难度: 中等
  • 项目规模: 175小时
  • 可能的导师: Alex,Clem,D8H,4ian
  • 预期结果: GDevelop场景编辑器中的瓦片地图的可工作基本编辑器(显示瓦片集,选择瓦片,绘制)

重构碰撞、对象位置处理和对象过滤

调查碰撞处理、距离条件和射线投射(对于未使用物理引擎行为的对象)的性能,并实施优化,使它们可以避免遍历所有对象。通过将这种情况推广到所有可能使用此功能的行为来完成此调查。

  • 技能: JavaScript,对算法有良好的了解或兴趣
  • 类型: 探索性
  • 难度: 中等/困难
  • 项目规模: 90小时
  • 可能的导师: Clem,D8H,4ian
  • 预期结果: 优化的概念验证或可工作的实施。

在界面中实现全局撤销重做

在这个项目中,您将在整个应用程序中设计和设置一个全局撤销/重做系统,甚至可以作为以后的实时协作的基础。这意味着可以使用两个应用程序范围的撤销/重做快捷方式或按钮来撤消(或重新应用)应用程序中进行的任何更改。对于用户来说,这是一个巨大的改进,可以使应用程序的使用效率大大提高。

这也是一个探讨“无冲突复制数据类型”(Conflict-free Replicated Data Type)的良好机会,因为这个概念与全局撤销/重做系统所需的更改有关。

  • 技能: JavaScript,C++,TypeScript
  • 难度: 困难
  • 项目规模: 90小时
  • 可能的导师: Clem,Alex,D8H,4ian
  • 预期结果: 至少一个编辑器的改进撤销/重做功能。

重构游戏引擎以在Web Worker中运行

这个项目是关于重建游戏引擎,使其可以在Web Worker中运行。使用PixiJS进行的渲染可以与逻辑分离(部分在引擎中已实现!)。一旦完成,逻辑可以在Web Worker中运行,从而提高所有游戏的性能。以后的游戏甚至可以使用这种方法在服务器上运行,实现多人游戏-这是用户强烈要求的功能。

  • 技能: JavaScript,TypeScript
  • 难度: 困难
  • 项目规模: 175小时
  • 可能的导师: D8H,4ian
  • 预期结果: 游戏引擎在Web Worker或服务器中运行。

改进互动教程,以便社区可以创建自己的教程

我们已经创建了一个框架,可以在GDevelop内直接运行互动教程(您可以在“入门”中尝试)。在这个项目中,教程可以在GDevelop中的界面中列出,选择一个后,将播放该教程。社区将能够通过以JSON格式提交教程来创建新的教程。

  • 技能: JavaScript
  • 难度: 简单
  • 项目规模: 90小时
  • 可能的导师: Clem,Alex
  • 预期结果: 列出互动教程的界面以及一个简单的基本界面来编辑现有教程并在应用程序中尝试它们。

改进调试器和性能分析器

GDevelop具有在预览游戏时可以使用的调试器和性能分析器。调试器可以列出对象,公开诸如变量之类的内容,并允许编辑它们。性能分析器可以测量游戏每个部分的时间。两者仍然比较原始,所以我们可以改进用户界面,使其更容易过滤对象,添加数据的导出/导入功能,实时显示信息,显示图表等。

  • 技能: React.js(用于编辑器),JavaScript(用于引擎),WebSockets(编辑器和游戏之间的通信)
  • 难度: 简单
  • 项目规模: 175小时
  • 可能的导师: Clem,D8H
  • 预期结果: 重新设计的调试器,显示至少实时指标。### 重构和更快速的代码生成

在GDevelop中,代码生成是一个非常重要的环节。这个项目将重新设计事件的代码生成,使其更清晰、更快速,并解锁潜在的新功能,比如改进的对象处理,避免不必要的工作,并提升运行时性能。这可以看作是对轻量级编译器的工作——之后可以乐在其中并着手开展更大的工作!

  • 技能: C++(必备以深入现有代码库),JavaScript(用于生成的代码),对算法和数据结构有很好的理解。
  • 难度: 中等
  • 项目规模: 90 小时
  • 可能的导师: 4ian, D8H
  • 预期结果: 重新设计的代码生成比当前更快,并记录可能的其他改进(如果时间太短无法实现)。

支持 9 Panel Sprite 和 Tiled Sprite 对象的动画

这些“Panel Sprite”和“Tiled Sprite”对象无法进行动画。我们希望通过重建游戏引擎,使它们能够进行动画,重建它们的编辑器,以便可以像精灵一样制作和设置动画。这将允许实现一些很好的效果,比如动画平台、背景、熔岩地板等。这将涉及重构游戏引擎中的动画类,并重构编辑器代码库中的动画组件。

  • 技能: JavaScript(掌握PixiJS是一个优势),React。
  • 难度: 中等
  • 项目规模: 175 小时
  • 可能的导师: 4ian, D8H
  • 预期结果: 重新设计的代码生成比当前更快,并记录可能的其他改进(如果时间太短无法实现)。

你自己的想法

欢迎提出你自己的想法和对现有想法的变体!请参考路线图了解用户的需求。

候选方法?

  • 首先,对GDevelop有一定的了解。一种方法是使用该应用程序。您还可以尝试在GitHub问题跟踪器上解决问题(或添加一个简单的新功能)。查看初学者是什么

  • 需要搭建您的开发环境。_README_会解释一切!

  • 找到一个看起来有趣的问题。可能是好的起始问题或其他问题。

  • 做一些研究,尝试一些方法,如果需要帮助,请在论坛或GitHub问题本身上提问。

  • 如果有趣的东西,评论问题或打开一个_拉取请求_!准备所有必需的测试和检查,解释您做了什么,审核人员应该给您一些建议。

  • 寻找解决问题是一个好的第一步,实际上会在第二部分:制定一个提案!

  • 阅读此页面描述了您的建议的建议结构

  • 在Google Summer of Code网站上准备您的提案 🤓。

👍 感谢你的建议!