Fallen Rebirth 0.1

Модератор: Jolly Roger

Аватара пользователя
Jesus05
Сообщения: 1840
Зарегистрирован: 02 дек 2009, 07:50
Откуда: Норильск, сейчас Санкт-петербург.
Контактная информация:

Re: Fallen Rebirth 0.1

Сообщение Jesus05 » 05 ноя 2013, 10:03

Cfyz писал(а):
Jesus05 писал(а):SQLLite это не совсем БД в глобальном понимании.
Выполняющая требования ACID транзакционная реляционная (СУ)БД с журналированием, поддержкой горячего бэкапа и мультипроцессного доступа -- не совсем БД? То, что она не поддерживает right outer join или то, что ее можно встроить в чайник, не делает ее чем-то другим =) Алсо, у вас лишняя "L" в названии.
Видать я плохо мат часть знаю, помнится оно меня посылало при попытке работать из двух процессов одновременно.

Аватара пользователя
Cfyz
Сообщения: 776
Зарегистрирован: 30 ноя 2006, 10:03
Откуда: Санкт-Петербург
Контактная информация:

Re: Fallen Rebirth 0.1

Сообщение Cfyz » 05 ноя 2013, 10:23

Jesus05 писал(а):Видать я плохо мат часть знаю, помнится оно меня посылало при попытке работать из двух процессов одновременно.
Навскидку раз, два. В моем случае ситуация была достаточно простой: ручной контроль базы запущенного приложения, но механизм блокировок в SQLite прозрачно намекает. Впрочем скорость работы будет так себе, файловая система все-таки.
Пытается раскуклиться

Аватара пользователя
Jolly Roger
Сообщения: 2973
Зарегистрирован: 27 ноя 2009, 09:10
Откуда: Minsk, Belarus

Re: Fallen Rebirth 0.1

Сообщение Jolly Roger » 05 ноя 2013, 10:51

BreakMT писал(а):
Jolly Roger писал(а):
sokolix писал(а):на моем ноутбуке, приложение не отвечает, те командная строка ок а окно игры не отвечает
А какое у тебя разрешение? Я тут, развернул на 1280 по оси Х.
Надо вернуть назад на 1024.
+ Fallen кушает памяти, мама не горюй.
EDIT: в начале игра без предупреждения и вывода данных на экран генерит мир, если ноут слабеньки, это может его заставить его задуматься. Вывод данных я добавлю, чтобы было понятно, что мы живы =)
У меня на рабочем компе завис в самом начале тоже. 1280 на 1024, XP.
Какой мир он генерит-то так долго? )
Слушай. ну там есть куда зависнуть в начале.
Я просто сделаю вывод на экран информации, что же программа делает сейчас, чтобы не было ощущения, что программа зависла.

Слушай, мир генерится здоровенный. Не огромный, который, имхо не нужен, но большой, есть где душе разгуляться.
Множество локаций, тысячи монстров.
PS
Хотя странно, у меня тоже рабочий комп убогий до ужаса, но там 3-4 секунды, не более.

----
Имхо, использование БД в рогалике не стоит выделки. Всё же, один большой мир имеет один большой плюс, сохраняется сразу одним куском. :)
Писать диздок спустя несколько лет разработки и множества изменений концепции - исконная русская девелоперская традиция.

Аватара пользователя
BreakMT
WANDER Team
Сообщения: 933
Зарегистрирован: 27 ноя 2006, 12:16

Re: Fallen Rebirth 0.1

Сообщение BreakMT » 05 ноя 2013, 10:58

Хотя странно, у меня тоже рабочий комп убогий до ужаса, но там 3-4 секунды, не более.
Я не говорил что у меня убогий комп на работе, был бы такой - не писал бы, наверное :) Или оперативки 1 гиг уже не хватает?

Аватара пользователя
Cfyz
Сообщения: 776
Зарегистрирован: 30 ноя 2006, 10:03
Откуда: Санкт-Петербург
Контактная информация:

Re: Fallen Rebirth 0.1

Сообщение Cfyz » 05 ноя 2013, 11:01

Jolly Roger писал(а):Слушай. ну там есть куда зависнуть в начале.
Я просто сделаю вывод на экран информации, что же программа делает сейчас, чтобы не было ощущения, что программа зависла.
Там не то, чтобы статичный сплешскрин напрягает, а целое окно залипает. Курсор меняется на "ожидание", превью в таскбаре заволакивает белесой пеленой, даже рефлекторно подергать окошко за границу не выходит. И если картинка будет меняться, это все равно как-то... неопрятно что-ли. Попробуй вынести генерацию в отдельный поток, должно быть просто, все равно данные с двух мест использоваться не будут.
Пытается раскуклиться

Аватара пользователя
Frolik
Сообщения: 624
Зарегистрирован: 08 мар 2011, 17:21

Re: Fallen Rebirth 0.1

Сообщение Frolik » 05 ноя 2013, 11:06

Как я тему-то оживил. )))
То есть, вместо того, чтобы один раз в момент вызова сохранения игры записать данные, предлагаешь после каждого чиха непременно лезть в базу и сохранять изменения.
Чем я ставлю под сомнение "никаких дополнительных телодвижений" и второе, а нужен ли такой горячий супер актуальный сейв пирожок?
Да, именно так.
Второе. Ну а если нужен? Прибил процесс, а у тебя все равно есть самое свежее состояние.
Тогда вопрос в производительности. mysql бегает довольно резво.
Всё же, один большой мир имеет один большой плюс, сохраняется сразу одним куском.
Загружается он тоже сразу одним куском? Сколько памяти отбирает?

Я только озвучил идею. Меня не переубедишь, я никого убеждать не собирался, хозяин топика резолюцию наложил, вопрос закрыт.

Аватара пользователя
Jolly Roger
Сообщения: 2973
Зарегистрирован: 27 ноя 2009, 09:10
Откуда: Minsk, Belarus

Re: Fallen Rebirth 0.1

Сообщение Jolly Roger » 05 ноя 2013, 11:29

Cfyz писал(а):
Jolly Roger писал(а):Слушай. ну там есть куда зависнуть в начале.
Я просто сделаю вывод на экран информации, что же программа делает сейчас, чтобы не было ощущения, что программа зависла.
Там не то, чтобы статичный сплешскрин напрягает, а целое окно залипает. Курсор меняется на "ожидание", превью в таскбаре заволакивает белесой пеленой, даже рефлекторно подергать окошко за границу не выходит. И если картинка будет меняться, это все равно как-то... неопрятно что-ли. Попробуй вынести генерацию в отдельный поток, должно быть просто, все равно данные с двух мест использоваться не будут.
Вот! Мне это и самому не нравится. Выглядит именно неопрятно и некрасиво. Игра может быть сколь угодно замечательной дальше, но после такого старта. [-o<
Можно поподробнее за идею с отдельным потоком?
Давать, время от времени программе обмениваться системными сообщениями.
Кстати, а этот курсор ожидания, что сделать, чтобы от него избавиться? Дать окну пообщаться с системой?
Frolik писал(а):Как я тему-то оживил. )))
То есть, вместо того, чтобы один раз в момент вызова сохранения игры записать данные, предлагаешь после каждого чиха непременно лезть в базу и сохранять изменения.
Чем я ставлю под сомнение "никаких дополнительных телодвижений" и второе, а нужен ли такой горячий супер актуальный сейв пирожок?
Да, именно так.
Второе. Ну а если нужен? Прибил процесс, а у тебя все равно есть самое свежее состояние.
Тогда вопрос в производительности. mysql бегает довольно резво.
Всё же, один большой мир имеет один большой плюс, сохраняется сразу одним куском.
Загружается он тоже сразу одним куском? Сколько памяти отбирает?

Я только озвучил идею. Меня не переубедишь, я никого убеждать не собирался, хозяин топика резолюцию наложил, вопрос закрыт.
Оживил, так оживил!
Нет и ещё раз нет. Никаких резолюций. Я написал, ИМХО, овчинка выдеки не стоит, но никто не говорит, что я не готов изменить своё мнение [-X . :D

Сейчас Фалеен ест около 320 мб.
Ожидаемый прирост ещё 150-200мб. не думаю, что вылезу за эти пределы.
Писать диздок спустя несколько лет разработки и множества изменений концепции - исконная русская девелоперская традиция.

Аватара пользователя
Jesus05
Сообщения: 1840
Зарегистрирован: 02 дек 2009, 07:50
Откуда: Норильск, сейчас Санкт-петербург.
Контактная информация:

Re: Fallen Rebirth 0.1

Сообщение Jesus05 » 05 ноя 2013, 11:48

Jolly Roger писал(а):
Cfyz писал(а):
Jolly Roger писал(а):Слушай. ну там есть куда зависнуть в начале.
Я просто сделаю вывод на экран информации, что же программа делает сейчас, чтобы не было ощущения, что программа зависла.
Там не то, чтобы статичный сплешскрин напрягает, а целое окно залипает. Курсор меняется на "ожидание", превью в таскбаре заволакивает белесой пеленой, даже рефлекторно подергать окошко за границу не выходит. И если картинка будет меняться, это все равно как-то... неопрятно что-ли. Попробуй вынести генерацию в отдельный поток, должно быть просто, все равно данные с двух мест использоваться не будут.
Вот! Мне это и самому не нравится. Выглядит именно неопрятно и некрасиво. Игра может быть сколь угодно замечательной дальше, но после такого старта. [-o<
Можно поподробнее за идею с отдельным потоком?
Давать, время от времени программе обмениваться системными сообщениями.
Кстати, а этот курсор ожидания, что сделать, чтобы от него избавиться? Дать окну пообщаться с системой?
Самый простой и практически не управляемый вариант. на C++ конечно :) я на делфе врядли напишу хотя в VCL был TThread помнится.

DWORD WINAPI ThreadProc(LPVOID lpParameter)
{
Код который будет выполнятся в другом потоке.
return 0; // возвращаем какой-нить код выхода. нельзя возвращать STILL_ACTIVE (259) а то фиг поймешь когда оно перестало быть активным.
}

void CreateWorld()
{
HANDLE hThread;
hThread = CreateThread(NULL, 0, &ThreadProc[Адрес_на_функцию], [Указатель_который_будет_передан_в_функцию], 0[запускаем_сразу], NULL);

if (hThread == NULL)
{
GetLastError(); //Что-то пошло совсем плохо.
}

DWORD dwExitCode = STILL_ACTIVE;

while(dwExitCode == STILL_ACTIVE)
{
if (GetExitCodeThread(hThread, &dwExitCode) == 0)
{
GetLastError(); //Что-то пошло совсем плохо.
}
//Обрабатываем сообщения окошка.
}

}
Последний раз редактировалось Jesus05 05 ноя 2013, 12:03, всего редактировалось 1 раз.

Аватара пользователя
Cfyz
Сообщения: 776
Зарегистрирован: 30 ноя 2006, 10:03
Откуда: Санкт-Петербург
Контактная информация:

Re: Fallen Rebirth 0.1

Сообщение Cfyz » 05 ноя 2013, 12:01

Jolly Roger писал(а):Можно поподробнее за идею с отдельным потоком?
Давать, время от времени программе обмениваться системными сообщениями.
Кстати, а этот курсор ожидания, что сделать, чтобы от него избавиться? Дать окну пообщаться с системой?
Суть идеи в том, чтобы на старте не уходить с головой в генерацию мира, а запустить параллельный поток, в котором будет генерироваться все, что нужно. Основной поток и окно в это время будут какбы ничего не делать. Когда дополнительный поток закончит, он выставляет некоторый флаг, по которому основной переходит из сплешскрина в меню или куда потребуется.

Беглый поиск дает вроде бы релевантную страницу про многопоточнось в Паскале: Multithreaded Application Tutorial. Там отмечается, что иногда можно обойтись "малой кровью" регулярно вызывая некий Application.ProcessMessages. Я, тем не менее, все же советую честно породить полноценный поток, так как в этом случае не придется искусственно разбивать задачу рассчета на отдельные куски, хранить ненужный контекст между вызовами. Задача синхронизации как таковая (основная проблема в многопоточности) тут не стоит, ведь данные пока они полностью не готовы никто не тронет. Поэтому достаточно просто сказать мол выполни вот ту функцию в отдельном потоке (TThread.Execute в терминах приведенной статьи) и отрисовывать сплешскин пока тот поток не закончится (вероятно, это можно понять по значению TThread.Terminated).
Пытается раскуклиться

Аватара пользователя
Jolly Roger
Сообщения: 2973
Зарегистрирован: 27 ноя 2009, 09:10
Откуда: Minsk, Belarus

Re: Fallen Rebirth 0.1

Сообщение Jolly Roger » 05 ноя 2013, 13:47

Cfyz писал(а):
Jolly Roger писал(а):Можно поподробнее за идею с отдельным потоком?
Давать, время от времени программе обмениваться системными сообщениями.
Кстати, а этот курсор ожидания, что сделать, чтобы от него избавиться? Дать окну пообщаться с системой?
Суть идеи в том, чтобы на старте не уходить с головой в генерацию мира, а запустить параллельный поток, в котором будет генерироваться все, что нужно. Основной поток и окно в это время будут какбы ничего не делать. Когда дополнительный поток закончит, он выставляет некоторый флаг, по которому основной переходит из сплешскрина в меню или куда потребуется.

Беглый поиск дает вроде бы релевантную страницу про многопоточнось в Паскале: Multithreaded Application Tutorial. Там отмечается, что иногда можно обойтись "малой кровью" регулярно вызывая некий Application.ProcessMessages. Я, тем не менее, все же советую честно породить полноценный поток, так как в этом случае не придется искусственно разбивать задачу рассчета на отдельные куски, хранить ненужный контекст между вызовами. Задача синхронизации как таковая (основная проблема в многопоточности) тут не стоит, ведь данные пока они полностью не готовы никто не тронет. Поэтому достаточно просто сказать мол выполни вот ту функцию в отдельном потоке (TThread.Execute в терминах приведенной статьи) и отрисовывать сплешскин пока тот поток не закончится (вероятно, это можно понять по значению TThread.Terminated).
Хмм.. А ведь не сложно будет реализовать.
Я изначально и думал про Application.ProcessMessages.
Другое дело, что не очень красиво. Хмм.. Как нинимум, это нужно вызвать один раз ДО запуска процесса.
Потом отделить генерацию в отдельный поток. Это не сложно, так как никакого взаимодействия с внешним миром нет.
Спасибо. Сейчас курну Эмбакодерковские мануалы, один плюс, они у них очень кошерные и загоню генерацию в поток. По большому счёту, это единственное место, где это нужно.

2Jesus05 это ерунда, эти управляющие фишки одинаковы для всех языков, так как вызывают методы самих окон.

EDIT: Интересно, у Эмбаркодеро везде болтаются предупреждения, против использования ProcessMessages.

Английский ужасен, но рассказывает о том, что нам нужно:
http://edn.embarcadero.com/article/41003
Писать диздок спустя несколько лет разработки и множества изменений концепции - исконная русская девелоперская традиция.

Аватара пользователя
Shirson
Сообщения: 427
Зарегистрирован: 03 окт 2011, 13:52

Re: Fallen Rebirth 0.1

Сообщение Shirson » 05 ноя 2013, 13:53

Frolik писал(а):Минусы:
Нужна еще одна библиотека.
Может быть есть еще минусы, с sqlite плотно не работал, поэтому не могу сказать, какие там могут быть подводные камни.
Все данные представлены в виде строк. И числа, и даже блобы.
Выходные данные вываливаются в неудобоваримом для Делфи виде - датасет нужно составлять руками (понятно, что реализуется один раз, но всё равно)
Jolly Roger писал(а):Имхо, использование БД в рогалике не стоит выделки. Всё же, один большой мир имеет один большой плюс, сохраняется сразу одним куском. :)
Это пройдёт. Со временем :)

