open-project-1 icon indicating copy to clipboard operation
open-project-1 copied to clipboard

Set the environmental tools/guide for the project with dotfiles, possible a small bash install script

Open studentutu opened this issue 4 years ago • 5 comments

There is a lot of features currently in development, and they need to be properly merged. One of the ways to mitigate the merges is to set up proper tools for the machine itself.

You can have a small collection of dotfiles, like .gitattributes, .vs, and such to set them up. It is even better if there will be a bash script to run and check if everything is set-up correctly

Take a look into the VRTK 4 - Tillia/Zillia or a newly disclosed google's Tilt Brush.

  • [ ] .gitattributes
  • [ ] Smart merge - Unity Yaml Merge, with editor fall back to P4Merge/SVN
  • [ ] Preferable one of the automated Changelog.md generators
  • [x] .editorconfig
  • [x] .github for templates such as issue template pull request template
  • [ ] bash file to check the dependencies (if any) or set the solution to use editor configs from the project itself
  • [x] explicitly lock some of the packages from being updated, lock unity version to LTS
  • [ ] if the project is getting larger - include the Library from one of the current working build. You can safely zip it and share it with people across the globe. It will mitigate the hours of reimport. (Probably unnecessary as new unity uses V2 cache server, but still something to be aware of).
  • [ ] explicitly set the presets, especially for audio (if larger - make streaming, if small - decompress on load). You can even make some automated relocations and renaming via custom import scripts.
  • [ ] the majority of the project will be the assets - so make sure to use the best compression on them (nobody wants to clone 10 gigs of setup project with a few hours queue of import). For audio - .ogg (best compression, without much of the quality loss). jpeg for image (if required in higher quality - png) and so on. A simple .gitignore rule will do the job, but again it can be explicitly stated somewhere in the guidelines.
  • [x] just with any project - assets and contained parts of it can be packaged together in a strict way to be included in the project. This is also something that needs to be specified (naming, the path to mesh, materials, textures ...)

In general, when people use proper good tools, they will be more productive 👌

👉By the way, it can even include the list of packages to use within the IDE itself. Rider/VS Community with Resharper/Code snippets, Shaderlab Support, VS code with a few required packages installed, etc.

👀 Please take a look into Microsoft's Code of conduct and related features - https://github.com/microsoft/MixedRealityToolkit-Unity

studentutu avatar Feb 02 '21 23:02 studentutu

Thanks @studentutu, there are some good suggestions. Some we already have in the project, like locking the Unity version or asset naming conventions. Some others we'll do of course, like compressing assets...

Some things I don't agree with. For instance, using .jpg in the project is a very bad idea. Same for .oggs. You want clean files in the project, then they will be compressed in the build. But if you include compressed files as sources, sure, the project size goes down, but what if you have to work on them to tweak them? It's kind of bad practice.

Same for the Changelog generator... you mean for eventual final release of the game? I feel like the changelog for a game (especially of this size) needs to be curated rather than automated. Although we could implement it anyway to have a reference, and then throw away some of the text 🤷🏻‍♂️

ciro-unity avatar Feb 03 '21 22:02 ciro-unity

Completely agree regarding compressed files as sources. Regarding the Changelog - you are basically doing the same thing in the Unity youtube channel, where each video is a Changelog.md. Would be nice to actually copy the main features from it and just paste it in.

studentutu avatar Feb 04 '21 06:02 studentutu

Regarding the Changelog - you are basically doing the same thing in the Unity youtube channel, where each video is a Changelog.md. Would be nice to actually copy the main features from it and just paste it in.

Can you link an example of one? To understand the level of detail that you're thinking about, and whether it is useful.

ciro-unity avatar Feb 04 '21 08:02 ciro-unity

@ciro-unity here is a good example (it is automated, created based on the specific tags in the commit message) https://github.com/ExtendRealityLtd/Zinnia.Unity/blob/master/CHANGELOG.md

studentutu avatar Feb 04 '21 10:02 studentutu

Really cool.

I fear we don't have that kind of discipline here, for instance enforcing clear and descriptive Commit comments is not something I see happening on this project. Sure we could request it as part of the process, but it would only mean more work on our side to check that those requirements are met. We have guidelines in place for code and asset submission, but they are often ignored.

ciro-unity avatar Feb 08 '21 13:02 ciro-unity