GithubHelp home page GithubHelp logo

flicker-studio / rimeeditor Goto Github PK

View Code? Open in Web Editor NEW
2.0 0.0 0.0 11.15 MB

A runtime Level Editor plugin in Unity

Home Page: https://moon-manual.pages.dev/

License: MIT License

C# 88.98% ShaderLab 9.43% HLSL 1.59%
game-level level-editor unity3d unity3d-plugin level-design unity-package unity-plugin

rimeeditor's Introduction

ProJect-Moon Logo ProJect-Moon

Help Docs Unit Test Static-Badge

TODO

  • Build the basic framework and design the coding style.
  • Multi-parameter player controller.
  • Polygoncollider2D needs to be generated from the mesh, and concave polygons need to be supported.
  • Accurate clipping, and the minimum number of game objects mounted.
  • Add move following and rotation following states to the SlicerController.
  • The camera controller, based on Cinemachine cameras, requires enough pithy.
  • The AI of game NPCS requires high scalability and state-based production.
  • Optimal handling of physical collisions in which multiple objects physically form an assembly.
  • It can detect complex physical collisions without using rigid body components.
  • Portal, Total War Simulator like level editor, edit the level while the game is running.

Project milestone

  • The algorithm of generating polygoncollider2D mesh based on mesh triangle is completed, and the performance is good, and it supports concave polygon.

    • The core idea of the algorithm is to find all triangles according to mesh and make them two-dimensional, and remove redundant, intersecting triangles and vertices that do not form a triangle. Finally, a greedy algorithm is used to generate polygoncollider2D. I am glad that Unity mesh models are already triangulated, which saves me a lot of trouble.

    ——2023.9.11

CreatPolygonCollider

  • Very accurate slicer box, and the parameters are very concise, the code logic is good.

    • Based on Ezy-Slice. A slicer box is generated based on some mathematical and linear algebra calculations, and the object pool framework is used. So far, slicer box is working very well.

    ——2023.9.16

SlicerBox

rimeeditor's People

Contributors

astoragray avatar morsiusiurandum avatar nicoier avatar matooryouta avatar

Stargazers

 avatar  avatar

rimeeditor's Issues

Milestone: 完成小机器人的功能实现

Type

创建 (以当前标题创建一个新的里程碑)

Title

完成小机器人的功能实现

Due date (optional)

2023/12/29

Description

完成小机器人的相关功能,包括寻路、交互、状态等等

Milestone: 音效系统实现

Type

创建 (以当前标题创建一个新的里程碑)

Title

音效系统实现

Due date (optional)

2023/12/31

Description

完成游戏的音效系统框架的实现,包括BGM、Collision Sound、Animation Sound、Environment Sound、UI Sound,并且基于Audio Mixer组件实现,支持多声道,声音渐入和渐出。Collision和Animation、Environment 为3D音效。

feat: 完成关卡编辑器的数据的读写(JSON)

问题简述

完成将DataManager中的LevelData列表存为JSON数据,并且存储在文件夹中

实现方案

  • 完成保存为JSON文件的算法
  • 可以考虑使用Unitask来完成
  • 保存数据在Application.persistentDataPath中,或者更好的路径
  • 新的UI页面为选择关卡,包括一个Vertical Group的关卡列表,并且能够滚动,能够创建关卡和删除关卡,这个列表读取路径下保存的JSON文件。并且可以给关卡重命名

Chore: 完善议题分类

简述

将议题示例分为开发与修复两类,并添加任务议题指引

任务列表

  • Feat: 添加BUG模板
  • Feat: 添加Feat模板
  • Chore: 更好的创建指引

BUG : 旋转柄XYZ位置超出float.Max

问题简述

在拖拽旋转柄时,会造成值特别大的BUG

实现方案

  • 在RotationAxisDragState中修复这个BUG
  • 不引入新的BUG
  • 修复BUG后保持一个良好的代码结构

Milestone: 完成相机控制器

Type

创建 (以当前标题创建一个新的里程碑)

Title

完成相机控制器相关功能

Due date (optional)

2023/12/31

Description

No response

Feat : 完成hierarchy面板

问题简述

实现hierarchy面板功能

实现方案

  • 映射场景物体
  • 可以执行选择、删除操作
  • 能跳转到物件仓库面板
  • 完成物件数据类型

feat: 裁切框控制器完善

问题简述

完成裁切框跟随鼠标旋转的功能

实现方案

  • 删除原来的旋转跟随状态
  • 实现裁切框跟随鼠标在Z轴上旋转,并且能一边跟随玩家移动一边旋转 演示视频
  • 保持良好的代码结构

完成裁切框的移动跟随和旋转跟随状态

1.添加两个状态到SlicerController: SlicerMoveFollowState和SlicerRotationFollowState。它们都继承自SlicerMainMotionState。

2.为了在跟随位置时保持水平距离,需要提供一个可调节的距离参数。这个参数应该写入SlicerProperty,并且应该使用SlicerInformation来取得这个参数。

3.在MoveFollowState移动过程中,捕获上一帧到当前帧之间鼠标的屏幕位置。如果超过阈值,则Slicer进入SlicerRotationFollowState,旋转180度。

SlicerFollow.mp4

Pref: .meta 文件的错误

问题简述

EzySlice插件忽略了.meta文件,也有部分悬挂的meta文件

实现方案

  • 创建新仓库存放EzySlice的源代码
  • 使用UPM包代替源代码
  • 移除空文件夹的悬挂.meta文件
  • 配置CI测试

注释