Аватара пользователя
Jolly Roger
Сообщения: 2973
Зарегистрирован: 27 ноя 2009, 09:10
Откуда: Minsk, Belarus

Re: Fallen Rebirth 0.1

Сообщение Jolly Roger » 05 ноя 2013, 15:12

:shock:
эээ... А это нормально? Перенёс генерацию в отдельный поток, а основной оставил следить за окном.
Короче. попробую на старом ноуте, конечно, но на стационарном я даже не успеваю понять, отвечает ли окно или нет, так быстро заканчивается генерация в соседнем потоке!

Cfyz, Jesus, вам мешок печенья и банка варенья! =D>
Кроме того, я даже вижу, как можно выделить в отдельные потоки некоторые отложенные вычисления. Это, конечно, будет не так просто, но вполне реально просчитать всякие фовы и астары для неписей, пока игрок выполняет свой ход.


В начале есть небольшая проблемка, но это виноват не генератор, а I/O по загрузке и обработке графики.
Совместно с генератором, они намертво вешали процесс. По отдельности. Ну отдельно пусть повисит =) Дойдут руки и до загрузки графики более разумным способом.
Это пройдёт. Со временем :)
более чем возможно. 8)
Писать диздок спустя несколько лет разработки и множества изменений концепции - исконная русская девелоперская традиция.

Аватара пользователя
Jolly Roger
Сообщения: 2973
Зарегистрирован: 27 ноя 2009, 09:10
Откуда: Minsk, Belarus

Re: Fallen Rebirth 0.1

Сообщение Jolly Roger » 05 ноя 2013, 16:38

Собственно вот.
Увы, но в основном потоке осталась графика, которая занимает около секунды.
Генерация мира в отдельном потоке.
Писать диздок спустя несколько лет разработки и множества изменений концепции - исконная русская девелоперская традиция.

Аватара пользователя
Jolly Roger
Сообщения: 2973
Зарегистрирован: 27 ноя 2009, 09:10
Откуда: Minsk, Belarus

Re: Fallen Rebirth 0.1

Сообщение Jolly Roger » 06 ноя 2013, 18:10

Закончил код интерфейса навыков.
Внешне он может поменяться, главное, готов скелет, который всё это безобразие организует.
И набросок первого навыка Explorer.
Идея этого навыка пришла, когда бродил по миру Fallen. Далеко не всегда хочется встречаться с тем, что можно найти :) .
Скрытый текст: ПОКАЗАТЬ
Skill_Table.png
Skill_Table.png (202.32 КБ) 4957 просмотров
и результат его работы, на высшем уровне развития. Я знаю, что находится рядом, не посещая это место.
Скрытый текст: ПОКАЗАТЬ
MAP_With_Skill.png
MAP_With_Skill.png (158.36 КБ) 4957 просмотров
Писать диздок спустя несколько лет разработки и множества изменений концепции - исконная русская девелоперская традиция.

sokolix
Сообщения: 81
Зарегистрирован: 02 дек 2012, 15:34

Re: Fallen Rebirth 0.1

Сообщение sokolix » 06 ноя 2013, 18:47

радтараканы прекрасны ) (но усы кажись чуть темнее должны быть)

Ответить

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

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