Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 19.07.2010, 21:52   #491
Ponkole
Форумчанин
 
Регистрация: 02.07.2010
Сообщений: 167
По умолчанию

BASSON_XVI вызывать randomize надо в начале главных циклов например вначале процедур типа:

Код:
procedure blabla(bla);
begin
  randomize;
  blablabl:=random(10);
  blablaba:=random(10);
  blablala:=random(10);
end;

Последний раз редактировалось Beermonza; 26.07.2010 в 16:50.
Ponkole вне форума Ответить с цитированием
Старый 20.07.2010, 10:17   #492
Ponkole
Форумчанин
 
Регистрация: 02.07.2010
Сообщений: 167
По умолчанию

Спасибо большое DomiNick

Последний раз редактировалось Beermonza; 26.07.2010 в 16:48.
Ponkole вне форума Ответить с цитированием
Старый 21.08.2010, 00:28   #493
Alexan-Dwer
Форумчанин
 
Аватар для Alexan-Dwer
 
Регистрация: 20.04.2009
Сообщений: 136
Радость

Познавательная тема. Я тоже думаю в будущем о создании RPG, поэтому сейчас начинаю готовить свою базу знаний.
Цитата:
Не надо рисовать все в один Image. Рисуйте сразу на форму.
Конечно, выводить графику напрямую гораздо лучше. Но, если я рисую на Canvas формы и перетаскиваю ее за пределы экрана, то она очищается. Я так понимаю, что вывод графики без Image подходит только для FullScreen игр?