悬挂:指只有.meta文件,没有对应的脚本或资源.

Feature:添加单元测试

功能简述

需要为各模块添加相应的单元测试

实现方案

  • 添加测试模块
  • 添加测试示例

Refactor: 重构现有的MotionStateFactory的enum部分

问题简述

去中心化,并且修复enum只能存32个状态的局限

实现方案

  • 最好是能在各个功能程序集模块建立enum
  • 希望能支持继承,在Frame程序集只有抽象类
  • 支持类似枚举类hasFlag的操作
  • 没有BUG
  • 保持良好的代码结构

Feat: 完成对ItemNodePanel功能的实现

问题简述

完成ItemNodePanel的交互

实现方案

  • 显示关卡所有Item并显示特定的层级关系
  • 层级关系可以展开,并且性能良好
  • 可以对层级面板中的Item项进行重命名,拖拽操作,但场景Item本身名字不变
  • 可以通过拖拽在相同父项下修改Item顺序
  • 可以选择Item来实现框选,并且支持快捷键多选或取消选择
  • 没有BUG
  • 保持良好的代码结构

feat: 完成小机器人AI的状态

问题简述

完成小机器人的一系列状态

实现方案

  • 新建一个程序集来完成这个Issues
  • 一般状态:小机器人左右移动,碰到墙返回,类似马里奥的板栗仔
  • 跟随状态:小机器人会跟随玩家移动,跳跃高度暂时待定。小机器人会朝向玩家的位置移动,检测到障碍物尝试跳跃越过,到玩家身边撞一下停下来(撞一下为动画表现,不是身后,不会受到玩家朝向的影响),如果玩家身旁有其他小机器人则会在小机器人旁停下(小机器人之间存在物理碰撞,但和玩家之间没有),进入停止跟随状态。当玩家移动超过一定距离限制后继续跟随。一直跟随,直到被玩家踩到进入翻到状态。小机器人能检测到悬崖(高度超过一定距离则不会前进) 演示视频
  • 收纳状态:小机器人能被玩家收纳,收纳期间跟随玩家移动,失去移动能力,并且能够给玩家提供拍照能力(在Slicer中实现)
  • 弹出状态:在玩家把小机器人弹出的一段时间内给小机器人一个反冲速度,方向为玩家的朝向。
  • 翻倒状态:被玩家扔出后,默认进入此状态,失去行动能力,类似乌龟四脚朝天。被玩家踩一脚(类似马里奥那样)恢复正常。再踩一下则又会进入此状态。进入多小机器人连接状态则不会被踩影响。
  • 状态的转换可以参考动画演示

Feat : 完成物件仓库面板的实现

问题简述

完成关卡编辑器的物件仓库面板

实现方案

  • 完成物件数据类型
  • 完成仓库面板对物件的读取
  • 完成对物件的分类
  • 实现搜索功能
  • 实现创建物体命令
  • 侧边栏显示目前定位

Feat: 游戏流程循环

简述

主页面->游戏内->过关->主页面

任务列表

基本的UI管理系统
场景切换与关卡加载
游戏流程循环

Feat: 完成关卡编辑器ItemTransformPanel面板功能实现

问题简述

完成ItemTransformPanel的交互

实现方案

  • 当框选物体个数>0时显示Panel
  • Position修改操作,参考Unity编辑器
  • Rotation修改操作,参考Unity编辑器
  • Scale修改操作,参考Unity编辑器
  • 支持Undo/Redo
  • 支持拖拽InputField前Text的功能,参考Unity编辑器
  • 良好的代码结构
  • 没有BUG

feat: 完成关卡编辑器的Detail面板

问题简述

完成关卡编辑器的Detail面板(详细参数面板)类似Unity中选择不同物体,显示不同的组件参数

实现方案

  • Detail面板的显示状态只有在选择物体数量>0出现。
  • 其中的详细参数只呈现选择物体共有的参数。
  • 点击不同的物体呈现出不同的可调参数,Itemdata中的类似CanPush,CanCopy这类公共参数。
  • bool类型的参数则通过对象池在Detail面板中创建一个复选框,以及对应的Text
  • int,float这类参数则创建一个inputfield,并且有对应的Text。
  • Color则出现一个调色板,可以调整物体的材质球颜色。
  • 当然,这些功能也可以根据具体的Itemdata类型来创建对应的预制体(工厂),不用根据参数自动创建。
  • 保持较高的可扩展性,良好的代码结构。

Feat: 完成ActionPanel和ControlHandlePanel功能实现

问题简述

完成ActionPanel和ControlHandlePanel面板的交互

实现方案

  • Undo按钮实现
  • Redo按钮实现
  • View按钮实现
  • Position按钮实现
  • Rotation按钮实现
  • Scale按钮实现
  • Rect按钮实现
  • 支持对按钮的Undo/Redo
  • 支持快捷键Undo/Redo
  • Selection控制柄实现
  • Position控制柄实现
  • Rotation控制柄实现
  • Scale控制柄实现
  • Rect控制柄实现
  • 控制柄操作支持Undo/Redo
  • Position控制柄拖拽时鼠标光标能无视屏幕边界移动,参考Unity编辑器
  • Rotation控制柄拖拽时鼠标光标能无视屏幕边界移动,参考Unity编辑器
  • Scale控制柄拖拽时鼠标光标能无视屏幕边界移动,参考Unity编辑器
  • Rect控制柄拖拽时鼠标光标能无视屏幕边界移动,参考Unity编辑器
  • 没有BUG
  • 保持良好的代码结构

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.