程序员最糟糕的敌人:未来的证明

您认为以下哪项比较难?

  • 解决编码问题
  • 解决更大的编码问题

是的,我也是。

编程是关于解决问题的。 当您尝试对代码进行过时验证时 ,您正在有效地解决不必要的难题和更大的问题。

为什么不必要地加重? 因为很有可能您对未来的假设是错误的!

我喜欢制作游戏开发工具。 我喜欢做能创造东西的东西。 因此,有时我只是在不需要工具的情况下制作工具!

到目前为止,一切都很好。 但是在DeMagnete开发过程中,我们决定使用某种图形编辑器工具来帮助游戏设计师配置拼图逻辑。

当时我想:“那太好了,因为我之前已经创建了一个图形编辑器! 我们就用吧!”。

事实证明,这就像快餐三明治一样差。

问题是,当我开始不实际使用它时,我做出了一些设计决定,这些决定在实际项目中使用时会给我们带来困扰。

错误的决定

  • 试图使一切都可扩展
  • 使用了模糊的图形绘图Unity API

不良后果

  • 高度可扩展的部分正在尝试做简单的事情时出现(即使那样,它也不是那么可扩展,因为当时我不知道可配置会带来什么真正的好处)
  • 没有放大/缩小
  • 链接节点非常困难,因为插槽很小(没有API可以更改)
  • 序列化非常困难,因为我们必须将模型与Unity API的模型进行同步

让那些从不重写解决方案实现的人投下第一石!

掌握了第一个API的难点以及我们的工具可以解决的确切需求的知识之后,我们终于可以寻求一个更强大的解决方案。

一个周末,我能够从头开始草拟一个新的图形编辑器工具,因为这次我知道了我的目标。 因此,该API变得更易于实现和使用。

好的决定

  • 保持API简单明了
  • 使用标准的编辑器GUI工具并滚动我们自己的图形绘制API(它比看起来简单!)

好的结果

  • 新的节点脚本超级紧凑且富有表现力
  • 可以实现放大/缩小!!!
  • 由于我们对插槽鼠标碰撞函数进行了编码,因此连接节点更容易
  • 序列化更健壮(一旦我们找出一些初始问题哈哈),因为我们不需要保持两个状态同步(图的视图和模型)

不错的附加功能

  • 单击其关联节点时,在层次结构中选择GameObjects
  • 当层次结构中的选择发生更改时对节点进行Ping操作
  • 节点可以具有任何RGB颜色(在必须使用枚举之前–疯狂吧?)
  • 更容易更改和设置边缘颜色的动画
  • 我们做了一个“切割边缘”的事情,像ShaderForge一样大规模地去除了边缘(非常酷而且有用)

我们两次解决了相同的问题。 但是第二种实现要好得多,总体上更好。

唯一改变的是,当我第一次对该工具进行编码时,我并没有真正的必要 ,过去也没有。

这是我在我制作的其他工具/代码中没有实际用例的一种模式。 在没有任何种类的重写情况下 ,我实际上没有重复使用这些工具中的任何一个!

就是这样了! 将您的代码保存在当前状态!

**哦! 期望这个新的图形编辑器功能不久将在BitStrap上可用!