diff --git a/engine/mob/movement/movement.go b/engine/mob/movement/movement.go index 9662857..d6bde6b 100644 --- a/engine/mob/movement/movement.go +++ b/engine/mob/movement/movement.go @@ -1,7 +1,6 @@ package movement import ( - "fmt" "lab.zaar.be/thefish/alchemyst-go/engine/ecs" "lab.zaar.be/thefish/alchemyst-go/engine/gamemap" "lab.zaar.be/thefish/alchemyst-go/engine/mob" @@ -19,6 +18,7 @@ func (mov Moveable) Walk() { } +//fixme change it to WhatsOnTile func (mov Moveable) IsBlocked(c types.Coords) bool { if mov.Level.GetTile(c).BlocksPass == true { return true @@ -41,7 +41,6 @@ func (mov Moveable) IsBlocked(c types.Coords) bool { return true } } - fmt.Printf("\nCoords %v do not block pass!", c) return false } diff --git a/story/go_chans_for_game.md b/story/go_chans_for_game.md new file mode 100644 index 0000000..b278c97 --- /dev/null +++ b/story/go_chans_for_game.md @@ -0,0 +1,8 @@ + +декодирование ввода в отдельном потоке + +Реализация FPS и троттлинг + +Отдельный FPS для некоторых видов анимации (в моем случае анимиррованные тайлы) + +Каналы состояний и их Listеner-ы \ No newline at end of file diff --git a/story/index.md b/story/index.md new file mode 100644 index 0000000..f7c3f76 --- /dev/null +++ b/story/index.md @@ -0,0 +1,5 @@ +RLG и Golang - полезные советы +=== +1. [Установка и некоторые особенности работы](./linux_go_blt.md) связки BLT + Go на Linux +2. Реализация [некоторых возможностей](./go_chans_for_game.md) Go - chans, tickers, throttling +3. [Система типов](./static_types_vs_ecs.md) - нативная или ECS? \ No newline at end of file diff --git a/story/linux_go_blt.md b/story/linux_go_blt.md new file mode 100644 index 0000000..e32fd3e --- /dev/null +++ b/story/linux_go_blt.md @@ -0,0 +1,47 @@ +Установка и работа с BLT на Linux +== + +Для Windows и Mac проблем с Go + BLT, насколько мне известно нет. +С Linux, которая моя основная рабочая ось - другая история, здесь вносят свой шарм особенности работы линкера. +Дело в том, что в составе BLT есть готовые биндинги для Go, НО! В Terminal/Include/Go по умолчанию +указаны такие флаги линкера CGO (стр 25) +```go +// #cgo LDFLAGS: -lBearLibTerminal +``` +Что подразумевает глобальную вивдимость библиотеки. Увы, пока пакета с BLT для распространенных дистрибутивов Linux нет. +Поэтому беде нужно помочь руками. Сначала вручную показать линтеру, что такая библиотека есть, и потом перезагрузить +кеш путей к библиотекам:: +```bash +$ sudo echo "/path/to/libbearterminal.so" > /etc/ld.so.conf.d/libbearterminal.conf && sudo ldconfig +``` + +Проблема тут в том, что эту же операцию придется проделать всем, кто захочет запустить ваше приложение с BLT. Вопреки +распространенному стереотипу - доля красноглазых пользователей Linux с каждым годом падает, и эта консольная магия для +большинства уже некомильфо. + +Способ второй, которым воспользовался я, намного проще для пользователя. +Редактируем файл с биндингами примерно следующим образом: +```go +// #cgo LDFLAGS: -L. -Wl,-rpath -Wl,./ -lBearLibTerminal +// #include +// #include +import "C" +``` +(знатоки С, простите, я этими флагами вообще +пользоваться не умею) + +Далее - собираем приложение с libtcod ```go build -o test```. + +Проверяем, что относительные пути записались в бинарник: +```bash +objdump -p test | grep RPATH +``` +Результат должен быть таким: +```bash +RPATH ./ +``` + +Ура! Теперь кладем libBearLibTerminal.so прямо в папку с main.go и запускам go run (или скомпилированный бинарник) прям +оттуда. Собранные таким образом бинарники будут искать библиотеку в той же папке, где находятся они сами. + +Теперь при дистрибуции приложения можно просто положить .so файл библиотеки рядом, и все будет работать! \ No newline at end of file diff --git a/story/static_types_vs_ecs.md b/story/static_types_vs_ecs.md new file mode 100644 index 0000000..39e6198 --- /dev/null +++ b/story/static_types_vs_ecs.md @@ -0,0 +1,9 @@ +Система типов в Go + +Плюсы использования нативной системы типов + +Минусы использования нативной системы типы + +ECS - меняем бойлерплейт на относительное снижение связности + +Минутка рекламы gogue \ No newline at end of file