Результаты поиска
| |
Archido | Дата: Пятница, 17 Августа 2012, 21:31 | Сообщение # 521 | Тема: Движение к точке в платформере |
Сэнсэй
Сейчас нет на сайте
| Quote (Saladin) Как вы умудряетесь налить столько воды не сказав ничего по делу? Quote (ЭтоЧудоИзЧудес) Как будто здесь когда-нибудь было иначе. Толсто
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
|
|
| |
Archido | Дата: Пятница, 17 Августа 2012, 19:17 | Сообщение # 522 | Тема: Движение к точке в платформере |
Сэнсэй
Сейчас нет на сайте
| Quote (Нохчи) мысль такая была: берем любой блок и определяем, можно ли с него перейти на соседние(свообное пространство это тоже блоки), если да, смотрим, можно ли с них перейти на следующие и т.д., таким образом обходим все блоки А, вот терь ясно. Правда, будут проблемы, если геометрия уровня непростая, ну и генериться будет не очень быстро . Ну да ладно, бог с ним, мысль ясна.
Quote (Нохчи) ТС говорил не о скорости генерации уровня, а о скорости просчета пути на уже готовом уровне, мне кажется проблем с быстродействием не должно быть. А по-моему как раз с этим и проблемы или я неправильно понял, но "генерировать" то можно раз и в файл сохранить (об этом уже все сказали), но как выяснилось - этот вариант не подходит в данном случае. Поэтому я и сделал вывод о том, что "генерация" медленная, т.к. ее при старте нужно делать каждый раз. А сам поиск пути по графу достаточно быстр по идее... Но если все таки с поиском проблемы, то можно "волновой" или вообще А* прикрутить, будет весьма быстро
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) Но это уже больше по технической части Да, детали уже пошли в ход, но ты прав
С "деталями" я бы сделал так: 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 . Правда есть один нюанс: если угол ограничен множеством [0; 360), то неплохо еще определять в какую сторону "быстрее" поворачивать, но это уже еще более детальные детали
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, да простишь ты нас, за небольшой оффтоп ?
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
Сообщение отредактировал Archido - Пятница, 17 Августа 2012, 08:42 |
|
| |
Archido | Дата: Пятница, 17 Августа 2012, 08:12 | Сообщение # 529 | Тема: вопросы по разным алгоритмам |
Сэнсэй
Сейчас нет на сайте
| Quote (arrow25) если не понятно объяснил то пишите, объясню с картинками) Да, давай с картинками .
Если я правильно все понял, то вроде же это просто. Есть некоторая ф-ция Update(), которая периодически вызывается и обновляет состояния (перемещение спрайтов, тут же обработка клавиш, etc). Так вот, что мешает завести две переменных, типа TargetAngle и CurrentAngle, при нажатии клавиши делать TargetAngle = 90 и в этой ф-ции проверять "ecли TargetAngle != CurrentAngle, то CurrentAngle += 5" и постоянно звать FunctionRotate(sprite, CurrentAngle)
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
|
|
| |
Archido | Дата: Четверг, 16 Августа 2012, 18:51 | Сообщение # 530 | Тема: Движение к точке в платформере |
Сэнсэй
Сейчас нет на сайте
| Quote (LunarPixel) Ну мы получаем граф из всех возможных доступных путей и по этим путям ищем кратчайший до цели Не, это то понятно. Интересно как раз таки - как определять эти самые возможные доступные пути вообще и наиболее эффективно. Вот как определить, что с одного блока можно запрыгнуть на другой? Или в определенном месте можно запрыгнуть на какой-то блок? Или, что можно спрыгнуть с блока на большой высоте - пролететь некоторое пространство и приземлиться на другой. Вот как на картинке в №15. Такое нормально отработает? Мне именно сам процесс построения "доступных путей" интересен
Quote (LunarPixel) Тут просто есть ещё один подводный камушек, связанный с самой системой, которую я делаю... Дополнительные сторонние файлы не очень желательны Вообще, можно записать сначала в файл, а потом особым образом содержимое файла записать в ехе файл (или как файл ресурсов). Но скорее всего, в ГМ так нельзя делать . А с чем, если не секрет, связаны такие ограничения?
Quote (LunarPixel) У меня такого нет, но как быть, если локация изменяется случайным образом, динамически, непосредственно во время игрового процесса!? . Но это, видимо, смотря как изменяется. Если, что-то разрушается - то соответственные этому вершины графы удаляются и маршрут будет выбираться из других возможных. Если это какие - нибудь движущиеся платформы, то в их движении обычно всегда присутствует цикличность, что дает возможность заранее это дело рассчитать. А вот при добавлении чего либо и в следствиии появления новых возможных маршрутов - это уже сложный вопрос , но потенциально быстро кое-какие места пересчитать может и реально
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
Сообщение отредактировал Archido - Четверг, 16 Августа 2012, 18:52 |
|
| |
Archido | Дата: Четверг, 16 Августа 2012, 17:44 | Сообщение # 531 | Тема: Движение к точке в платформере |
Сэнсэй
Сейчас нет на сайте
| Quote (Нохчи) Есть простые правила, которые регламентируют как должны распологаться блоки относительно друг-друга, чтобы можно было считать их смежными в графе. Есть какие-то трудности? Мм, ну тогда весь вопрос алгоритма в том, как эти близжайшие блоки быстро определять. А как насчет такого маршрута? :
Quote (LunarPixel) Вот это, кстати, вариант. Если ничего лучше не придумается, то, пожалуй, так и сделаю Так обычно и делается , в играх всегда навигационные данные единственный раз считают, а потом быстро загружают. Поэтому если само "передвижение" по этим данным не тормозит и ошибок не делает, то выбор очевиден
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
Сообщение отредактировал Archido - Четверг, 16 Августа 2012, 17:59 |
|
| |
Archido | Дата: Четверг, 16 Августа 2012, 17:04 | Сообщение # 532 | Тема: Движение к точке в платформере |
Сэнсэй
Сейчас нет на сайте
| Quote (Нохчи) мы знаем на какие блоки можно попасть с любого другого Откуда мы это знаем?
Quote (LunarPixel) при большом количестве блоков, на большой локации, такой вариант, думаю, тоже будет весьма затратным При очень большой да, может задуматься . Но зато 100% процесс автоматический. Нет возможности делать его 1 раз после создания карты и сохранять в файл? После чего таскать его с собой и быстро загружать в игру.
И да, затраты только до начала игры - поиск по графу весьма быстр.
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
Сообщение отредактировал Archido - Четверг, 16 Августа 2012, 17:14 |
|
| |
Archido | Дата: Четверг, 16 Августа 2012, 16:58 | Сообщение # 533 | Тема: Проблема с DirectX |
Сэнсэй
Сейчас нет на сайте
| Quote (maXimBestUA) Скачал два эти архива но чтото они поначалу не захотели компилится, скачал также либы оттуда и все скомпилилось Так я же вроде сылки давад на хедеры и либы, ну ладно, главное работает
Quote (maXimBestUA) Большое спасибо за помощь. Учись хорошо . И обзаведись студией MSVS в близжайшем времени, проще будет
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 , которые могут быть разных версий и разного набора ф-ций.
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 Это весьма печально
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 поновее найти
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
Сообщение отредактировал Archido - Среда, 15 Августа 2012, 17:44 |
|
| |
Archido | Дата: Вторник, 14 Августа 2012, 20:49 | Сообщение # 539 | Тема: Учёба в институте |
Сэнсэй
Сейчас нет на сайте
| 1) Хабаровский Тихоокеанский Гос. Университет. Факультет Компьютерных и Фундаментальных Наук. 2) Было в районе 60К - 65К руб. Поступал на бюджет. 3) У нас всему, что прямо не касалось программирования учили норм (кучи математики, физика, архитектура PC и т.п.), а вот с программированием полная печаль 4) Тут вроде уже все написали. Скажу только, что неплохо уже уметь хоть немного программировать и знать самые основы выс. математики (комплексные числа, пределы, производные, матрицы, векторы и т.п.), тогда будет очень легко втянуться. Ибо у нас были люди, кто ни в том, ни в другом совсем ничего не смыслили и им было в разы сложнее первое время. 5) Нужен 100%. Хотя бы нэтбук.
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
|
|
| |
Archido | Дата: Вторник, 14 Августа 2012, 11:30 | Сообщение # 540 | Тема: Движок на с++. |
Сэнсэй
Сейчас нет на сайте
| ARTHUR(MX) Учи язык, не занимайся ерундой - так у тебя ничего не получится. Ты либо забьешь совсем на это, либо в итоге придешь к тому, о чем тебе здесь говорят - учиться нужно сначала. А пока поймешь - впустую потратишь время.
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
|
|
| |
|