Так же хотелось бы узнать какие форматы файлов использовать, что бы защитить свою игру. В ситуации с файлом карты все просто, так как каждая игра имеет свой формат, то и понять его может только разработчик. Но как быть с графикой ?
Alexan-Dwer вне форума Ответить с цитированием
Старый 21.08.2010, 00:43   #494
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Цитата:
Не надо рисовать все в один Image. Рисуйте сразу на форму.
Я считаю что это кардинально зависит от ситуации...
Если надо всего пару линий нарисовать, то тогда в OnPaint лучше LineTo на форму... А если тысячи линий/кривых или вообще целый битмап? Тогда полюбому лучше на временном битмапе сначала, а потом BitBlt...
Цитата:
Так же хотелось бы узнать какие форматы файлов использовать, что бы защитить свою игру.
Полностью защитить невозможно... Ломают всё...((
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 21.08.2010, 00:55   #495
Alexan-Dwer
Форумчанин
 
Аватар для Alexan-Dwer
 
Регистрация: 20.04.2009
Сообщений: 136
По умолчанию

Цитата:
Полностью защитить невозможно... Ломают всё...((
Да, если взять Hex Editor и debugger, то можно много чего изменить, но все же хотелось бы узнать, как профессионалы поступают с графикой.
Alexan-Dwer вне форума Ответить с цитированием
Старый 21.08.2010, 01:06   #496
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Цитата:
как профессионалы поступают с графикой.
Ну... У каждого свои подходы...
Многие просто архивируют (зачастую своими алгоритмами)...

А есть "СверхПрофи" которые вообще всю графику генерируют программно (>пример<)...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 21.08.2010, 01:16   #497
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Цитата:
если я рисую на Canvas формы и перетаскиваю ее за пределы экрана, то она очищается
Ничего страшного, т.к. перерисовка всегда происходит в игровом таймере несколько раз в секунду. Как очистится так тут же и заново нарисуется.
Цитата:
какие форматы файлов использовать, что бы защитить свою игру
Как вариант - используйте один из общепринятых форматов, только в каждом файле меняйте пару байтов, чтобы обычным способом их нельзя было прочесть, а ваша программа, вернув эти байты в исходное состояние, могла ими потом нормально оперировать.
Или еще вариант - пакуйте несколько нужных файлов в один бинарный файл просто путем записывания байт нескольких файлов подряд, дополнительно указывая нужные данные. То есть, к примеру, файл выглядит так:
Код:
[Здесь всякая лирика на тему того, что это файл вашего "архива"]
[Число упакованных файлов в данный "архив"]
[Тип первого файла][Размер первого файла][Байты первого файла]
[Тип второго файла][Размер второго файла][Байты второго файла]
[А после каждого второго файла идет еще 10 байт мусора чисто чтобы усложнить жизнь тому, кто попробует из файла извлечь информацию]
[Тип третьего файла][Размер третьего файла][Байты третьего файла]
...
[Благодарности и приветы всем друзьям и родственникам]
Ну это в качестве примера, как может быть, просто чтобы проиллюстрировать что я имел в виду. Вы повыкидываете отсюда все лишнее, добавите что-то еще и переделаете под свои нужды.
Опять же и во втором варианте можно использовать первый - менять пару байт в полях, содержащих байты файлов.

В общем, при принятии таких мер предосторожности вы можете быть уверены, что по крайней мере "хакер" лишенный воображения до вашей графики не доберется. Более искушенный если захочет, то сможет добраться, но против него придется использовать уже более серьезные средства шифрования.

(+)
Цитата:
Если надо всего пару линий нарисовать, то тогда в OnPaint лучше LineTo на форму... А если тысячи линий/кривых или вообще целый битмап? Тогда полюбому лучше на временном битмапе сначала, а потом BitBlt...
Это уже к вопросу о двойной буферизации. Думаю, в любой игре ее стоит использовать. Ну а если говорить насчет Image vs Form, то безусловно конечный экран должен быть канвой формы, а не Image'а.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же

Последний раз редактировалось Гром; 21.08.2010 в 01:20.
Гром вне форума Ответить с цитированием
Старый 21.08.2010, 17:46   #498
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Цитата:
Сообщение от Гром
Как вариант - используйте один из общепринятых форматов, только в каждом файле меняйте пару байтов, чтобы обычным способом их нельзя было прочесть, а ваша программа, вернув эти байты в исходное состояние, могла ими потом нормально оперировать.
Очень эффективный вариант, но есть ограничения, нельзя применять с форматами без сжатия типа BMP, ...2 испорченных байта в заголовке не помешают открыть картинку в рукописном редакторе. Нужно использовать пакованный формат и по некоему алгоритму просто портить файл на 50-70% с возможностью восстановления, алгоритм порчи и восстановления хранить в составном виде, то выполняя, то отлаживая на время, между которым выполнять другие запутывающие действия. Это очень сложно создать, и так же сложно разгадать, особенно если применяется еще и подмена зависящая от многих параметров самого исходного файла, например: размер, пропорции, содержание цветов. Идентичных текстур в игре наверняка не будет, и каждая из них будет зашифрована по своему, чтобы нельзя было проследить аналогию или понять принципы.

Здесь же, в теме для новичков можно даже не заморачиваться, ...большинство используют уже широкодоступные ресурсы, и утаивать их нет смысла. А если что-то серьезное, то оно все равно выводится на экран, с него содрать и вырезать несложно, нужно только время.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 21.08.2010, 20:13   #499
Alexan-Dwer
Форумчанин
 
Аватар для Alexan-Dwer
 
Регистрация: 20.04.2009
Сообщений: 136
По умолчанию

Гром, примерно такую модель я и обдумывал. На мой взгляд, это действительно просто и элегантно, но как предложил Beermonza давайте отложим этот вопрос на десерт.
Сейчас я думаю о полноэкранном режиме для формы:
Код:
Form1.BorderStyle:=bsNone;
Form1.Top:=0; Form1.Left:=0;
Form1.Width:=Screen.Width; Form1.Height:=Screen.Height;
или
Код:
Form1.BorderStyle:=bsNone;
Form1.Top:=0; Form1.Left:=0;
Form1.WindowState:=wsMaximized;
или
Код:
var
RectScr: TRect=(Left: 0; Top: 0; Right: 0; Bottom: 0);
FullScr: Boolean=False;

procedure TForm1.FormCreate(Sender: TObject);
begin
FullScr:=not FullScr;
if FullScr then begin
RectScr:=BoundsRect;
SetBounds(Left-ClientOrigin.X, Top-ClientOrigin.Y,
GetDeviceCaps(Canvas.handle, HORZRES) + (Width - ClientWidth),
GetDeviceCaps(Canvas.handle, VERTRES) + (Height - ClientHeight));
end
else BoundsRect:=RectScr;
end;
Отображает форму во весь экран, но почему-то выглядит это не эффектно.
Alexan-Dwer вне форума Ответить с цитированием
Старый 22.08.2010, 13:25   #500
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

В каком смысле выглядит не эффектно? Просто серая форма на весь экран? Если так, то это лечится сразу же как только на всю форму начинает выводиться графика. Или что вы имеете в виду?
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хорошие уроки Render Общие вопросы Delphi 9 15.09.2012 07:13
Акцесс вопросы новичков Yaga Помощь студентам 4 02.06.2008 00:16
Учебники для новичков в програмировании Рар Общие вопросы Delphi 6 08.01.2007 09:07


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS