Таймером я ещё хочу заняться позже, как с SDK лучше разберусь. Т.к. то, что он сейчас возвращает очень как-то слабо похоже на миллисекунды... Точнее иногда это миллисекунды, но порой его пробивает... В общем таймер у меня в листе исправлений записан.
Сегодня выложу последний релиз с твоими изменениями на сайте. Спасибо. И буду сегодня пытаться откомпилить то, что в блокнотике накодил в отпуске! ^__^ добавлено через 6 часов 12 минут Кстати, нет желания подключить к SDK ещё и TinyXML и Lua? (: В принципе обе библиотеки есть в версиях для PSP, только откомпилить нужно да закинуть в общий архив. Могу даже простые примеры, в рамках MGF, написать по работе с этими либами. Очень бы здорого было. |
TinyXML закину обязательно, а LUA на слуху, но чесно говоря вживую не видел еще :) этож вроде не библиотека к SDK, а приложение - интерпретатор. Короче надо посмотреть.
|
Не, это либа, реализующая скриптовый компилятор. Собственно LuaPlayer и написан с использованием этой либы. Т.е. как минимум должны быть исходы, оптимизированные под PSP. К тому же вроде как исходы LuaPlayer доступны...
добавлено через 2 минуты Жду вот пока скачается последний SDK - хочу сразу пример со звуком накатить в новой версии. Плясал с бубном вокруг таймера - фигня какая-то. Пробовал несколько вариантов с форума ps2dev - без толку. Сейчас вот качаю разные исходники - пытаюсь высмотреть, как оно там работает. Глядишь когда скачается новый SDK - заборю эту проблему. (: |
Вот что нарыл: TinyXML это не либа, а просто опенсорсные исходники под любой C/C++ компайлер, я выкладывал их:
https://www.pspx.ru/forum/showpost.ph...64&postcount=2 А вот чтото типа примера использования (сам еще не проверял): TiXmlDocument *xml = new TiXmlDocument(); xml->Parse(str_xml); if (xml->Error()) { printf("Error!"); return; } for (TiXmlElement *pitem = xml->FirstChildElement(); pitem; pitem = pitem->NextSiblingElement() ? pitem->NextSiblingElement() : pitem->FirstChildElement()) { printf("%s = [", pitem->Value()); if (0 == strcmp(pitem->Value(), "ctext")) { printf("bcolor = %s", pitem->Attribute("bcolor") ? pitem->Attribute("bcolor") : "ffffff"); } if (0 == strcmp(pitem->Value(), "text")) { printf("color = %s ", pitem->Attribute("color") ? pitem->Attribute("color") : "000000"); if (pitem->FirstChild()->Value()) { printf("text = %s", pitem->FirstChild()->Value()); } } printf("]\n"); } добавлено через 2 минуты А LUA это и правда парсер LUA скрипта, на ps2dev есть библиотека, седня залью в SDK и выложу, в принципе, можешь не качать, я седня уже обновлю |
А нельзя помимо полного SDK вести его версию и выкладывать ещё и аддон? А то по 50 метров качать каждый раз напряжно. (: У меня анлим, но мееедленный. ):
Хотя в этот раз всего 13 метров скачалось, так что подожду новую версию. |
Аддон - это в принципе сама библиотека, только ее нужно с SVN-сервера pspdev выкачать, после инсталяции она себя разносит по подкаталогам SDK. В принципе, большинсто инсталируется просто (но из консоли :) ) , траблы у меня были с zlib,png и mikmod, а freetype к примеру, я так и не смог поставить, так как нужно эмулятор линукса под винду ставить, ваще жесть. Сейчас, в принципе уже в SDK все что нужно включил, следующие обновления - если уж только специфическое что нибудь будет нужно.
|
Вложений: 1
В принципе Lua же должно хватить, чтобы делать полноценные сложные проекты. Так что можно приостановить развитие самого SDK, и сосредоточится на IDE и играх.
У меня вот уже анимированный человечек по экрану бегает. С управлением почти определился: Analog - перемещение курсора, нацеливание. X, O, П, V - перемещение. LShift - стрельба. RShift - перезарядка, хотя скорее всего автоматом будет. Текстуру человечка стыбрил из оригинального Кримсона. (: |
Вложений: 1
очередной SDK. Вставил lua (подпапочка lua, там же примерчик есть в sample), ужал в 7z на удивление до 30 мегов по сравнению с rar ... http://ifolder.ru/2098910
Еще в аттачменте чуть поправил mgfaudio, сделал, чтоб WAV в отдельном потоке проигрывался |
Т.е. теперь можно одновременно 2 вавчика проигрывать?
|
Не, количество одновременно проигрываемых WAV вот MikMod_SetNumVoices(-1, 10); - я 10 поставил, но можно до 64 аппаратных и 192 - программно микшируемых каналов, то есть всего 256 одновременно.
Я имел в виду, что раньше чтоб очередной сэмпл озвучить, я в MGF в Update ставил вызов MikMod_Update(), а теперь я оформил в виде отдельного потока (sceKernelCreateThread) с циклом int AudioChannelThread(int args, void *argp) { while (WAV_Inited) { MikMod_Update(); sceKernelDelayThread(1); } return (0); } это я сделал, так как при вызове через Update шли тормоза ... |
Кстати, пока больше не изменяй MGFAUDIO - я хочу отформатировать под общий стандарт. В принципе могу отдельно выложить отформатированный код, либо дождись, когда всё выложу.
добавлено через 14 минут Т.е. Update теперь не нужно вызывать? Или нужно для mp3? добавлено через 20 минут А, исправил ещё серьёзные косяки с анимацией спрайта. И у шрифтов починил форматирование по правому краю. |
Для mp3 нужно. ОК, выложи, потом поправлю, нужно действительно автоматом Update делать
|
Вложений: 1
вот. RAR, переименованный в ZIP.
|
Написал пример по работе со звуком. mp3-файл проигрался нормально, а вот с WAV возникли проблемы. Из 4 файлов примера только 2 хоть что-то играют, да и то, совсем не то, что в семпле, просто нойз какой-то. Может там какой-то особый формат нужен? Битрейт? Моно? Может я чего пропустил?
Ссылка на пример с приложенными файлами: http://elmortem.mirgames.ru/download/psp/mgf_ex7.rar В принципе у меня всё готово (на сервак закачал), как только с WAV'чиками разберёмся - рилизну. |
wSlava, у тебя ICQ есть?
|
формат нужен MONO WAVE без сжатия (еще называют RIFF), я конвертил в принципе все ок, еще wav брал с библиотеки звуков (их полно в инете). Сейчас с багом разбираюсь, когда одновременно и WAV и MP3 играют, почему то если MP3 играет, после воспроизведения WAV (даже нескольких подрят) переключение на другую MP3 приводит к подвисанию, проблему нашел, это когда MP3_INIT проходит, разбираюсь...
P.S. Аську в личку скинул добавлено через 14 часов 34 минуты Починил аудио ! Долбануться можно, оказывается, когда несколько потоков создается посредством sceKernelCreateThread, то экспериментально я установил что sceKernelDelayThread(int delay), то бишь пауза сколько то микросекунд рассинхронизирует потоки (то бишь все виснет напрочь), и в таком случае нужно юзать sceKernelDelayThreadCB(int delay) ! Ща еще поделаю, уже завтра с утра выложу :) |
Не исповедимы пути PSP-инженеров! (:
добавлено через 1 минуту Хы, вот как сетевую либу буду писать - вот я там тоже с потоками поимеюсь... (: |
Вложений: 1
Выкладываю новую версию mgfaudio, отформатированный под mgf :)
Вот некоторые изменения: 1)Исправил баг в mp3player.c, связанный с потоками 2)Wav - при добавлении в плейлист загружаются в память и потом при указании имени проигрываются, так в разы быстрее Небольшое описание : Есть 3 подхода к использованию mgf_audio: 1) Можно просто проиграть любой файл: MGFAUDIO *player=new MGFAUDIO(); player->PlayFile("super.mp3") 2) Можно с помощью Add добавить любые файлы (сейчас это MP3 и Wav) в плейлист, а затем с помощью Play(),Next(), Prev(),Pause(),Stop() ... проигрывать плейлист: player->Add("super1.mp3") player->Add("super2.wav") player->Add("super3.mp3") ... Play() ... Next() 3) Можно сформировать плейлист player->Add("super1.mp3") player->Add("super2.wav") player->Add("super3.mp3") а затем используя Play(Index),Stop(Index) воспроизводить необходимый файл. Это очень полезно для звуковых эфектов, например я так использую: enum{ SND_DROP=0, SND_SCORE, SND_GAMEOVER }; snd=new MGFAUDIO(3); snd->Add("SOUND/drop.wav"); snd->Add("SOUND/score.wav"); snd->Add("SOUND/gameover.wav"); а затем в нужном месте snd->Play(SND_SCORE), причем Wav файлы проигрываются независимо друг от друга, то есть микшируются, сейчас поставил до 20 одновременно, если snd->Play вызывает mp3, то текущий проигрыеваемый mp3 остановится и запустится выбранный, и это не влияет на Wav. Еще ввел признак окончания проигрывания StopType: MGF_HAND_STOP - это когда вручную вызывается Stop() MGF_END_PLAYLIST - когда заканчивается плейлист MGF_END_PLAYFILE - (сейчас только для MP3) когда заканчивается проигрывание по PlayFile() Для атоматического воспроизведения по плейлисту следующей мелодии нужно поставить AutoNext=true, для обработки данного события нужно вызывать Update() (временно, далее будет автоматически) Для очищения плейлиста используется функция Clear() (не нужно при удалении объекта) |
Можешь ещё добавить 3 функции?
PlayRandom, GetVolume, SetVolume |
Цитата:
|
Зарелизил MGF v.0.0.3.2...
http://elmortem.mirgames.ru/?path=psp Пишу сейчас систему частиц... Следующую версию MGF думаю выкладывать как только напишу Кримсон. Как раз туда войдут всякие штуки для 2д-игр. Документирую класс 2д-камеры и 2д-вектора, частицы, тайловую карту и т.д... |
Вложений: 1
Кримсон зреет. Сделал простейшую физику, простейший интеллект монстров, землю, украшательства земли...
Следующее на очереди - оружие, кровь. 16 kb чистейшего кода! (: |
прикольно, мне пора уже с тетрисом заканчивать :)
|
Тока ща увидел, офигенная тема с примерами, да и ещё и html-справочка по функциям - очень нужная новичкам вещь. Пасиб те большое))
|
нзшт...
___________ Наткнулся вот на сайтец: http://www.astralax.ru Ща сяду изучать, может имеет смысл чистицы оттуда интегрить. Скриншоты красиво смотрятся. |
Да, и демо-видеоролики ваще супер !
добавлено через 5 минут Как я понял, это утилита-генератор, которая все сохраняет в иде последовательности кадров, Mortem, ты это имеешь хочешь прикрутить в виде движущихся спрайтов, или исходнихи раздобыть и портировать хочешь ? Думаю, для такой системы частиц PSP чрезвычайно тормозить будет, ну это ИМХО, может и не так. Я вот с MP3 столкнулся, то что проигрывание 80% ресурсов сжирает на 266 MHz ... |
Ну была мысль именно исходники портировать... Хотя подробнее изучив материал тоже пришёл к мысли, что PSP умрёт от зависти.
Так что систему частиц буду делать по старинке, без выкрутасов. Для крови, взрывов, дыма и пр. покатит - остальное - от лукавого... |
Вроде доделал тетрис http://ifolder.ru/2190857
теперь нечто напоминающее полноценную игру :) В общем, в начале попадаете в меню профиля, кнопки управления в меню: 'X' - выбор, 'O' - подняться в меню на уровень выше. Дальше можно поменять язык на русский ну и смотреть раздел помощи :) Посмотрите, если нормально, то через пару дней на общий форум выложу... |
wSlava
Кстати, меня вот всегда интересовал вопрос, как реализовать кнопки ввода по умолчанию. Как в настройках PSP. Вот я себе настройки ввода поменял под японский стандарт. У меня нолик - ввод, а крестик - отмена. И меня всегда раздражало в хоумбрюшках, когда программерами не учитывались эти моменты. Начинаешь путаться... Даже в некоторых официальных играх этот косячёк наблюдается... Хотел вот у себя его избежать... P.S. Игру качаю... добавлено через 1 час 34 минуты Погонял тетрис. Респект. Играть интересно. Есть несколько замечаний. Интерфейс пользователя: Навигация в меню сделана не удобно тем, что консоль нужно держать перевёрнутой, а кнопка выбора получается вверху. Предлагаю для меню заменить кнопку выбора - стрелкой вниз (вправо в перевёрнутом виде), а кнопку отмены - стрелкой вверх (влево в перевёрнутом виде). Геймплей: 1. Когда я нажимаю влево, то фигура перемещается на 1 деление и нужно нажимать влево ещё раз. Хотелось бы чтобы пока я держу "влево" фигура перемещалась. Ну с некоторой скоростью ессно, а не сразу до упора. Можно выставить таймаут некоторый просто... 2. В других тетрисах когда фигура только что упала на дно её ещё можно на несколько делений подвинуть. Таким способом, например, можно закрывать косяки с боовыми дырками, если вдруг ошибся... Очень хотелось бы видеть такую штуку и в этом тетрисе. Мой рекорд на среднем - 8300, 9 уровень... (: |
ОК, с навигацией попробую сделать и посмотреть, может и удобней,
, Влево - вправо сделаю, чтоб не каждый раз жать, а вот когда фигурка упала, вроде делал чтоб еще можно чуть двигать, надо посмотреть. P.S. Кстати вот какие фишки еще сделал: 1) Настройки игры сохраняются при выходе (сложность,текущий профиль, последяя mp3, и последний выбранный фон) 2) HighScores скидываю в hs.txt , при этом шифрую (хотя и примитивно) - типа защита от читеров :) 3) Еще заставку об авторах splash.png в бинарник залил, потом при старте восстанавливаю - защита авторских прав :) |
Сделал:
1. Частицы (кровь, искры) 2. Порталы для монстров 3. Класс оружия (не прикручен, нет ракет) 4. Прикрутил оружие и стрельбу, частицы при попадании в людей и объекты. Ближайшие планы: 1. Математика цвета (поправить косяки) 2. Добавить частицы взрывов 3. Добавить ракеты В целом осталось: 1. Уровни (редактор, загрузка) 2. Основное меню 3. Экраны победы и поражения 4. Рекорды (ввод имени, сохранение рекордов) 5. Поймать утечки памяти 6. Заняться оптимизацией рендеринга, а то смотреть противно на такие тормоза. Таки надеюсь увидеть тетрис и новую версию PSPxIDE ранье, чем закончу возиться с кримсоном... (: http://elmortem.mirgames.ru/gfx/scre...hgm_shot_2.jpg |
Привет, ура, почти финальный релиз Тетриса!!!
http://ifolder.ru/2378498 Сейчас выкладываю здесь , чтоб потестили, и уже можно выкладывать для всех. Mortem, учел твои пожелания, со стрелками действительно удобней :) , ну еще сдвиг вправо/влево доделал. Много чего еще добавил, например "квадратные" волны :) на фоне стакана (при игре), несколько звуковых эффектов, например если набираешь < 100 очков за игру, то голос из мортал комбата говорит "you are nothing !" :) , еще выбор уровня сложности прикольно "Choose your destiny !", в общем потестируйте ... P.S. В начале, когда еще настройки не сохранены, при старте выдается хэлп по кнопкам, при следующем старте его уже не будет ... добавлено через 4 минуты Еще, Mortem, нашел косяк в mgfaudio, точно не помню, MP3_End() второй раз подряд пыталась сработать и все подвешивалось, вот функции замени в MGF, зарелизишь когда сможешь. //------------------------------------------ int MGFAUDIO::Stop(int Index) { switch(PlayList[CurIndex].Type) { case MGF_MP3: if(Playing && !MP3_EndOfStream())MP3_End(); break; case MGF_WAV: int ind=Index==-1?CurIndex:Index; if(PlayList[ind].voice!=-1 && !Voice_Stopped(PlayList[ind].voice))Voice_Stop(PlayList[ind].voice); break; } StopType = MGF_HAND_STOP; Playing = false; Paused = false; return 1; } и //------------------------------------------ void MGFAUDIO::Update() { switch(PlayList[CurIndex].Type) { case MGF_MP3: if(AutoNext && Playing && MP3_EndOfStream()) { if(Playing)MP3_End(); Playing = false; if(Next()==-1)StopType=MGF_END_PLAYLIST; } else if(MP3_EndOfStream()) { if(Playing)MP3_End(); Playing = false; StopType=MGF_END_PLAYFILE; } break; case MGF_WAV: break; } } |
3.10-OE A'
1) Запуск на максимальной подсветке даёт чёрный экран в игре 2) Двойное нажатие на Home приводит к выходу из игры |
Цитата:
Home и вправду чет не так, буду смотреть, еще пока никто не заметил, я сам нашел, из фигурок почемуто квадрат не вылазит :) ну эт я быстро закрою добавлено через 1 час 49 минут Все, поправил выход по Home и теперь есть все фигурки включая квадрат :) http://ifolder.ru/2382443 P.S. Очень интересно, в PSP походу деструктор на выходе не нужен, если прописать, то стандартный выход по Home обламывается, а если не прописать, то все ОК, подозреваю, что по Home очищается вся память, выделенная приложением, поэтому даже в UMD играх выхода как такового нет... |
Потестил. Ну вроде всё нормально, единственное, что хотелось бы отметить -
не очень удобно играть с вертикально расположенной консолью. Ну и мне показалось, что управление слегка заторможенное, может стоит добавить регулировку чувствительности кнопок? Но это чисто субъективно, может и не требуется... |
pspowner:
На PSP экран для Teris как раз вертикльно лучше смотрится, я сначала делал как обычно, но слишком мало места сверху вниз, а по бокам наоборот пустые просторы... А заторможенное в каком смысле, это подробней можешь описать ? P.S. Сегодня уже вечерком тогда на общем форуме сделаю пост, вчера сам еще потестил, вроде все ОК |
Ух, тут всё развивается. А у меня запарка с работой, поэтому по игре практически ничего не делал. Разве что немного оптимизировал математику. Хотя ещё не компилил, ен тестил. Надеюсь на лучшее. (:
P.S. Качаю тетрис, позже отпишусь... |
Нашёл небольшое несоответствие в экране подсказок управления. Там перепутаны картинки кнопок вверх (вправо) и вниз (влево) для управлением вращением и ускорением фигурки.
В целом всё круто! (: |
Подсказку поправил, в жизни б не заметил :)
Так же вставил возможность в режиме редактирования профиля менять язык алфавита с помощью кнопки правого триггера. Вот последняя версия (бинарники) http://ifolder.ru/2414162 а это все исходники: http://ifolder.ru/2414244 еще сделал 3 скрина: http://ifolder.ru/2414264 |
Нашел глючок в jpgtexture.cpp:
Файл открывается: FILE* inFile = fopen(filename, "rb"); ... и усе, не закрывается :) добавил в конце fclose(inFile); ... if(swizzle) Swizzle(); mgf->Release(); Приводило к облому загрузки текстуры и соотвественно к зависанию спрайта , походу на PSP существенно ограничено количество одновременно открытых дескрипторов файлов... |
Текущее время: 05:09. Часовой пояс GMT +3. |
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc. Перевод: zCarot
PSPx Forum - Сообщество фанатов игровых консолей.