DevLog 1
Engine, general approach, assets, plugins, etc.
Hi guys! This is first time I do dev log, but I'll try my best.
Engine/coding1. Unity (started in 2017.2, now 2018.2, I always try to update the project to the newest version of Unity, even if sometimes it requires same bug fixing in shaders and scripts). I'm using Plus, but I believe I could do all I need in Personal.
2. C# scripts > Component-based architecture (I strongly recommend that and IMHO it is far more flexible and robust approach than classic OOP with all inheritance problems)
3. I really try to keep my code S.O.L.I.D (especially when it comes to single responsibility principle - for example I have a UnitController script, but if it is a flying unit it also has HeliUnitController, if it is also a transport unit it has TransportUnitController etc.)
4. I use a lot of scriptable objects, not only to keep some data in them, but also to use my "own" event system. Thanks to that I can avoid many singletons in my code and be able to control objects on different scenes effectively (I extended it with some data pass functions - ints, strings etc.)
5. Multi-Scene editing and running (I'm still not sure if it is a good idea, but it keeps my project more flexible in making changes or testing, for example I can work only on a scene that contains decorations or only on a scene that contains the exact mission. On the other hand, there are some issues with lightning in Unity using multi-scene approach).
6. git on Bitbucket via SourceTree for version controll with LFS
Assets7. A* Pathfinding Project (Arongranberg.com) that is how I move my units, albo using special areas for pathfinding. I use a free version since is more than sufficient for me.
8. Timelines (I know that this is not a separate asset anymore, but still is very helpful in any cutscenes, enviroment animations etc.)
9. Cinemachine (It is a really great asset, I really recommend it when you need to have some camera transitions etc.)
10. DOTween (HOTween v2) - I'm only using it in some text effects (typewriter effect)
11. Free Draw for drawing on my maps (
https://assetstore.unity.com/packages/tools/painting/free-draw-simple-drawing-on-sprites-2d-textures-113131)
12. Volumetric lightning (
https://www.youtube.com/watch?v=H5v_X1k02U0)
13. Postprocessing 2 (very powerful tool when it comes to aesthetics - best time to effect ratio from all measures IMHO)
14. A lot of 3D assets for world building (game setting it vary generic and it is good because I can get a lot of good quality models for military objects, vehicles, etc.). The most important from a technical point of view:
-https://assetstore.unity.com/packages/tools/particles-effects/enviro-sky-and-weather-33963
My own systems (more a list than detailed explanation)15. Custom config controller (all settings kept in scriptable objects and saved/loaded to config file, I'm not using player prefs)
16. Custom input (key bindings, etc.)
17. Custom saving/loading system (saves class with some lists of object properties binary serialized to a file)
18. Program controllers: loading multiple scenes, missions, progress etc.
19. AudioController (all voice overs) +audio mixers system with several snapshots etc.
20. TimeController (time compression etc.)
21. Custom timelines driver (manually updating any active timeline to current game time lapse)
22. All GUI controllers
23. Map camera controller (dragging, zooming, WSAD movement, limits, etc.)
24. Core game mechanics: AetherController (orders and other comms in and out, with some advanced queuing), RadioOperatorController (on units), RadioController (player) ; UnitController, HeliUnitController, TransportUnitController, TransportableUnitController, WalkUnitController, MedicUnitController, ArtilleryUnitController, AirForceUnitController, BaseController, Fuel/StaminaUnitControllers, AIController (all the sim aspects); MissionController, EventController, ObjectiveController, WaypointController, SummaryController (story and gameplay); DialogController, DialogOptionController etc. (custom dialog system); MapController, MapObjectController (map, decals, tokens, movement, editing, etc.)
25. Tutorial system (tips can be switched manually or triggered automatically by events)
26. ReplayController (under development)
27. HandsController (all the animations of Commander's hands and earphone)
28. MissionEditorController (under development)
29. AnalyticsController (my interface for google analytics tool)
30. VoiceRecognitionController (quite simple and yet robust approach using Microsoft API)
31. GraphicSettingsController (under development - I have an idea to activate/deactivate objects on the scene depends on current detail lvl selected in options)
32. Like a million other scripts and systems
GraphicsI'm more a programmer than a graphic specialist, but here is what I know so far (I'm still learning):
33. Forward rendering (I tried deferred rendering and I was not satisfied)
34. Realtime lightning (I think that there is no option to bake light when you have day/night cycle, there is an option to mix those approaches but I haven't tried yet)
35. A lot of LOD groups (almost every object in the scene)
36. Billboard renderers on far distance
37. CombineMeshes - it works somehow, but there is al little control over it IMHO
38. Texture atlases - (under development... but they should reduce the number of draw calls)
39. Static batching - a lot of object in my scene is set to static, so I believe that I have saved some calls.
40. All other settings depends on current quality lvl
Uf...
That's all for now. I hope that it gives you anything interesting to consider or search deeper.
If you have any questions I will do my best to answer them.
Cheers!