Разработка

Проект закрыт 22.01.2008 по желанию автора.

Модератор: ADB

Аватара пользователя
Maelstrom
Мастер
Сообщения: 2062
Зарегистрирован: 26 ноя 2006, 14:19
Откуда: г. Усть-Кирдык
Контактная информация:

Сообщение Maelstrom » 27 июн 2007, 12:24

А что не так с ИВАНом? Можно чуть поподробнее, что именно не понравилось?
То, что распределение повреждений по частям тела - абсолютное зло. Дисбаланс образуется жуткий.
Айв кнгенгах Йог-Сотот

Bobiczdoh
Сообщения: 64
Зарегистрирован: 10 апр 2007, 13:12
Откуда: Антигуа и Барбуда

Сообщение Bobiczdoh » 27 июн 2007, 17:24

Maelstrom писал(а):То, что распределение повреждений по частям тела - абсолютное зло. Дисбаланс образуется жуткий.
Ну в ПЗ тоже распределение ударов по частям тела - и ничего, дисбаланса не замечается. Просто кто-то смог нормально константы подогнать, а кто-то не смог. И не факт, что автор это сможет, так что писать рогалик сначала надо с расчётом на дальнейшее усложнение, а не усложнять изначально с расчётом на дальнейшее дописывание (как это я ща делаю :-)).
Но это всё моё скромное мнение).
З.Ы. учёт попаданий по частям тела порождает ещё одно еретическое желание - разделение хп по частям тела, создание разделённого здоровья с учётом связей и прочих демонических вещей, способных увести момент издания игры на бесконечность).

Аватара пользователя
Максим Кич
Администратор
Сообщения: 1560
Зарегистрирован: 03 дек 2006, 20:17
Откуда: Витебск, Беларусь
Контактная информация:

Сообщение Максим Кич » 27 июн 2007, 22:05

Maelstrom писал(а):
А что не так с ИВАНом? Можно чуть поподробнее, что именно не понравилось?
То, что распределение повреждений по частям тела - абсолютное зло. Дисбаланс образуется жуткий.
Повторюсь, конечно, но ребята сделавшие Call of Cthulhu умудрились реализовать повреждения по частям теля в шутере(!) и не убить при этом баланс. Так что, дело в реализации, а не в идее.
Dump the screen? [y/n]

ADB
Мастер
Сообщения: 371
Зарегистрирован: 27 ноя 2006, 00:55
Откуда: Санкт-Петербург
Контактная информация:

Сообщение ADB » 05 авг 2007, 11:37

Эх. Все никак не могу разобраться с графическим движком игры. :oops:
Скорее всего я неправильно использую какие-то инструкции OpenGL.
Как только включаю режим постоянной перерисовки, как и должно быть по идее, начинаются жуткие тормоза. Если убираю миникарту и анимацию - бегать начинает быстрее. :(
В чем же дело.... :?
Cracked by Bill Gilbert =)

Аватара пользователя
Максим Кич
Администратор
Сообщения: 1560
Зарегистрирован: 03 дек 2006, 20:17
Откуда: Витебск, Беларусь
Контактная информация:

Сообщение Максим Кич » 06 авг 2007, 11:29

ADB писал(а):Эх. Все никак не могу разобраться с графическим движком игры. :oops:
Скорее всего я неправильно использую какие-то инструкции OpenGL.
Как только включаю режим постоянной перерисовки, как и должно быть по идее, начинаются жуткие тормоза. Если убираю миникарту и анимацию - бегать начинает быстрее. :(
В чем же дело.... :?
У тебя при отрисовке тайлов есть проверка выхода за пределы массива?
Dump the screen? [y/n]

ADB
Мастер
Сообщения: 371
Зарегистрирован: 27 ноя 2006, 00:55
Откуда: Санкт-Петербург
Контактная информация:

Сообщение ADB » 06 авг 2007, 17:13

Есть все проверки. Например, рисуется только тот квадрат, который находится в области видимости.
Cracked by Bill Gilbert =)

ADB
Мастер
Сообщения: 371
Зарегистрирован: 27 ноя 2006, 00:55
Откуда: Санкт-Петербург
Контактная информация:

Сообщение ADB » 06 авг 2007, 17:14

Возможно, исользование OpenGL, для вывода 2D графмки - не самое лучшее мое решение. Хотелось изучить опенгл, к тому же портируемость! :wink:
Cracked by Bill Gilbert =)

ADB
Мастер
Сообщения: 371
Зарегистрирован: 27 ноя 2006, 00:55
Откуда: Санкт-Петербург
Контактная информация:

Сообщение ADB » 06 авг 2007, 17:25

Но самое большое уродство моего проекта - это использование статических массивов данных и постоянное открытие/заккрытие файловых потоков (иногда несколько раз в секунду!), чтобы читать данные о предметах из временной БД на диске и не только. :oops:

Статические данные ограничены и используются не экономно - отсюда великие размеры файловых данных, состоящие большей частью на данный момент из пустых ячеек.
Думаю, все переделать. ;)
Cracked by Bill Gilbert =)

Аватара пользователя
Maelstrom
Мастер
Сообщения: 2062
Зарегистрирован: 26 ноя 2006, 14:19
Откуда: г. Усть-Кирдык
Контактная информация:

Сообщение Maelstrom » 06 авг 2007, 18:09

