Skip to content

match3 in unity. Initially planning feature not merge items, but click on them

License

Notifications You must be signed in to change notification settings

gggittt/match3_byClicks

Repository files navigation

Game rules TODO Архитектура Naming My codestyle

match3_byClicks

В коде точки входа:

  1. Infrastructure: _Project/Core/Infrastructure/Bootstrapper.cs
  2. Запуск логики игры на геймплей сцене: _Project/Core/EntryPointGameplay.cs

Game rules

match3 in unity. Initially planning feature not merge items, but click on them

Unity_2qpQ8uAeER.mp4

Архитектура

  • Притащил систему где храню в Board.CellGrid, а не Grid т.к. она у меня уже была.
    • Все при всех взаимодействиях "шариков", сначала нахожу ячейку Cell в которой шарик лежит, и беру его уже оттуда. Возможно стоило бы так не делать, и хранить матрицу шариков, без посредника в виде Cells.

Реализовано:

  • customization: match только в линии, или все соединённые ортогонально (включая угловые повороты)
  • ячейки создаются в runtime. до начала игры в объекте GameData можно настроить размер поля

Использованные плагины

  • Zenject
  • DoTween
  • TMP

Использованные паттерны

  • FSN
  • ObjectsPool
  • Observer
  • EntryPoint
  • Factory
  • Template method

Todo

  • центрировать камеру в runtime под размер поля.
  • вынести в конфиги настройки (из [SerializeField] монобехов):
    • размер поля
    • очки за комбо
    • очки для победы

My codestyle

  • Не делаю отступ для namespace. Не вижу смысла. Заранее готов с фиче C# 10 "File scoped namespaces", когда отступ не будет нужен. Тем программистам, кто всё время делал отступ, полагаю будет непривычно, когда отступ исчезнет.
    • image
    • Настраивается в Rider: убрать галочку здесь:
    • image
    • Возможно стоит добавить _Project в "no namespace provider". А может и нет, т.к. тогда появляется вероятность что мои namespaces Будут конфликтовать с namespaces внешних плагинов
  • Не пишу очевидный private
  • prefer Type over var
  • внутри круглых скобок пишу пробелы. настраивается здесь:
    • image
  • consts - PascalCase, even for private and local. Не вижу смысла в SNAKE_CASE, это просто замедляет печать. image
  • в остальном +- стандартно.
    • Возможно позже перейду с ctor(int some){ _some = some; } to ctor(int some){ this.some = some; }

About

match3 in unity. Initially planning feature not merge items, but click on them

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published