story
This commit is contained in:
parent
a195e335eb
commit
fcf34831cb
@ -1,7 +1,6 @@
|
|||||||
package movement
|
package movement
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"lab.zaar.be/thefish/alchemyst-go/engine/ecs"
|
"lab.zaar.be/thefish/alchemyst-go/engine/ecs"
|
||||||
"lab.zaar.be/thefish/alchemyst-go/engine/gamemap"
|
"lab.zaar.be/thefish/alchemyst-go/engine/gamemap"
|
||||||
"lab.zaar.be/thefish/alchemyst-go/engine/mob"
|
"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 {
|
func (mov Moveable) IsBlocked(c types.Coords) bool {
|
||||||
if mov.Level.GetTile(c).BlocksPass == true {
|
if mov.Level.GetTile(c).BlocksPass == true {
|
||||||
return true
|
return true
|
||||||
@ -41,7 +41,6 @@ func (mov Moveable) IsBlocked(c types.Coords) bool {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fmt.Printf("\nCoords %v do not block pass!", c)
|
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
8
story/go_chans_for_game.md
Normal file
8
story/go_chans_for_game.md
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
|
||||||
|
декодирование ввода в отдельном потоке
|
||||||
|
|
||||||
|
Реализация FPS и троттлинг
|
||||||
|
|
||||||
|
Отдельный FPS для некоторых видов анимации (в моем случае анимиррованные тайлы)
|
||||||
|
|
||||||
|
Каналы состояний и их Listеner-ы
|
5
story/index.md
Normal file
5
story/index.md
Normal file
@ -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?
|
47
story/linux_go_blt.md
Normal file
47
story/linux_go_blt.md
Normal file
@ -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 <stdlib.h>
|
||||||
|
// #include <BearLibTerminal.h>
|
||||||
|
import "C"
|
||||||
|
```
|
||||||
|
(знатоки С, простите, я этими флагами вообще
|
||||||
|
пользоваться не умею)
|
||||||
|
|
||||||
|
Далее - собираем приложение с libtcod ```go build -o test```.
|
||||||
|
|
||||||
|
Проверяем, что относительные пути записались в бинарник:
|
||||||
|
```bash
|
||||||
|
objdump -p test | grep RPATH
|
||||||
|
```
|
||||||
|
Результат должен быть таким:
|
||||||
|
```bash
|
||||||
|
RPATH ./
|
||||||
|
```
|
||||||
|
|
||||||
|
Ура! Теперь кладем libBearLibTerminal.so прямо в папку с main.go и запускам go run (или скомпилированный бинарник) прям
|
||||||
|
оттуда. Собранные таким образом бинарники будут искать библиотеку в той же папке, где находятся они сами.
|
||||||
|
|
||||||
|
Теперь при дистрибуции приложения можно просто положить .so файл библиотеки рядом, и все будет работать!
|
9
story/static_types_vs_ecs.md
Normal file
9
story/static_types_vs_ecs.md
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
Система типов в Go
|
||||||
|
|
||||||
|
Плюсы использования нативной системы типов
|
||||||
|
|
||||||
|
Минусы использования нативной системы типы
|
||||||
|
|
||||||
|
ECS - меняем бойлерплейт на относительное снижение связности
|
||||||
|
|
||||||
|
Минутка рекламы gogue
|
Loading…
x
Reference in New Issue
Block a user