Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.09.2011, 21:24   #591
Odinok
Пользователь
 
Аватар для Odinok
 
Регистрация: 08.03.2011
Сообщений: 91
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
битмап вообще не имеет координат, он рисуется там где ему скажут(или компонент его содержащий)
тогда почему возникает такая проблема, рисуется квадрат в координатах -64 64 и 1028 1028+64 при передвижении канвы, квадрат 1024+64 заходит в область видимости, а вот квадрат -64 не рисуется, будто его там и небыло

мне надо нарисовать буфер большого размера чем экран и передвигать его, с право и снизу картинка нормально двигается, а вот сверху и слева их будто там и нет,ммм как объяснить то Бермоа мне как то предлагал для оптимизации не отрисовывать всю карту а отрисовывать одну линию которая крайняя, если он помнит, а вот у меня так не получилось
Всё будет так, как должно было быть, даже, если будет наоборот.
Odinok вне форума Ответить с цитированием
Старый 04.09.2011, 15:46   #592
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Скрин работы покажи.

"Бермоа" - такого пользователя не существует.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 15.09.2011, 01:06   #593
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию

Beermonza Выделил бы уже ветку по своему проекту... А то вот мне интересно по нему почитать как там дела продвигаются, а тут много лишнего флуда...Кстати как он там?
dampirik вне форума Ответить с цитированием
Старый 15.09.2011, 15:14   #594
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Цитата:
Сообщение от dampirik Посмотреть сообщение
Beermonza Выделил бы уже ветку по своему проекту... А то вот мне интересно по нему почитать как там дела продвигаются, а тут много лишнего флуда...Кстати как он там?
Проект освещается в соседней теме "Как Вы относитесь к созданию игр на Delphi?".
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 16.09.2011, 00:58   #595
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию

Ууу.. как я давно не был, заблудился, сори)
P.S. И если будет время, было бы супер если все это привести в одну большую статью....всетаки опыт полученный большой...
dampirik вне форума Ответить с цитированием
Старый 10.10.2011, 18:33   #596
bloodthirsty
Новичок
Джуниор
 
Регистрация: 10.10.2011
Сообщений: 1
По умолчанию

execom, можешь помочь с игрой Lines? А то есть вопросы. Как можно реализовать эту игру не через волновик, а с помощью алгоритма а*?
bloodthirsty вне форума Ответить с цитированием
Старый 08.01.2012, 12:46   #597
Enlightened
Пользователь
 
Регистрация: 15.08.2010
Сообщений: 24
Стрелка Разговор с NPC

Решил поднять эту тему новым вопросом.
Допустим, мы пишем аркаду, RPG или квест.
Как правильно реализовать общение с NPC?
Как лучше хранить тонны диалогов?
Разумеется, диалоги в exe хранить не будем, по моему мнению, это просто глумление над игрой. Да и кто знает? Может, в игре будет предусмотрен редактор карт и будет дана возможность игроку самостоятельно редактировать и добавлять новые диалоги.

Вот мои идеи:
Условно разделить всех NPC на "торговцев" и "собеседников" (я рассматриваю случай написания RPG).

1) Если игрок подходит и начинает общение с "торговцем", то тут все предельно ясно: выводим окно его товаров, окно инвентаря игрока. Обрабатываем процедуры покупки/продажи.

2) Игрок начинает разговор с "собеседником". Предварительно для каждого NPC данного типа заведена папка с его условным номером, в которой содержится некоторое количество текстовых файлов.
В момент обращения героя к боту проверяем: если встретились впервые - вывести реплики приветствия; если можно взять квест - дать условия задания; если уже квест сдается - дать награду и т.д.

То есть состояние NPC делится на фазы:
-приветствие (Приветствую, путник!)
-предложение квеста (Не желаешь ль убить местного некроманта?)
--реплика на согласие (Отлично! Вот и иди.)
--реплика на отказ (Не хочешь - как хочешь.)
-напоминание о квесте (Как? Ты еще не убил некроманта?)
-выдача награды (Спасибо, теперь в этих землях будет мир и покой! Вот тебе этот ржавый меч и монетка.)
-пустое сообщение (Еще раз спасибо за помощь)

Во время выполнения квеста меняем фазы, берем соответствующие реплики, даем соответствующие награды.

Имеет ли такой способ право на существование или очень уж получается много лишнего кода?
Буду рад выслушать любую критику, предлагайте свои идеи.
Enlightened вне форума Ответить с цитированием
Старый 08.01.2012, 15:46   #598
Sargonass
Пользователь
 
Аватар для Sargonass
 
Регистрация: 21.09.2011
Сообщений: 35
По умолчанию

Если делать более-менее нормальный проект то думаю что хранить данные в текстовых файлах как-то не очень. Я щас занимаюсь разработкой игры и попутно редактора этой игры (как например в Морровинде/Обливионе). Буквально только что доделал систему диалогов. Создал 2 структуры: структура с темами и структура с ответами. Каждой теме присвоены номера по которым к ним обращаются ответы. Данные храню в битовом формате. Как такой способ?
Sargonass вне форума Ответить с цитированием
Старый 08.01.2012, 16:09   #599
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию Пример структуры "Квестового движка"

Цитата:
Сообщение от Enlightened Посмотреть сообщение
Допустим, мы пишем аркаду, RPG или квест.
Как правильно реализовать общение с NPC?
Как лучше хранить тонны диалогов?
Эта тема уже не укладывается в привычном понимании в советы новичкам, поскольку требует изучения и сознания более сложного механизма под названием - квестовый движок. Уровень развития логического мышления должен быть уже средним, и поэтому для таких тем у нас принято создавать отдельные темы. Если вы имеете в виду пародию на квестовый движок, примитивную имитацию с минимумом возможностей, то вполне можно дать некоторые советы.

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

Допустим, некоторый объект игры - кузнец, имеет квест для пользователя, чтобы он принес определенное количества редкого сырья для нужд изготовления первоклассного оружия. В триггере первым делом в шапке закодирован тип взаимодействия: 1 - квест, 2 - диалог. Далее идет тип объекта при взаимодействии с которым триггер запускается: 1 - пользователь (могут быть триггеры действия, направленные к другим объектам). Далее идет временной индекс: 1 - безвременной, 2 - временной, т.е. может быть так, что если квест не выполнен по прошествии некоторого времени, то он "сбрасывается". Следом идет код времени квеста (если 1 - безвременной, то этот пункт пропускается). Далее идут статусы для объектов взаимодействия, ...это может быть фильтр параметров, какие именно характеристики должны быть у объекта, например, уровень 25, и так далее по всем возможным характеристикам. Т.е. если я - пользователь с уровнем 12, то квест сбросится сразу же, при чтении шапки триггера, ...если мой уровень 25 и более, то пройдет далее на выполнение. Это минимум, что должно быть в шапке любого триггера, далее по своему усмотрению вы должны дополнять ее всеми необходимыми статусами и индексами, создавая все более и более универсальную структуру.

Далее после шапки в триггере идет последовательность команд/условий. Вы должны создать кодировку и метод определения и считывания их по частям. Например:

1 3 1 234 5 6 11 30 4 "Спасибо." 7 3 1

Расшифровка:

1 - команда
3 - условие
1 - разовое
234 - код предмета "Железной руда"
5 - количество
6 - предмет в инвентарь персонажу
11 - код монет
30 - количество
4 - дополнительное действие "Сказать"
"Спасибо." - текст сообщения
7 - код прибавки опыта
3 - количество
1 - набор кнопок "только Закрыть"

Теперь все это литературным языком: если персонаж вручит обладателю триггера 5 кусков железной руды, то обладатель триггера вручит объекту взаимодействия 30 монет, скажет "Спасибо.", объект взаимодействия получит +3 опыта, ...в форме диалога будет одна кнопка "Закрыть".

Это очень примитивный вариант (одно из направлений - "Условие"), который должен быть в реале в 100 рез сложнее. Нужна так же структура загрузки и выгрузки триггеров в процессе работы программы. Это массив записей, он проверяется каждый такт для каждого объекта (если у объекта стоит флаг "выполнять триггеры") и через структуру Case, очень ветвистую и сложную в понимании происходит обработка команд триггера. Теперь учтите еще момент, когда у одного объекта несколько триггеров. Сложно? ...на самом деле просто, но нужно только научиться видеть структурно.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 14.01.2012, 17:29   #600
bukashka
 
Регистрация: 12.01.2012
Сообщений: 7
По умолчанию

Вот разбираюсь со второй страницей:

Цитата:
Сообщение от execom Посмотреть сообщение
Урок №9
А вот исходник более серьёзной и весьма увлекательной игрухи! Игра называется "Линии"! Цель игры методом передвиженя кружков необходимо поставить в ряд 4 и более кружка одного цвета, при этом они исчезают! При каждом ходе появляется несколько новых кружков. Игра заканчивается когда заканчивается место на игровом поле! Что бы передвинуть кружок, надо по нему щёлкнуть, а потом щёлкнуть по месту назначения, но при том условии что кружок сможет доехать до места назначения не перепрыгивая (хотя можно обходить) через другие кружки! В общем кому интересно разберитесь с исходником, он там не сложный, а кому не очень это интересно, советую поиграть!!!
Помогите пожалуйста разобраться, в Каком месте исправить(если в данном случае это возможно), чтобы было заметно какой шарик выделили? Завтра ещё подумаю, но че-то не доходит пока.. Ну например, чтобы он смещался на 3 пикс вверх, когда на него нажали.
A journey of a thousand miles begins with a single step
bukashka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



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