постоянное открытие/заккрытие файловых потоков (иногда несколько раз в секунду!), чтобы читать данные о предметах из временной БД на диске и не только.
Ё моёёё, а заносить всё в память при запуске программы никак?
Айв кнгенгах Йог-Сотот

ADB
Мастер
Сообщения: 371
Зарегистрирован: 27 ноя 2006, 00:55
Откуда: Санкт-Петербург
Контактная информация:

Сообщение ADB » 06 авг 2007, 18:43

Именно так и надо :wink:
Cracked by Bill Gilbert =)

Аватара пользователя
Максим Кич
Администратор
Сообщения: 1560
Зарегистрирован: 03 дек 2006, 20:17
Откуда: Витебск, Беларусь
Контактная информация:

Сообщение Максим Кич » 07 авг 2007, 07:31

ADB писал(а):Есть все проверки. Например, рисуется только тот квадрат, который находится в области видимости.
Попробуй снять :) У меня сейчас в процессе перехода на новый движок случилась любопытная ситуация.

Я наконец-то смог собрать из подручных материалов псевдо-ASCII на основе тайлов с возможностью изменения «освещения» тайла в трю-палитре. И, соответственно, сварганил класс с кучей перекрытых функций, которые и должны были выводить тайлы в нужное место тайловой сетки. И там было тупо прописано условие:

if (x<0) or (y<0) or (x>width) or (y>width) then SomethingWentWrong()
else РисуемТайл;

После чего запускаю всю эту радость на компиляцию и офигеваю от 4-5 fps.
Снимаю проверку.
Летает.
Dump the screen? [y/n]

ADB
Мастер
Сообщения: 371
Зарегистрирован: 27 ноя 2006, 00:55
Откуда: Санкт-Петербург
Контактная информация:

Сообщение ADB » 07 авг 2007, 08:08

Что за? :shock:
Не может быть!
Может там еще какие-нибудь подводные камни есть?
Cracked by Bill Gilbert =)

Аватара пользователя
Максим Кич
Администратор
Сообщения: 1560
Зарегистрирован: 03 дек 2006, 20:17
Откуда: Витебск, Беларусь
Контактная информация:

Сообщение Максим Кич » 07 авг 2007, 11:40

ADB писал(а):Что за? :shock:
Не может быть!
Может там еще какие-нибудь подводные камни есть?
А что, сработало? Кстати, использование статических массивов не обязательно зло. Лично я в старой версии от 5 до 10 fps терял на работе с памятью. Помнится, очень ускорила замена
SetLength(VisMatr,0,0) на Finalize(VisMatr). Эта сволочь (VisMatr) была динамическим массивом и использовалась для всех лосей (читай, для каждого источника света + обзор игрока), на каждом кадре. Выигрыш получился чуть ли не вдвое. Но це Делфа. У тебя могут быть другие приколы.

А выход лучше ловить по эксепшинам, хотя я ещё не пробовал, оставил как есть.
Dump the screen? [y/n]

Аватара пользователя
Alchemist
Мастер
Сообщения: 203
Зарегистрирован: 13 дек 2006, 09:15
Откуда: Нижний Тагил, Иваново
Контактная информация:

Сообщение Alchemist » 08 авг 2007, 02:42

Максим Кич писал(а): Попробуй снять :) У меня сейчас в процессе перехода на новый движок случилась любопытная ситуация.

Я наконец-то смог собрать из подручных материалов псевдо-ASCII на основе тайлов с возможностью изменения «освещения» тайла в трю-палитре. И, соответственно, сварганил класс с кучей перекрытых функций, которые и должны были выводить тайлы в нужное место тайловой сетки. И там было тупо прописано условие:

if (x<0) or (y<0) or (x>width) or (y>width) then SomethingWentWrong()
else РисуемТайл;

После чего запускаю всю эту радость на компиляцию и офигеваю от 4-5 fps.
Снимаю проверку.
Летает.
Могу ошибиться, но большой вопрос - у тебя в вышеприведенном коде случаем width и height - не свойства с методами Get? Может быть что-то тратит производительность именно там?
Максим Кич писал(а): А что, сработало? Кстати, использование статических массивов не обязательно зло. Лично я в старой версии от 5 до 10 fps терял на работе с памятью. Помнится, очень ускорила замена
SetLength(VisMatr,0,0) на Finalize(VisMatr). Эта сволочь (VisMatr) была динамическим массивом и использовалась для всех лосей (читай, для каждого источника света + обзор игрока), на каждом кадре. Выигрыш получился чуть ли не вдвое. Но це Делфа. У тебя могут быть другие приколы.
Друг мой, используй вместо нативных дельфевых динамических массивов, простое выделение памяти под указатель на массив, классика динамических массивов:

Код: Выделить всё

type
  TVector = array [0..0] of Integer;
  PVector = ^TVector;

var
  v: PVector;

GetMem(v, len * SizeOf(Integer));
v[10] := 5;
FreeMem(v);
Ибо, нативные динамические массивы - немеряное зло. Если ты покопаешься в исходниках rtl, то обнаружишь причину тормозов ;)

Dmiry
Сообщения: 168
Зарегистрирован: 14 июн 2007, 10:32

Сообщение Dmiry » 08 авг 2007, 05:17

v[10] := 5;
Может, лучше так:

Код: Выделить всё

v^[10] := 5;
Первая заповедь фотолюбителя: Проявил себя - закрепи!

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость