Суббота, 20 Апреля 2024, 10:49

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум игроделов » Программирование » Delphi/Pascal/Object Pascal » Создание GUI для движка. (Нужна помощь в реализации.)
Создание GUI для движка.
burlachenkoДата: Вторник, 21 Мая 2013, 00:58 | Сообщение # 1
постоянный участник
Сейчас нет на сайте
Здравствуйте всем. Начну из далека. Lazarus и Delphi имеют отличный редактор для создания GUI, кроме того Lazarus ещё и кросс-платформенный, что позволяет делать на нём ПО под разные ОС.
Есть неплохой движок для создания панорамных квестов, который называется Pipmak, тоже кросс-платформенный. Сам по себе он отлично подходит для создания игр типа Myst, но практически всё нужно делать "вручную" (то есть для каждой локации нужно создавать по одной папке, в каждой папке должен быть файл с lua-кодом, в котором указываются ресурсы для игры, плюс шесть файлов графики для кубической панорамы, которые также нужно поместить в папки, плюс файл с хотспотами, для перехода между локациями), вот теперь представим, что в игре 40 локаций (или например 100), это грубый пример (для не очень большой демки), это ещё без примера работы с инвентарем.
Я считаю, что человеку творческому (плохо разбирающемуся в "кодинге") или человеку с ограниченным временем на такое "хобби" (как например я) будет тяжеловато себя реализовать, так как "рутина" с которой сталкиваешься во время работы с движком отбивает охоту.
Ещё раз повторюсь движок отличный для такого жанра как квесты, но сама работа с ним, не профессионалу едва покажется удобной.
Сама идея о создании "прослойки" в виде GUI между "рядовым" создателем игр и движком была давно, но более-менее четкое представление обрисовалось где то сейчас.
Суть этой "прослойки" приблизительно вот в чем:
- На форме программы есть кнопка создания проекта, нажимаем её - появляется папка с "правильным" названием.
- На форме есть контролы, через которые указываем количество локаций - в каталоге проекта появляются папки соответствующего количества и генерируется файл main.lua.
- Через другие контролы выбираем например первую локацию (то есть папку), через интерфейс программы загружаем ресурсы игры - графику(возможно с такими опциями как поворот картинки, масштабирование и т.д) с предпросмотром прямо на форме, параллельно генерируется файл .lua в папке локации.
То есть пользователь нажимает кнопки, указывает в окнах названия проекта и количество локаций, использует программу как менеджер ресурсов, программа тем временем брала бы всю рутину на себя (генерация кода в соответствующих файлах, копирование ресурсов, создание папок), такая программа существенно может сэкономить время пользователю.
У меня есть грубо набросанный пример, но он пока не имеет и 10% от того минимума который нужен для комфортной работы с движком.
А теперь хочу просить помощь у людей знающих паскаль. Не думаю что это очень сложное ПО, не важно сколько вам лет, если есть желание помочь, или просто хотите попробовать себя реализовать пишите в ЛС, или в крайнем случае сюда.
Спасибо заранее всем кто откликнется.

Добавлено (21.05.2013, 00:58)
---------------------------------------------
Возможна оплата труда.


MaximTG
aallaДата: Вторник, 21 Мая 2013, 07:45 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
идея хорошая, но может сразу сделать прогу с одной кнопкой на которой будет написано "сделай игру" по описанию этого ты и хочешь почти)
burlachenkoДата: Вторник, 21 Мая 2013, 09:29 | Сообщение # 3
постоянный участник
Сейчас нет на сайте
aalla, не уловили сути, на подобные комментарии не буду отвечать.

MaximTG
LetsOffBrainsДата: Вторник, 21 Мая 2013, 09:57 | Сообщение # 4
Project SoRDeLKa
Сейчас нет на сайте
Конструктор игр жанра "квест", но свой, легкий в управлении. Все верно?
Маленький доп. вопрос, паскаль... чтобы потом самому в коде поковыряться?



burlachenkoДата: Четверг, 23 Мая 2013, 10:25 | Сообщение # 5
постоянный участник
Сейчас нет на сайте
Цитата (LetsOffBrains)
Конструктор игр жанра "квест", но свой, легкий в управлении. Все верно?

Всё верно товарищ, простой и доступный инструмент креативным людям не помешает.
Цитата (LetsOffBrains)
Маленький доп. вопрос, паскаль... чтобы потом самому в коде поковыряться?

Паскаль выбрал потому, что есть сравнительно легкая среда для создания GUI, да ещё и бесплатная (имеется ввиду Lazarus, на котором и сделал первые наброски этого ПО).
На самом деле мне без разницы на чем будет сделано это. У меня цель - создание удобной "прослойки" для пользователя.
Как будет устроенна программа и что там будет в коде меня не очень интересует, главное что бы оно работало.
Если у кого то есть идеи на этот счет, то я не против с ними ознакомится.

Добавлено (23.05.2013, 10:25)
---------------------------------------------
Привет всем. Есть на форме 6 объектов TImage, с названиями типа "TImage_Top01", "TImage_Front01", "TImage_Left01", "TImage_Right01", "TImage_Back01", "TImage_Bottom01".
Я знаю как на них грузить изображения, типа нажать кнопку, появляется окно выбора файла, выбираем файл, нажим. кнопку ОК и файл загружен.
В интернете нашел как сделать окно выбора каталога. А теперь вопрос: как сделать одновременную загрузку картинок в объекты TImage, просто указав каталог с файлами изображения? (в каталоге есть 6 файлов для загрузки с именами типа "n1_back.jpg", "n1_bottom.jpg", "n1_front.jpg", "n1_left.jpg", "n1_right.jpg", "n1_top.jpg"). Но загружать не произвольно, то есть файл "n1_back.jpg" только в "TImage_Back01" и т.д.
Как сделать, через массив, переменную? может кто поможет с кодом?


MaximTG
daunДата: Четверг, 23 Мая 2013, 20:19 | Сообщение # 6
постоянный участник
Сейчас нет на сайте
Код

{uses FileCtrl, Jpeg;}
procedure Tf.SpeedButton1Click(Sender: TObject);
var dir:string; p:PWideChar; jpg:TJPEGImage;
begin
   if SelectDirectory('Выберите каталог',p,dir) then begin
      jpg:=TJPEGImage.Create;
      if FileExists(dir+'\n1_back.jpg') then begin
         jpg.LoadFromFile(dir+'\n1_back.jpg');
         f.Image1.Canvas.Draw(0,0,jpg);
      end;
      if FileExists(dir+'\n1_bottom.jpg') then begin
         jpg.LoadFromFile(dir+'\n1_bottom.jpg');
         f.Image2.Canvas.Draw(0,0,jpg);
      end;
      //...

      jpg.Free;
   end;
end;
burlachenkoДата: Четверг, 23 Мая 2013, 23:37 | Сообщение # 7
постоянный участник
Сейчас нет на сайте
daun, Спасибо что отозвались, я использую Lazarus, "Jpeg" и "FileCtrl" в "uses" обязательно использовать? (у меня в "uses" есть "FileUtil" а "Jpeg" нету, но "TImage" открывается .jpeg файлы без проблем).
И еще, если имя графического файла с произвольным именем в начале (я навел для примера имя "n1_back.jpg", а если имя будет "n2_back.jpg", "n3_back.jpg", "g1_back.jpg"? то есть программе нужно открыть файл в названии которого есть что то типа "_back.jpg" в "TImage_Back01", то есть программа должна сама понять что изображение в названии которого есть слово "_back" нужно открыть в "TImage_Back01", "_bottom.jpg", в "TImage_Bottom01" и т.д.) програме нужен какой то алгоритм для отсеивания по имени?
В вашем коде есть строчка
Цитата (daun)
f.Image2.Canvas.Draw(0,0,jpg);

Canvas это тоже объект который мне нужно добавить в проект? (или можно использовать только "TImage" ?)
Простите если где то задал глупый вопрос.
Что это за p:PWideChar? у меня ругается, что "Local variable "p" does not seem to be initialized"


MaximTG

Сообщение отредактировал burlachenko - Пятница, 24 Мая 2013, 00:04
daunДата: Пятница, 24 Мая 2013, 12:40 | Сообщение # 8
постоянный участник
Сейчас нет на сайте
Цитата (burlachenko)
"n3_back.jpg", "g1_back.jpg"? то есть программе нужно открыть файл в названии которого есть что то типа "_back.jpg" в "TImage_Back01", то есть программа должна сама понять что изображение в названии которого есть слово "_back" нужно открыть в "TImage_Back01", "_bottom.jpg", в "TImage_Bottom01" и т.д.) програме нужен какой то алгоритм для отсеивания по имени?

Если открыть несуществующий файл, программа навернется. С цифрами еще можно сортировать, а с буквами придется готовить и перебирать списки всех возможных имен. Думаю что имена тут не очень важны, там в одном из примеров цифровые картинки.

Цитата (burlachenko)
Canvas это тоже объект который мне нужно добавить в проект?

Поверхность имаги для вывода изображения из переменной.

Код

procedure Tf.SpeedButton1Click(Sender: TObject);
var dir:string; a:integer;
begin
      if SelectDirectory('Выберите каталог','',dir) then begin
         //перебираем возможные файлы
         for a:=1 to 100000 do begin  // (:
             if FileExists(utf8toansi(dir+'\n'+inttostr(a)+'_back.jpg')) then begin  //utf8toansi() в лазаре проблемы с кириллицей
                f.Image1.Picture.Jpeg.LoadFromFile(dir+'\n'+inttostr(a)+'_back.jpg');
                break;
             end;
         end;
         for a:=1 to 100000 do begin
             if FileExists(utf8toansi(dir+'\n'+inttostr(a)+'_bottom.jpg')) then begin
                f.Image2.Picture.Jpeg.LoadFromFile(dir+'\n'+inttostr(a)+'_bottom.jpg');
                break;
             end;
         end;

         //...

      end;
end;             
burlachenkoДата: Пятница, 24 Мая 2013, 22:47 | Сообщение # 9
постоянный участник
Сейчас нет на сайте
Спасибо daun,
Цитата (daun)
for a:=1 to 100000 do begin // (:
if FileExists(utf8toansi(dir+'\n'+inttostr(a)+'_back.jpg')) then begin
f.Image1.Picture.Jpeg.LoadFromFile(dir+'\n'+inttostr(a)+'_back.jpg');

вот это то что как раз нужно было.
Есть еще пару вопросов.
Есть каталог "Pipmak Castle.pipmak" в нем есть произвольное количество папок (например 17, так называемые "nodes"),
можно ли вывести список этих папок в ListBox? (указав просто через диалог этот каталог, а программа сама нашла бы и отобразила эти папки) или в крайнем случае отобразить их в TTreeView (находится на форме).
Кроме этих "nodes" в каталоге есть файл "main.lua", можно ли одновременно с отображение папок (указанных выше) загрузить этот "main.lua" например в TMemo который находится на форме?
Есть объект TMemo и TSynMemo, последний скорее всего с подсветкой синтаксиса верно?, насколько сложен в использовании (и стоит ли с ним заморачиватся)?
И ещё не большой вопрос, очень много всего на на одной форме, приходится складывать на ней всё компактно, вроде есть компонент TNotebook, только не могу разобраться как добавлять в него страницы, подскажите если не тяжело.
Или может есть возможность сделать вкладочки как в браузере?

Добавлено (24.05.2013, 22:47)
---------------------------------------------

Цитата (burlachenko)
И ещё не большой вопрос, очень много всего на на одной форме, приходится складывать на ней всё компактно, вроде есть компонент TNotebook, только не могу разобраться как добавлять в него страницы, подскажите если не тяжело.
Или может есть возможность сделать вкладочки как в браузере?

С последним справился с помощью TabSheet.


MaximTG

Сообщение отредактировал burlachenko - Пятница, 24 Мая 2013, 19:57
daunДата: Пятница, 24 Мая 2013, 23:09 | Сообщение # 10
постоянный участник
Сейчас нет на сайте
Цитата (burlachenko)
Есть каталог "Pipmak Castle.pipmak" в нем есть произвольное количество папок (например 17, так называемые "nodes"),
можно ли вывести список этих папок в ListBox? (указав просто через диалог этот каталог, а программа сама нашла бы и отобразила эти папки) или в крайнем случае отобразить их в TTreeView (находится на форме).

В delphi полно компонентов типа проводника, програмно такое делать не приходилось.

Цитата (burlachenko)
Есть объект TMemo и TSynMemo, последний скорее всего с подсветкой синтаксиса верно?, насколько сложен в использовании (и стоит ли с ним заморачиватся)?

Memo1.Lines.LoadFromFile('C:\1.txt');
С TSynMemo не знаком.
burlachenkoДата: Среда, 29 Мая 2013, 23:23 | Сообщение # 11
постоянный участник
Сейчас нет на сайте
Пока спасибо, "поиграюсь" с тем, что уже узнал.

Добавлено (26.05.2013, 13:11)
---------------------------------------------
Появился такой вопрос, есть вот такой код

Код
procedure TForm1.Button_Right03Click(Sender: TObject);
begin
   // Открываем графический файл "правой стороны" панорамы:
   if opendialog1.execute then
     Image_Right03.AutoSize:=False;
     Image_Right03.Proportional:=True;
     Image_Right03.Stretch:=True;
     Image_Right03.Picture.LoadFromFile(opendialog1.filename);
end;

Здесь реализована загрузка файла с изображением, это здесь работает так как нужно. Но когда я нажимаю "Отмена" в окне выбора файла, программа завершает работу с ошибкой. Читал что то про OnClose, но не знаю что с ним делать.
Можно как то при отмене выбора файла показать сообщение типа "Вы ничего не выбрали!"?

Добавлено (29.05.2013, 23:23)
---------------------------------------------
Здесь на этом сайте есть целая ветка для обсуждения "Delphi/Pascal/Object Pascal", а людей которые в нем разбираются - только один? (я имею ввиду товарища daun). Ау!


MaximTG
daunДата: Среда, 29 Мая 2013, 23:43 | Сообщение # 12
постоянный участник
Сейчас нет на сайте
А я уже и забыл про ету тему. Ой! biggrin

Код

     if opendialog1.execute then begin
       Image_Right03.AutoSize:=False;   
       Image_Right03.Proportional:=True;   
       Image_Right03.Stretch:=True;   
       Image_Right03.Picture.LoadFromFile(opendialog1.filename);   
     end;


execute и проверяет, что нажато. Без begin end; под проверкой только первая строка.


Сообщение отредактировал daun - Среда, 29 Мая 2013, 23:53
burlachenkoДата: Четверг, 30 Мая 2013, 00:00 | Сообщение # 13
постоянный участник
Сейчас нет на сайте
Во как всё просто, просто добавили begin и еще один end; , а я на выходных убил около часа и так и не решил проблемы. sad .
Спасибо огромное, на один вопрос стало меньше.
Вот если бы ещё кто посоветовал как сделать отображения каталогов (и папок), находил что то типа "рекурсивного" метода и ещё какого то, но у меня они не работают (скорее всего чего то нужно добавлять в uses).


MaximTG
daunДата: Четверг, 30 Мая 2013, 00:57 | Сообщение # 14
постоянный участник
Сейчас нет на сайте
Там на вкладке Misc есть TShellTreeView, отображает всю файловую систему, его не как не прикрутить.
burlachenkoДата: Вторник, 04 Июня 2013, 12:08 | Сообщение # 15
постоянный участник
Сейчас нет на сайте
Цитата (daun)
Там на вкладке Misc есть TShellTreeView, отображает всю файловую систему, его не как не прикрутить.
Вот это конечно интересно, хотя я не понял как можно использовать его.
Это я не правильно задал вопрос. На самом деле меня интересовала возможность отображать каталоги и файлы в TreeView и ListBox. В интернете находил пример с TreeView, но не могу найти его снова (когда найду его у себя на компьютере, попробую его снова и отпишусь про ошибки).

Добавлено (01.06.2013, 23:03)
---------------------------------------------
-------------------------------------------------------------------------
Я тут прошелся по ветке "Delphi/Pascal/Object Pascal", и понял что на мои вопросы ещё не плохо отвечают, есть товарищи которым вообще никто не помог sad .
Спасибо тем кто помогает.

Добавлено (04.06.2013, 12:08)
---------------------------------------------
Нарисовался ещё один вопрос, как отобразить папки в TreeView через SelectDirectoryDialog?
Стыдно признаться но пробовал через обычный OpenDialog sad


MaximTG
TimKruzДата: Вторник, 04 Июня 2013, 20:42 | Сообщение # 16
старожил
Сейчас нет на сайте
burlachenko, блин, ты такие глупые вопросы задаёшь... Хотя бы основы программирования изучи, потом основы Delphi-программирования по соответствующим руководствам, узнай всего по-больше (всё есть в интернете), и только потом берись реализовывать что-то супер-пупер важное и нужное...
Цитата (burlachenko)
Здесь на этом сайте есть целая ветка для обсуждения "Delphi/Pascal/Object Pascal", а людей которые в нем разбираются - только один? (я имею ввиду товарища daun). Ау!

Я последние два месяца форум GCUP практически не проверял, вот и пропустил эту тему, а так - обращайся ко мне, помогу чем смогу.

Вообще, твоя идея про GUI для простого движка-плеера хороша, но я сомневаюсь, что разработчик этого движка сам это не сделает или уже не сделал. Или движок уже заброшен, никто его не разрабатывает больше?
Я бы мог попробовать разработать такую программу, в принципе, ничего сложного.

Цитата (burlachenko)
Что это за p:PWideChar? у меня ругается, что "Local variable "p" does not seem to be initialized"

Это указатель на переменную. Компилятор не ругается, а просто указывает, что указатель этот используется без инициализации, а, следовательно, может содержать в себе [точнее ссылаться на] любой мусор, т.к. изначально он не привязан ни к какому участку памяти, но может содержать в себе ссылку куда-нибудь (то есть не равен nil).

Цитата (daun)
С цифрами еще можно сортировать, а с буквами придется готовить и перебирать списки всех возможных имен.

Это всё бред, не нужно ничего перебирать. Просто нужно стандартизировать название картинок и спрашивать индекс требуемой группы, либо предлагать вручную выбрать требуемые картинки, либо считать все картинки в указанной папке выбранными. Нужно думать в первую очередь об удобстве для пользователя и защите от дурака, и только потом думать над технической реализацией.

Цитата (burlachenko)
Есть каталог "Pipmak Castle.pipmak" в нем есть произвольное количество папок (например 17, так называемые "nodes"),
можно ли вывести список этих папок в ListBox?

Можно, конечно. Всё делается простым поиском по маске, вполне стандартными средствами. Вот, например:
Код
procedure FindDirectories; //Ищет папки и выводит их список
var r:integer;
   SR:TSearchRec; //Специальная запись для просмотра результатов поиска
begin
   r:=FindFirst('*',0,SR); //Находим первый файл по маске "*" (как в поиске Проводника)
   while r=0 do //Если ничего не найдётся, r будет меньше нуля
   begin
     if SR.Attr=faDirectory then //Если найденный файл - папка
       MainFrm.VirtList.AddItem(SR.Name,nil); //Добавляем имя в список
     r:=FindNext(SR); //Продолжаем поиск
   end;
   FindClose(SR); //Прекращаем поиск, освобождая поисковый движок
end;

Как-то так. Не знаю, как работать будет, переделал из одного старого своего кода и лень проверять, но принцип ясен.

Цитата (burlachenko)
последний скорее всего с подсветкой синтаксиса верно?, насколько сложен в использовании (и стоит ли с ним заморачиватся)?

Если это то, о чём я думаю - то всё просто, как дважды два. Бросаешь компонент на форму, задаёшь ему требуемый язык для подсветки (в твоём случае будет LUA, думаю, он там есть), и дальше используешь как обычный блокнот, он сам будет всё подсвечивать, кажется...

Цитата (burlachenko)
Читал что то про OnClose, но не знаю что с ним делать.

OnClose срабатывает при закрытии формы (и фрейма, кажется), к диалогбоксам и опен/сейв-диалогам не имеет отношения - они и так автоматизированы...

Так, ладно, что-то я уже утомился и могу чего-нибудь лишнего насоветовать... Лучше давай опиши мне подробнее суть задачи, покажи этот Pipmak и свои наработки, а я подумаю, что смогу с этим сделать... Либо попытаюсь полностью всё сам сделать, либо сделаю наброски и объясню, что делать дальше, либо просто посоветую, куда двигаться... smile


burlachenkoДата: Четверг, 06 Июня 2013, 00:39 | Сообщение # 17
постоянный участник
Сейчас нет на сайте
Ого, вот это ответ! На данный момент я не могу "переварить" объективно вами напечатанное (лучше утром, на свежую голову). Хочу ответить только вашему замечанию по поводу:
Цитата (TimKruz)
burlachenko, блин, ты такие глупые вопросы задаёшь... Хотя бы основы программирования изучи, потом основы Delphi-программирования по соответствующим руководствам, узнай всего по-больше (всё есть в интернете), и только потом берись реализовывать что-то супер-пупер важное и нужное...

Брался изучать не раз, что то понимал, что то нет. Когда то изучал Turbo Pascal.
Боюсь что время потраченное на изучение программированию "съест" время предназначенное для таких вещей как "написание GUI для движка". И как говорит пословица "Куй железо, пока исправен молот" :). Пока есть желание что то делать, я буду искать возможность. Я не считаю эту идею чем то супер-пупер важным, думаю что для неё нужны даже не навыки программирования а коддинга, да и основная цель здесь не научится программировать, а создание дружелюбной среды разработки игры для не профессионалов (программирование, здесь средство для достижения цели). Важно не путать цель и средства для её достижения.
Почему выбрал Делфи - ответ где то сверху, потому что есть бесплатная кроссплатформенная среда, с не самым "худым" редактором GUI.
Попозже покажу что уже готово и с идеей которую хочу воплотить (в подробностях).
Пока спасибо за ответ.

Добавлено (05.06.2013, 23:11)
---------------------------------------------

Цитата
Вообще, твоя идея про GUI для простого движка-плеера хороша, но я сомневаюсь, что разработчик этого движка сам это не сделает или уже не сделал. Или движок уже заброшен, никто его не разрабатывает больше?
Я бы мог попробовать разработать такую программу, в принципе, ничего сложного.


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

Движёк (к стате проект опенсорсный) не заброшен, есть рабочие сайт и форум по работе с ним, кросс-платформенный (Линукс, Виндовс, Макинтош, так как открытый исходный код, не исключено появление на Андроид), есть не плохие примеры игр, есть вики по работе с ним, правда все это в лучшем случае на английском.
О самом движке.
Движек позволяет делать 2D квесты или квесты типа Riven c 360 градусным (паннорамным) обзором,
примеры игр: Амерзон, Возвращение на таинственный остров, Шорох, Дракула, серия Мистов...
Начну с того что из себя представляет игра, в смысле файлов и всего прочего.
В папке присутствует основной каталог, в нём присутствуют файл main.lua и папки ("ноды"), в которых находятся ресурсы для игры - графические файлы, файлы звуков и файл типа node.lua, в котором прописаны пути к ним.
В файле main.lua содержится информация о версии движка, название игры и ещё что то, связанное с игровым процессом.
"Ноды" это "комнаты\локации" в игре, щелкая по "хотспотам", мы перемещаемся по этим нодам, куда и как перемещаться описано в node.lua.
Кроме этого есть ещё пару системных библиотек сам исполняемый файл и файл "Pipmak Resources", в котором хранятся такие данные как шрифты, курсоры и ещё что то.
У этого движка (напомню ещё раз, что он называется Pipmak) есть базовый инструмент для разработки игр, с помощью его мы можем создавать папки (так называемые "ноды"), каждая такая папка содержит одну локацию игры. Но все операции - правка файлов node.lua, main.lua, создание папок\нодов, смена ресурсов в этих нодах, смена курсора, шрифта рутинные, особенно если мы делаем для примера не демку из 15-20 комнат, а что то по приличней. Вот у меня и появилась идея создания такой прослойки между пользователем и движком.
Представим себе ситуацию - мы создаем игру, в ней 50 комнат, вместо того, чтобы в ручную создавать их, мы с помощью нашей программы создаем новый проект, даем ему имя(которое записывается без нашего участия в main.lua), указываем количество комнат, а наша программа автоматически генерирует основной каталог с игрой (что то типа"наша_игра.pipmak"), а в нем 50 подкаталогов, в каждом из них по файлу node.lua.
То есть всю рутину программа берет на себя. Это описан первый этап создания проекта.
Второй этап проекта - заполнение "нодов" ресурсами.
Переходим на вторую вкладку программы, выбираем (например из ListBoxa) нужную нам "комнату" из специального диалога и загружаем графику и звуки, программа сама дописывает пути к ним в node.lua. Нам дается возможность только наблюдать за этим и в случае необходимости подправить их вручную.
(Позже продолжу).

Добавлено (06.06.2013, 00:39)
---------------------------------------------
Третий этап создания проекта. Переходим на третью вкладку нашей программы, редактор
"хотспотов". Прямо в окне программы редактируем соответствующий файл, одной кнопкой
сохраняем его в соответствующем ноде и записываем изменения в node.lua.
Скорее всего те кто более-менее внимательно прочитал посты понял, что программа здесь
подрабатывает "генератором кода", не давая ошибится не очень опытным кодерам.
Как вариант, если не будет препятствий, можно было бы добавить "визуализатор" переходов от
нода к ноду. Тяжело запомнить переходы в нескольких десятках комнатах, программа просто
нарисует их нам. (Вот это наверное будет самое тяжелое ("хотспоты"), так как я еще не
разобрался полностью, но на вики есть статья, которую переведу с английского в ближайшем
будущем).
Этап четвертый. На четвертой вкладке установить элементы, которые помогут просматривать а в
случае необходимости и изменять файл "Pipmak Resources". В нем находятся курсоры, могут быть
элементы меню и шрифты. На данный момент чтобы сейчас что то изменить в нем, нам нужно
распаковать его содержимое в произвольный каталог (это обычный zip формат, только без
расширения), сделать все необходимые манипуляции и снова все упаковать. Ничего сложного, но
достаточно сделать это 5-6 раз и нам станет это "не интересно".
У Делфи вроде есть компонент который умеет работать с архивами, теперь осталось найти
человека, который умеет работать с этим компонентом.
Сюда же можно "прикрутить" редактор диалогов, текстов или что там есть в игре.
Где то вот так я вижу всё это. Все это (это конечно мое мнение) можно и нужно реализовать с
помощью стандартных компонентов, что бы можно было скомпилировать программу не только под
Виндовс.
Всё что описано выше - не лишено условностей, работа над самой программой внесет свои
коррективы. Нужно сделать из неё хотя бы просмоторщик готовых проектов, оценить удобство и на
основе полученных результатов выбрать направление в дальнейшей разработке.
Товарищ TimKruz если вы готовы помочь, ближайшим временем я выложу то что уже готово (хочу
подобавлять комментарии и несколько компонентов на форму) и согласуем наши действия.


MaximTG
daunДата: Четверг, 06 Июня 2013, 10:04 | Сообщение # 18
постоянный участник
Сейчас нет на сайте
Сильно не вникал, но по моему в этом движке, неплохом по возможностям, отсутствует самое главное - работа с изображениями.
Для зрелищной игры, нужно иметь готовую 3D сцену, еще нужно получить изображения панорамы, на точках перехода,
сферического мира в кубический скибокс. Или, хотя бы, инструменты деформации нарисованной панорамы.
burlachenkoДата: Четверг, 06 Июня 2013, 21:35 | Сообщение # 19
постоянный участник
Сейчас нет на сайте
Цитата (daun)
Сильно не вникал, но по моему в этом движке, неплохом по возможностям, отсутствует самое главное - работа с изображениями.

Это движек, он просто выводит картинку на экран, больше ничего ему не нужно делать.
Если вы имеете ввиду какие то функции редактирования, тогда да - у движка они отсутствуют. Вообще движек работает с уже подготовленными ресурсами, для этого используются "сторонние" инструменты.
Цитата (daun)
Для зрелищной игры, нужно иметь готовую 3D сцену, еще нужно получить изображения панорамы, на точках перехода,
сферического мира в кубический скибокс. Или, хотя бы, инструменты деформации нарисованной панорамы.

Да, нужно иметь готовую сцену, как и для любой более-менее приличной игры нужен качественный контент, но для этого также используются сторонние программы. На вики по Pipmak'у есть подробная статья, в которой описано как получить и отрендерить кубическую панораму в 3Д Максе, Блендере , Паверее, Брусе, Вуе, и Террагене. Панораму также можно получить и в Скетчапе, с помощью плагина "пано". Есть даже специальная программа, которая позволяет художникам рисовать панорамы (в редакторе на подобие пейнта).
Учитывая тот факт что такого ПО для создания панорам предостаточно, разработчики движка занимались только им и ничем другим smile
Деформировать для панорамы изображения не нужно, движек это делает за нас, достаточно скачать пример игры сделанной на этом движке и посмотреть на ресурсы, повертеть камерой, чтобы понять как оно работает (если будет такое желание, рекомендую поискать игру "The Sphere").
Суть создания GUI для движка - упростить наполнение (готовым) контентом папок с игрой и переложить обязательное но рутинное заполнение Lua файлов на саму программу, максимально "визуализировать" все это (в одном окне), и упростить создание игр на этом движке.



MaximTG
shubniggurathДата: Четверг, 06 Июня 2013, 21:38 | Сообщение # 20
www.playnoread.com
Сейчас нет на сайте
Цитата (burlachenko)
Я считаю, что человеку творческому (плохо разбирающемуся в "кодинге") или человеку с ограниченным временем на такое "хобби" (как например я) будет тяжеловато себя реализовать, так как "рутина" с которой сталкиваешься во время работы с движком отбивает охоту.

КОнечно дорогой камрад, всю грязную и рутинную работу должен сделать кто-то другой.


Учу 3д!
Форум игроделов » Программирование » Delphi/Pascal/Object Pascal » Создание GUI для движка. (Нужна помощь в реализации.)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг