Воскресенье, 24 Ноября 2024, 05:57

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Результаты поиска
ArchidoДата: Пятница, 17 Августа 2012, 21:31 | Сообщение # 521 | Тема: Движение к точке в платформере
Сэнсэй
Сейчас нет на сайте
Quote (Saladin)
Как вы умудряетесь налить столько воды не сказав ничего по делу?

Quote (ЭтоЧудоИзЧудес)
Как будто здесь когда-нибудь было иначе.

Толсто happy


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
ArchidoДата: Пятница, 17 Августа 2012, 19:17 | Сообщение # 522 | Тема: Движение к точке в платформере
Сэнсэй
Сейчас нет на сайте
Quote (Нохчи)
мысль такая была: берем любой блок и определяем, можно ли с него перейти на соседние(свообное пространство это тоже блоки), если да, смотрим, можно ли с них перейти на следующие и т.д., таким образом обходим все блоки

А, вот терь ясно. Правда, будут проблемы, если геометрия уровня непростая, ну и генериться будет не очень быстро smile . Ну да ладно, бог с ним, мысль ясна.

Quote (Нохчи)
ТС говорил не о скорости генерации уровня, а о скорости просчета пути на уже готовом уровне, мне кажется проблем с быстродействием не должно быть.

А по-моему как раз с этим и проблемы или я неправильно понял, но "генерировать" то можно раз и в файл сохранить (об этом уже все сказали), но как выяснилось - этот вариант не подходит в данном случае. Поэтому я и сделал вывод о том, что "генерация" медленная, т.к. ее при старте нужно делать каждый раз. А сам поиск пути по графу достаточно быстр по идее... Но если все таки с поиском проблемы, то можно "волновой" или вообще А* прикрутить, будет весьма быстро smile


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)

Сообщение отредактировал Archido - Пятница, 17 Августа 2012, 19:17
ArchidoДата: Пятница, 17 Августа 2012, 18:57 | Сообщение # 523 | Тема: С чего начать?
Сэнсэй
Сейчас нет на сайте
DeusEx-12
Классно и очень правильно написано, +1.

Надо бы и правда оформить такой пост и прикрепить к разделу (либо как статью), после чего "отправлять" новичков читать, если у них возникнут подобные вопросы.


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
ArchidoДата: Пятница, 17 Августа 2012, 12:13 | Сообщение # 524 | Тема: С чего начать?
Сэнсэй
Сейчас нет на сайте
Quote (odment)
Уж не с делфи то начинать?

А почему бы и нет? Какие то проблемы?

Quote (odment)
Я начал сразу с С++ и ни чего страшного.

Начинать можно с чего угодно и как угодно, вопрос в том, будет ли с этого толк.
Есть много людей, кто считает, что они "знают С++", но в реале они знают лишь 5-10 процентов в лучшем случае и совершенно не умеют строить алгоритмы.

Тут уже каждый насоветовал со своей колокольни, спорить о том, что лучше здесь смысла не вижу.
Поэтому на вопрос атора темы отвечаю:
Quote (Orochimaru)
Решил выучит яп от их разнообразия голова кругом.Выбор остановился на Basic и Pascal какой лучше начинать учить?

Pascal и как по мне, для начала - неплохой выбор.


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
ArchidoДата: Пятница, 17 Августа 2012, 11:26 | Сообщение # 525 | Тема: С чего начать?
Сэнсэй
Сейчас нет на сайте
Quote (shaman4d)
Да вы что?! Только я вот уже 9 лет жалею что не сделал именно так

Есть и обратный опыт. Начинать программирование с нуля на С++ - плохая затея.


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
ArchidoДата: Пятница, 17 Августа 2012, 09:04 | Сообщение # 526 | Тема: вопросы по разным алгоритмам
Сэнсэй
Сейчас нет на сайте
Quote (Stalker_Shooter)
Но это уже больше по технической части

Да, детали уже пошли в ход, но ты прав smile

С "деталями" я бы сделал так:
Code

const int Value = 5;

int Offset = TargetAngle - CurrentAngle;
if (Offset > Value) Offset = Value;
if (Offset < -Value) Offset = -Value;

if (TargetAngle != CurrentAngle) CurrentAngle += Offset; //тут даже условие не обязательно

Тогда при любом CurrentAngle оно "приедет" в любой TargetAngle smile . Правда есть один нюанс: если угол ограничен множеством [0; 360), то неплохо еще определять в какую сторону "быстрее" поворачивать, но это уже еще более детальные детали happy


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)

Сообщение отредактировал Archido - Пятница, 17 Августа 2012, 09:05
ArchidoДата: Пятница, 17 Августа 2012, 08:38 | Сообщение # 527 | Тема: С чего начать?
Сэнсэй
Сейчас нет на сайте
Quote (DeusEx-12)
Вашем случае мы говорим об изучении основ программирования, поэтому Бэйсик или Паскаль - буду действительно лучшим вариантом (лично мой опыт - Basic)

Подтверждаю. Сам Pascal / Delphi первыми изучал, потом уже, действительно, можно выбирать любой язык.


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)

Сообщение отредактировал Archido - Пятница, 17 Августа 2012, 08:39
ArchidoДата: Пятница, 17 Августа 2012, 08:33 | Сообщение # 528 | Тема: Движение к точке в платформере
Сэнсэй
Сейчас нет на сайте
Quote (Нохчи)
определять нужно лишь один раз, дальше можно хоть в файл сохранить, хоть еще куда-то. Весь разговор о том, что эмулировать движения перса не обязательно, если "правила" наши не меняются по ходу игры конечно.

Как уже было сказано, вариант сохранять в файл - это не вариант в данном случае. Но я вообще-то не это имел в виду.

Тут смотря еще что подразумевать под эмуляцией. Поэтому меня интересует конкретно сам процесс и алгоритм "генерации уровня" с помощью "правил" (и от этого зависит конечное быстродействие, но это менее важно).
Вот есть сырой массив \ пачка объектов уровня, нужно построить, исходя из этой информации, связный граф. Повторюсь, как конкретно определить, что с одного блока можно попасть на другой? И не только "запрыгивать", но еще и "спрыгивать", при этом совсем не обязательно, что эти блоки будут расположены относительно друг друга по "правилам" (т.к. можно спрыгнуть и пролететь огого сколько, но в итоге приземлиться на конкретный блок).

P.S. LunarPixel, да простишь ты нас, за небольшой оффтоп happy ?


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)

Сообщение отредактировал Archido - Пятница, 17 Августа 2012, 08:42
ArchidoДата: Пятница, 17 Августа 2012, 08:12 | Сообщение # 529 | Тема: вопросы по разным алгоритмам
Сэнсэй
Сейчас нет на сайте
Quote (arrow25)
если не понятно объяснил то пишите, объясню с картинками)

Да, давай с картинками biggrin .

Если я правильно все понял, то вроде же это просто.
Есть некоторая ф-ция Update(), которая периодически вызывается и обновляет состояния (перемещение спрайтов, тут же обработка клавиш, etc). Так вот, что мешает завести две переменных, типа TargetAngle и CurrentAngle, при нажатии клавиши делать TargetAngle = 90 и в этой ф-ции проверять "ecли TargetAngle != CurrentAngle, то CurrentAngle += 5" и постоянно звать FunctionRotate(sprite, CurrentAngle)


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
ArchidoДата: Четверг, 16 Августа 2012, 18:51 | Сообщение # 530 | Тема: Движение к точке в платформере
Сэнсэй
Сейчас нет на сайте
Quote (LunarPixel)
Ну мы получаем граф из всех возможных доступных путей и по этим путям ищем кратчайший до цели

Не, это то понятно. Интересно как раз таки - как определять эти самые возможные доступные пути вообще и наиболее эффективно.
Вот как определить, что с одного блока можно запрыгнуть на другой? Или в определенном месте можно запрыгнуть на какой-то блок? Или, что можно спрыгнуть с блока на большой высоте - пролететь некоторое пространство smile и приземлиться на другой. Вот как на картинке в №15. Такое нормально отработает? Мне именно сам процесс построения "доступных путей" интересен smile

Quote (LunarPixel)
Тут просто есть ещё один подводный камушек, связанный с самой системой, которую я делаю... Дополнительные сторонние файлы не очень желательны

Вообще, можно записать сначала в файл, а потом особым образом содержимое файла записать в ехе файл (или как файл ресурсов). Но скорее всего, в ГМ так нельзя делать smile . А с чем, если не секрет, связаны такие ограничения?

Quote (LunarPixel)
У меня такого нет, но как быть, если локация изменяется случайным образом, динамически, непосредственно во время игрового процесса!?

smile . Но это, видимо, смотря как изменяется.
Если, что-то разрушается - то соответственные этому вершины графы удаляются и маршрут будет выбираться из других возможных.
Если это какие - нибудь движущиеся платформы, то в их движении обычно всегда присутствует цикличность, что дает возможность заранее это дело рассчитать.
А вот при добавлении чего либо и в следствиии появления новых возможных маршрутов - это уже сложный вопрос smile , но потенциально быстро кое-какие места пересчитать может и реально happy


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)

Сообщение отредактировал Archido - Четверг, 16 Августа 2012, 18:52
ArchidoДата: Четверг, 16 Августа 2012, 17:44 | Сообщение # 531 | Тема: Движение к точке в платформере
Сэнсэй
Сейчас нет на сайте
Quote (Нохчи)
Есть простые правила, которые регламентируют как должны распологаться блоки относительно друг-друга, чтобы можно было считать их смежными в графе. Есть какие-то трудности?

Мм, ну тогда весь вопрос алгоритма в том, как эти близжайшие блоки быстро определять. А как насчет такого маршрута? happy :



Quote (LunarPixel)
Вот это, кстати, вариант. Если ничего лучше не придумается, то, пожалуй, так и сделаю

Так обычно и делается smile , в играх всегда навигационные данные единственный раз считают, а потом быстро загружают. Поэтому если само "передвижение" по этим данным не тормозит и ошибок не делает, то выбор очевиден smile


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)

Сообщение отредактировал Archido - Четверг, 16 Августа 2012, 17:59
ArchidoДата: Четверг, 16 Августа 2012, 17:04 | Сообщение # 532 | Тема: Движение к точке в платформере
Сэнсэй
Сейчас нет на сайте
Quote (Нохчи)
мы знаем на какие блоки можно попасть с любого другого

Откуда мы это знаем?

Quote (LunarPixel)
при большом количестве блоков, на большой локации, такой вариант, думаю, тоже будет весьма затратным

При очень большой да, может задуматься smile . Но зато 100% процесс автоматический.
Нет возможности делать его 1 раз после создания карты и сохранять в файл? После чего таскать его с собой и быстро загружать в игру.

И да, затраты только до начала игры - поиск по графу весьма быстр.


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)

Сообщение отредактировал Archido - Четверг, 16 Августа 2012, 17:14
ArchidoДата: Четверг, 16 Августа 2012, 16:58 | Сообщение # 533 | Тема: Проблема с DirectX
Сэнсэй
Сейчас нет на сайте
Quote (maXimBestUA)
Скачал два эти архива но чтото они поначалу не захотели компилится, скачал также либы оттуда и все скомпилилось

Так я же вроде сылки давад на хедеры и либы, ну ладно, главное работает smile

Quote (maXimBestUA)
Большое спасибо за помощь.

Учись хорошо happy . И обзаведись студией MSVS в близжайшем времени, проще будет wink


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)

Сообщение отредактировал Archido - Четверг, 16 Августа 2012, 17:00
ArchidoДата: Четверг, 16 Августа 2012, 16:52 | Сообщение # 534 | Тема: Движение к точке в платформере
Сэнсэй
Сейчас нет на сайте
А окружение полностью статическое? Т.е. платформы не двигаются?

Есть такая мысль автогенерации:
Вот на картинке есть синие клетки - клетки карты на которых можно стоять, им стоит присвоить уникальный ID. Персонаж, как я понимаю, умеет прыгать вправо\влево и просто двигаться аналогично, т.е. 4 варианта движения у него.
Так вот, можно перед стартом игры "эмулировать" действия этого перса, ставив его в каждую уникальную клетку карты и выполняя вышеприведенные действия (прыг влево, шажок вправо и т.д.). Таким образом можно определить с какой клетки можно попасть на какую-то другую и с помощью какого действия, при этом можно добавить сюда учет веса (чем больше клеток за "действие" можно преодолеть, тем больше вес для этого действия), чтобы наиболее короткий маршрут выбирать.
В итоге мы знаем как из одной клетки попасть в другую, нужно лишь связать все это вместе - и получится вообщем-то готовый граф, в котором можно выполнять "нахождение маршрута между вершинами" при любой стартовой и конечной позиции.


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
ArchidoДата: Четверг, 16 Августа 2012, 13:53 | Сообщение # 535 | Тема: Проблема с DirectX
Сэнсэй
Сейчас нет на сайте
Да, это очень старый sdk и там полноценная d3dx9.lib, которая не слинкуется с приложением компилятором MinGW. Зато можно слинковать c d3dx9d.lib, но тогда придеться еще поискать d3dx9d.dll biggrin , которые могут быть разных версий и разного набора ф-ций.

Quote (maXimBestUA)
\desktop\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.5.2\..\..\..\..\include\dxfile.h|240|error: stray '\32' in

Эта ошибка возникает потому, что там в конце файла написан бред и его нужно удалить, тогда скомпилится, но не слинкуется.

Вообще проще чуть поновее поискать все эти файлы.

---

Например такие и такие.
C ними все собирается, возможно еще потребует какую-нибудь d3dx9_xx.dll, но не должен. Во всяком случае последнюю будет проще найти.


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)

Сообщение отредактировал Archido - Четверг, 16 Августа 2012, 14:19
ArchidoДата: Четверг, 16 Августа 2012, 12:58 | Сообщение # 536 | Тема: Проблема с DirectX
Сэнсэй
Сейчас нет на сайте
maXimBestUA
Напиши линк откуда качал набор .h и .lib, там видимо d3dx9 полноценная статическая библиотека (c новым SDK все линкуется на ура, ибо там она обеспечивает только связь с dll).


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
ArchidoДата: Четверг, 16 Августа 2012, 12:43 | Сообщение # 537 | Тема: Проблема с DirectX
Сэнсэй
Сейчас нет на сайте
Quote (maXimBestUA)
Подключился только один единственный d3d9.lib, с d3dx9.lib уже ошибки пишет.

Что пишет?


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
ArchidoДата: Среда, 15 Августа 2012, 17:42 | Сообщение # 538 | Тема: Проблема с DirectX
Сэнсэй
Сейчас нет на сайте
maXimBestUA
Как выяснилось, MinGW компилятор (который в Code::Blocks по умолчанию идет) без проблем линкует С'шные lib'ы (не С++), созданные с помощью MSVC. Поэтому можно просто напрямую использовать хедеры и либы из DX SDK и не париться со сменой компилятора.

Quote (maXimBestUA)
сейчас у меня проблемы с компом, нету прав администратора, и установить Visual Studio я не могу, как и DirectX SDK

Это весьма печально smile

Quote (maXimBestUA)
Ели нашел все эти d3d9.h

Т.е. найдены они на просторах интернета? И линкуется все это с .a библиотеками, которые идут в комплекте с MinGW?
Если так, то надо бы найти и .lib'ы тоже. Т.к. есть вероятность, что определение в .h и реализация в .lib(dll) не совпадает (ибо стандартные *.a там очень старые), поэтому и возникает ошибка "undefined reference to 'D3DXCreateFontA@48'"

Добавлено (15.08.2012, 17:42)
---------------------------------------------
Да, в d3dx9.a у MinGW красуется ф-ция "D3DXCreateFont@12", с тремя параметрами и без "A" в конце. Старая версия вообщем, нужно либо старые .h поискать, либо .lib поновее найти smile


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)

Сообщение отредактировал Archido - Среда, 15 Августа 2012, 17:44
ArchidoДата: Вторник, 14 Августа 2012, 20:49 | Сообщение # 539 | Тема: Учёба в институте
Сэнсэй
Сейчас нет на сайте
1) Хабаровский Тихоокеанский Гос. Университет. Факультет Компьютерных и Фундаментальных Наук.
2) Было в районе 60К - 65К руб. Поступал на бюджет.
3) У нас всему, что прямо не касалось программирования учили норм (кучи математики, физика, архитектура PC и т.п.), а вот с программированием полная печаль biggrin
4) Тут вроде уже все написали. Скажу только, что неплохо уже уметь хоть немного программировать и знать самые основы выс. математики (комплексные числа, пределы, производные, матрицы, векторы и т.п.), тогда будет очень легко втянуться. Ибо у нас были люди, кто ни в том, ни в другом совсем ничего не смыслили и им было в разы сложнее первое время.
5) Нужен 100%. Хотя бы нэтбук.


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
ArchidoДата: Вторник, 14 Августа 2012, 11:30 | Сообщение # 540 | Тема: Движок на с++.
Сэнсэй
Сейчас нет на сайте
ARTHUR(MX)
Учи язык, не занимайся ерундой - так у тебя ничего не получится. Ты либо забьешь совсем на это, либо в итоге придешь к тому, о чем тебе здесь говорят - учиться нужно сначала. А пока поймешь - впустую потратишь время.


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
Поиск:

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