[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Jery  
Форум » Knights and Merchants: Remake » Редактирование игры » Статьи о разработке (на английском)
Статьи о разработке
KromДата: Среда, 17.07.2013, 15:47 | Сообщение # 1
Воитель
Группа: Супер Модераторы
Сообщений: 2526
Награды: 25
Репутация: 153
Статус: Offline
Вот уже месяца два по мере возможности пишем и выкладываем статьи о разработке КаМ Ремейка на английском. Английский выбран за свою популрность, на нем худо-будно изъясняется большинство игроков в КаМ.

Последняя статья о том как в игре устроен выбор юнитов курсором и какие намечаются улучшения: http://www.kamremake.com/devblog/unit-picking/


Нашли баг в КаМ Ремейке? Отправьте отчет на с пометками, желательно на английском, в какой версии, что и когда случилось, приложите реплей или сохраненную игру в которой этот баг воспроизводится.
 
JeryДата: Четверг, 18.07.2013, 03:22 | Сообщение # 2
Мечник
Группа: Модераторы
Сообщений: 568
Награды: 2
Репутация: 50
Статус: Offline
Прочитал про ваш юнит пикинг, поздравляю вас изобретением велосипеда интересного подобия стенсил буфера. smile Но вообще решение классное, собственно мне кажется оно самое эффективное, только непонятно почему в этом бэкбуфере нет зданий, они же ведь такие же кликабельные объекты.

А вот статья про "почему паскаль для ремейка", увы я думал там будут какие-то более сильные аргументы, все что там описано есть в том же с++, и множества, и многомерные массивы, и перечисления, и само собой полиморфизм, классы, наследование, абстрактные классы и прочее, НО кроме описаных в статье плюсов я добавлю еще один. В си нет Begin и End, которые размывают код и делают его визуально не структурированным, вместо них нормальные рамки блоков { }, нет кучи разного словоблудия типа procedure, function, then, do, to. Си лаконичен и по моему мнению более читабелен, хотя нечитабельный изврат и там встречается =) Ну и конечно огромный плюс это шаблоны в плюсах\Generics в шарпе, хотя вроде в новых делфях их уже сделали.

Добавлено (18.07.2013, 03:22)
---------------------------------------------
Чем больше смотрю на юнит-пик, тем больше вопросов. Судя по схемке вы свапаете буферы, получается что в тот момент когда в ваш второй буфер должен рендерится новый нормальный кадр, у вас туда рендерится ваш велосипед? А как же основное его назначение для двойной буферизации? Непонятно зачем нужен свап, почему этот буфер не параллельный к бэк-буферу. Заполнялся бы он вместе с основным бэк-буфером и никогда бы не свапался, либо свапался но уже со своим бэк-буфером (типа двойная буферизация еще и "selection buffer'a")


«Художник не тогда знает, что он достиг совершенства, когда нечего добавить, но когда нечего больше отнять». (Антуан де Сент-Экзюпери)

Сообщение отредактировал Jery - Четверг, 18.07.2013, 03:22
 
KromДата: Четверг, 18.07.2013, 09:35 | Сообщение # 3
Воитель
Группа: Супер Модераторы
Сообщений: 2526
Награды: 25
Репутация: 153
Статус: Offline
Jery, никто и не говорит что это наше изобретение )))) Color-picking известен уже с пару десятков лет.

В паскале есть все вышеперечисленное и при этом гораздо меньше возможностей выстрелить себе в ногу (перегрузка операторов, неопределенное поведение, например). Хотя с новыми версиями Делфы и там это появляется. Begin/end и прочие, это все дело привычки. Вцелом Делфа более текстовая, а С++ больше на значки опирается. Кому как удобнее.

Не понимаю, как тут страдает двойная буферизация? Мы делаем с буфером что хотим и когда считаем что он готов для показа юзеру, свапим его. Дальше он становится фронт буфером, а мы имеем новый бык буфер с которым опять делаем что хотим. Нет необходимости плодить лишние буфера.


Нашли баг в КаМ Ремейке? Отправьте отчет на с пометками, желательно на английском, в какой версии, что и когда случилось, приложите реплей или сохраненную игру в которой этот баг воспроизводится.
 
JeryДата: Четверг, 18.07.2013, 10:55 | Сообщение # 4
Мечник
Группа: Модераторы
Сообщений: 568
Награды: 2
Репутация: 50
Статус: Offline
Цитата (Krom)
Не понимаю, как тут страдает двойная буферизация? Мы делаем с буфером что хотим и когда считаем что он готов для показа юзеру, свапим его. Дальше он становится фронт буфером, а мы имеем новый бык буфер с которым опять делаем что хотим. Нет необходимости плодить лишние буфера.
Ну если я все правильно понимаю, то у вас в бэк-буфер сначало идет рендер "selection" картинки, но потом в один прекрасный момент туда идет рендер основной картинки. Дак вот если юзер кликнет мышью по экрану в тот момент, когда в вашем бэк буфере будет нормальная картинка, что будет?


«Художник не тогда знает, что он достиг совершенства, когда нечего добавить, но когда нечего больше отнять». (Антуан де Сент-Экзюпери)
 
KromДата: Четверг, 18.07.2013, 13:58 | Сообщение # 5
Воитель
Группа: Супер Модераторы
Сообщений: 2526
Награды: 25
Репутация: 153
Статус: Offline
Jery, буфер заполняется синхронно, так что никаких "если одновременно" нет.

Нашли баг в КаМ Ремейке? Отправьте отчет на с пометками, желательно на английском, в какой версии, что и когда случилось, приложите реплей или сохраненную игру в которой этот баг воспроизводится.
 
JeryДата: Четверг, 18.07.2013, 17:24 | Сообщение # 6
Мечник
Группа: Модераторы
Сообщений: 568
Награды: 2
Репутация: 50
Статус: Offline
Что значит "если одновременно". Сколько всего буферов 2 (фронт+бэк) либо 3(фронт+бэк+селекшн), в бэк буфер собирается картинка для следующего кадра, пока она собирается показывается фронт буфер и потом происходит смена. Дак вот ваша селекшен картинка это совсем не та картинка, которую видит игрок. А когда тогда собирается именна та, которую он должен видеть. Получается есть момент, когда в бэк буфере лежит картинка, которая через мгновение уйдет на экран и в этот момент мы получаем щелчок по объекту. Что должно происходить ведь селекшен картинки в данный момент нет? У вас щелчки мыши тоже синхронно обрабатываются и лежат в стеке пока их невытащат?

ЗЫ: я просто пытаюсь понять, потому что мне кажется что что-то не так.


«Художник не тогда знает, что он достиг совершенства, когда нечего добавить, но когда нечего больше отнять». (Антуан де Сент-Экзюпери)

Сообщение отредактировал Jery - Четверг, 18.07.2013, 17:28
 
KromДата: Четверг, 18.07.2013, 17:46 | Сообщение # 7
Воитель
Группа: Супер Модераторы
Сообщений: 2526
Награды: 25
Репутация: 153
Статус: Offline
Отрисовка в бэк буфер идет синхронно (однопоточно), это значит что пока операция рисования не закончилась, все события стоят в очереди, будь то хоть 100 кликов. Как только кадр отрисовался (отрисовка для игрока, свап с фронтом, отрисовка селекшна) наступает очередь обработки событий из очереди.

Нашли баг в КаМ Ремейке? Отправьте отчет на с пометками, желательно на английском, в какой версии, что и когда случилось, приложите реплей или сохраненную игру в которой этот баг воспроизводится.
 
JeryДата: Четверг, 18.07.2013, 17:49 | Сообщение # 8
Мечник
Группа: Модераторы
Сообщений: 568
Награды: 2
Репутация: 50
Статус: Offline
Ну получается что события тоже синхронные теперь мне все понятно.

«Художник не тогда знает, что он достиг совершенства, когда нечего добавить, но когда нечего больше отнять». (Антуан де Сент-Экзюпери)
 
KromДата: Четверг, 01.08.2013, 17:53 | Сообщение # 9
Воитель
Группа: Супер Модераторы
Сообщений: 2526
Награды: 25
Репутация: 153
Статус: Offline
Отлично, если будут еще какие-нибудь вопросы - задавай )

Вторая часть статьи о выборе юнитов: http://www.kamremake.com/devblog/unit-picking-2/

Добавлено (22.07.2013, 12:15)
---------------------------------------------
Вторая часть истории основания проекта (опять на англ): http://www.kamremake.com/devblog/kam-remake-history-part-2-founding/

Добавлено (01.08.2013, 17:53)
---------------------------------------------
Очередная статья на английском, в этот раз показывается и рассказывается как работает Undo/Redo: http://www.kamremake.com/devblog....onality


Нашли баг в КаМ Ремейке? Отправьте отчет на с пометками, желательно на английском, в какой версии, что и когда случилось, приложите реплей или сохраненную игру в которой этот баг воспроизводится.
 
JeryДата: Четверг, 01.08.2013, 19:17 | Сообщение # 10
Мечник
Группа: Модераторы
Сообщений: 568
Награды: 2
Репутация: 50
Статус: Offline
Банда четырех советовала использовать классы команд, а не состояний! =)
Типа Command.Execute() и Command.Unexecute().


«Художник не тогда знает, что он достиг совершенства, когда нечего добавить, но когда нечего больше отнять». (Антуан де Сент-Экзюпери)
 
KromДата: Суббота, 17.08.2013, 23:38 | Сообщение # 11
Воитель
Группа: Супер Модераторы
Сообщений: 2526
Награды: 25
Репутация: 153
Статус: Offline
Jery, это замечательно, и в статье этот момент упомянут, как и то, какие лишние сложности он несет. В данном случае выбор был сделан в пользу скорости разработки и простоты, при том, что откат полного состояния местности 256х256 практически не заметен.

Undo/Redo для других областей, где Execute/Unexecute был бы более оправданным (город, юниты, настройки ИИ и т.п.) пока не планируется, т.к. там цена ручного отката изменений гораздо ниже, чем на местности.

Добавлено (17.08.2013, 23:38)
---------------------------------------------
Очередная статья, но теперь с вопросами в конце: http://www.kamremake.com/devblog/adding-unicode-support/

Буду рад цслышать ваши соображения по теме smile


Нашли баг в КаМ Ремейке? Отправьте отчет на с пометками, желательно на английском, в какой версии, что и когда случилось, приложите реплей или сохраненную игру в которой этот баг воспроизводится.
 
JeryДата: Воскресенье, 18.08.2013, 17:42 | Сообщение # 12
Мечник
Группа: Модераторы
Сообщений: 568
Награды: 2
Репутация: 50
Статус: Offline
Я бы просто в тупую перевел все в UTF16(виндовый юникод). В скриптах можно оставить анси, т.к. там если будет использовано что-то кроме латинского, то и карта будет крутиться среди тех людей кто тот язык понимает. В скриптах нет никакого толка от юникода. А какие у вас там еще сторонние либы, которые не переваривают юникод и используются прямо в игровой логике, а не один раз при загрузке например.

«Художник не тогда знает, что он достиг совершенства, когда нечего добавить, но когда нечего больше отнять». (Антуан де Сент-Экзюпери)
 
KromДата: Понедельник, 19.08.2013, 22:30 | Сообщение # 13
Воитель
Группа: Супер Модераторы
Сообщений: 2526
Награды: 25
Репутация: 153
Статус: Offline
Jery, Пока примерно так и получается - почти все идет в UTF16. В ANSI остаются скрипты (паскаль скрипт не поддерживает юникод), имена игроков, пароли, названия карт, чтобы все игроки могла их понимать/вводить.

Добавлено (19.08.2013, 22:30)
---------------------------------------------
А вот ответ на комментарии о неэффективном undo/redo: http://www.kamremake.com/devblog....ineered


Нашли баг в КаМ Ремейке? Отправьте отчет на с пометками, желательно на английском, в какой версии, что и когда случилось, приложите реплей или сохраненную игру в которой этот баг воспроизводится.
 
Форум » Knights and Merchants: Remake » Редактирование игры » Статьи о разработке (на английском)
  • Страница 1 из 1
  • 1
Поиск: