Как сделать игру на псп

Обновлено: 03.07.2024

Статьи о программах для создания игр, уроки и описания.

Различные программы, в том числе в помощь игроделам.

Уроки по рисованию, растр, пиксель-арт, создание спрайтов и пр.

Уроки по моделированию, ландшафт, модели, текстурирование и пр.

Модификация компьютерных игр, создание дополнений, перевод, хакинг.

Статьи об играх, в том числе и сделанных на гейммейкерах.

Создание игр для PSP с использованием языка LUA - Часть 2


В комментариях в программе я подробно описал все новые строчки. Надеюсь вы поняли, что "--" обозначает комментарий.
И ещё одна важная особенность - в LUA переменные можно объявлять где угодно, у них нет типа.
Теперь загружайте программу на PSP, как описано в прошлом уроке и запускайте. У вас должен был появится красный квадрат в верхнем левом углу. Если это не так, то проверьте код и есть ли изображение в папке с EBOOT.PBP.
Часть 2
Теперь у нас по плану обработка нажатий на кнопки.
Как обычно даю сразу весь код:

.
Думаю вопрос может быть только в 4 строчках, но ответ на них один: разрешение экрана PSP 480X272 пиксела. И, надеюсь, вы заметили, что синтаксис условного выражения в LUA очень похож на синтаксис в Pascal'е.
Часть 3
Ну а теперь напишем небольшую программку, использующую весь пройденный нами материал.

Как сделать игру на псп

Статьи о программах для создания игр, уроки и описания.

Различные программы, в том числе в помощь игроделам.

Уроки по рисованию, растр, пиксель-арт, создание спрайтов и пр.

Уроки по моделированию, ландшафт, модели, текстурирование и пр.

Модификация компьютерных игр, создание дополнений, перевод, хакинг.

Статьи об играх, в том числе и сделанных на гейммейкерах.

Создание игр для PSP с использованием языка LUA - Часть 1


Тут мы создаем переменную цвета green и задаём её цвет с помощью функции Color.new и в параметрах указываем цвет в формате RGB.


Это функция печати текста. Первый параметр: координата по оси x, второй: по оси y, третий: выводимый текст, четвёртый: цвет текста.


Это вывод на экран. Просто у интерпретатора LUA есть такая особенность: там используется двойная буфферезация. А именно: сначала всё рисуется на "виртуальном" экране, а команда screen.flip() выводит заданную часть содержимого буфера на экран.


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


Эта функция позволяет делать "паузы" в программе, в качестве параметра можно указать время этой паузы. Я здесь использую эту функцию и цикл для того, что бы программа после вывода текста не выходила. Это как в Turbo pascal'е

Программируем для PSP: Часть I, настройка компилятора

Давайте условимся сразу: я следую паттерну «изучение обучением», т.е. учу, одновременно изучая, обгоняя читателей на 2-3 «шага» вперед. Однако это не значит, что я ничего не знаю и все, что говорю — обычные копипасты: я стараюсь разобраться в теме, прежде чем писать о ней. Поэтому смело задавайте вопросы, этим вы принесете пользу и себе, и мне: на вопросы, ответ на которые я не знаю, я буду его искать, осозновать и рассказывать вам.

Итак, в этом топике будет небольшой рассказ о том, как скомпилировать и запустить первую программу на своей приставке. Сразу предупреждение: статья мегатехнического плана, почти все содержание касается утомительной, но быстрой настройки компилятора, а в результате вы получите лишь банальный «Hello World». Однако без нее никак.

Будем предполагать как данность, что у вас есть приставка Sony PSP, перепрошитая до последней версии — 3.90 M33-3 (так называемая custom firmware, неофициальная прошивка). О том, как перепрошиваться, уже рассказывали многие, и останавливаться на этом я не буду. Так же будем считать, что в кирпич ваш вставлена флешка, на которой есть хотя бы 50кб свободного места, и вы имеете к ним доступ (например, через саму PSP).

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

Используемый язык программирования — Си, я буду использовать бесплатную IDE Code::Blocks под Windows XP. Пользователи других компиляторов или ОС могут попробовать настроить IDE сами, благо, настройки у всех похожи; я же использовал то, для чего нашел мануал ;)

Для начала, скачаем набор компиляторов, линкеров и библиотек для PSP под названием DevKitPSP. Распакуйте его куда-нибудь, я его распаковал в корень диска E: (теперь у меня есть папка E:\devkitpsp\).

Теперь откройте Code::Blocks. В меню выберите Settings→Compiler and Debugger, как Selected Compiler в открывшемся окошке выберите GNU GCC (он должен стоять по умолчанию), скопируйте его, назвав, например, DevKitPSP, и настройте его:

Вкладка Search Directories→Compiler (удалите все, что там есть, и нажимайте Add для добавления каждого из путей):

E:\devkitPSP\include
E:\devkitPSP\psp\include
E:\devkitPSP\psp\sdk\include
E:\devkitPSP\lib
E:\devkitPSP\psp\lib
E:\devkitPSP\psp\sdk\lib

Вкладка Toolchain Executables:

Compiler's installation directory: E:\devkitPSP. Там есть примечание, что в этой папке должна быть подпапка bin, проверьте.
C-compiler: psp-gcc.exe
C++-compiler: psp-g++.exe
Linker for dynamic libs: psp-g++.exe
Linker for static libs: psp-ar.exe
Еще три поля я оставил пустыми.

Теперь можно жать OK, и переходить к созданию нового проекта (File→New→Project. слева в окошке жмем Projects и выбираем Empty). Заполняем Project Title (не играет роли, пусть будет PSPHelloWorld), не забываем поставить папку для сохранения проекта (я вон в первый раз забыл, и получил кучу глюков и ошибок); компилятор, разумеется, ставим свежесозданный нами.

Наш проект девственно пуст, создаем фаил (File→New→File. на название наплевать, я выбрал main.c) — не забудьте в мастере создания фаила выбрать как язык Си и поставить галочки «Add to current project», «Debug» и «Release» (почему они не стоят по умолчанию?).

В созданный фаил копируем код (ключ доступа — хабрахабр). Я бы сюда закинул, если бы не хабрапарсер. Код писал не я, кстати: опыта пока-что маловато, хотя я вполне понимаю, что там происходит и как — в любом случае, в этом топике я останавливаться на этом не буду.

Теперь последние штрихи к настройке. Мы уже настроили то, с помощью чего будем компилировать, но не настроили, как и что у нас должно выходить. Поэтому жмем правой кнопкой на название проекта справа, выбираем Properties, а там — Build targets. Снимаем галочку «Auto-generate filename extension», и правим в Output filename расширение «exe» на «elf». Выполняем тоже самое для конфигурации Release, жмем Ok.

Жмем правой кнопкой на название проекта опять, выбираем Build Options и, на вкладке Linker Options, вписываем в Other linker options:

-lpspdebug -lpspdisplay -lpspge -lpspctrl -lpspsdk -lpsplibc -lpspnet_inet -lpspnet_apctl -lpspnet_resolver -lpsputility -lpspuser -lpspkernel

Повторяем для Release.

Вроде всё (надеюсь, это последняя статья скучного технического плана). Теперь собираем проект (Build→Build или знакомое всем Ctrl-F9) — если вдруг появились ошибки, то думаем, что же сделали не так, а потом спрашиваем в комментариях (может, я забыл чего).

Чтобы не настраивать потом заново, стоит сохранить проект как шаблон (File→Save Project as user-template. ).

Итак, у нас есть elf-фаил нашей программы. Перед тем, как закидывать его на PSP, надо преобразовать его в EBOOT.PBP (название придумал не я, честно). Для этого у меня стоит такой bat-ник:

«E:\devkitPSP\bin\mksfo.exe» %1/bin/Debug/%1 %1/bin/Debug/%1.sfo
«E:\devkitPSP\bin\psp-fixup-imports.exe» %1/bin/Debug/%1.elf
«E:\devkitPSP\bin\psp-strip.exe» %1/bin/Debug/%1.elf -o %1/bin/Debug/stripped.elf
«E:\devkitPSP\bin\pack-pbp.exe» %1/bin/Debug/EBOOT.PBP %1/bin/Debug/%1.sfo NULL NULL NULL NULL NULL %1/bin/Debug/stripped.elf NULL

Он располагается у меня в директории pspprj, в которой я создаю по папке для каждого проекта. Используется он так: make_eboot.bat HelloWorld. Если у вас другая организация папок, или вы просто хотите его переписать или запускать каждую программу вручную — просто запускайте по строчке, не забывая заменять %1 на названия или пути к фаилам. В результате у вас получится фаил EBOOT.PBP, его надо будет закинуть в папку /PSP/GAME150/HelloWorld (или другое название)/, а все остальное можно спокойно удалить. Теперь проверяйте (выход — по кнопке Home).

Как «домашнее задание» — сделайте так, чтобы все «хелловорлды» были с новой строки. До встречи!

Hello World приложение для Sony PSP

В этой статье я расскажу как написать ваше первое приложение для портативной консоли Sony PSP.

Допустим, всё перечисленное у вас есть, продолжим.

Устанавливаем SDK в любое место, если вы будете использовать Visual Studio IDE, то при установке поставьте галочку напротив Visual Studio Integration.

Установили, запускаем Visual Studio, и Жмем File->New->Project, далее во вкладке Visual C++ ищем PSP:

NewProject_Psp | Hello World приложение для Sony PSP

Выбераем «Empty Project», прописываем пути и жмем Ok. Появится окно визарда, жмем Finish. Вуаля:

Project_Psp | Hello World приложение для Sony PSP

Теперь жмем в меню Build->Build Solution. Процесс компиляции пройдет быстро, и в итоге мы получим EBOOT.pbp.

Project_Psp_Bulid | Hello World приложение для Sony PSP

Идем в папку проекта и ищем там EBOOT.pbp:

EBOOT | Hello World приложение для Sony PSP

Теперь запуск нашего детища:

    a) Подключаем PSP через USB Transfer к компьютеру.
    b) Заходим X(где X - буква диска вашего устройства, у меня F):\PSP\GAME\
    c) Создаем папку GDPSP
    d) Помещаем в папку EBOOT.pbp
    e) Отключем USB Transfer
    f) Запускаем GDPSP из Игра->Memory Stick

memstick | Hello World приложение для Sony PSP

GDPSP | Hello World приложение для Sony PSP

    a) Жмем File->Load file->выбираем наш EBOOT.pbp.
    b) Жмем Run.

JPCSP | Hello World приложение для Sony PSP

Удачи в начинаниях.

PS: Уже есть такие порты для PSP как:
- Quake
- Quake 2
- Quake 3 от нашего соотечественника
- Bochs — PC x86 Emulator (для запуска Linux,Windows на PSP)

Может и вы внесёте свою лепту ;)

20 апреля 2010 (Обновление: 18 апр. 2016)

хм. а продолжение будет?

Ну, там как с оконным API работать? Как всякие треугольники, квадраты рисовать и текстурировать? А то что-то мало для полноценной статьи ИМХО.

Тема psplink и дебага не раскрыта

Homebrew? Сони однако это очень не любит. Кроме того официальный СДК и хомбрюшный довольно сильно отличается. Честно говоря если нет возможности работать с официальным тулкитом думаю что большого смысла писать под псп нет. разве что как развлечение.

Плохая статья, ибо хакерская

oistalker
> Тема psplink и дебага не раскрыта
Я особо с psplink не разберался,но насколько я знаю есть только интерграция с эклипсом,а я кроме VS ничего не юзаю и юзать не планирую :).

Стас
> Homebrew? Сони однако это очень не любит. Кроме того официальный СДК и
> хомбрюшный довольно сильно отличается. Честно говоря если нет возможности
> работать с официальным тулкитом думаю что большого смысла писать под псп нет.
> разве что как развлечение.
Ну еслиб небыло бы хоумбрю то пользователи psp до сих пор бы не увидили эмулятора PSone игр,и Quake,Quake 2,Quake 3,etc.
А вобще если сделать что-то реально стоящее то думаю с сони можно будет договорится,да и я не думаю что есть тотальные различия между обоими SDK.

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

Igor'
> Я особо с psplink не разберался,но насколько я знаю есть только интерграция с
> эклипсом,а я кроме VS ничего не юзаю и юзать не планирую :).

Ресурс карты памяти не бесконечен (и сама карта не дешевая) - по крайней мере запускать программы, в процессе их написания, через psplink (даже если не использовать возможности отладки) есть смысл.

oistalker,для этого есть PSPHost,ставится легко,даже простой юзер может его поставить.

Igor'
Читай сам статью. =) Даже там написано, что традиционно hello world используется в туторах языков программирования, у тебя же тутор не по языку, а по API.

Igor'
> PSPHost
Да, хорошая штука, особенно, когда игра весит больше гига, а на карточку копируется очень медленно.

MarkoPolo
> Да, хорошая штука, особенно, когда игра весит больше гига, а на карточку
> копируется очень медленно.
Это не шутка,все его активно юзают.

MarkoPolo
> Читай сам статью. =) Даже там написано, что традиционно hello world
> используется в туторах языков программирования, у тебя же тутор не по языку, а
> по API.

Это относится не только к языку. Да и если уж на то пошло мой тутор как раз к языку,вернее к компилятору psp gcc ;)

Igor'
> Это относится не только к языку. Да и если уж на то пошло мой тутор как раз к
> языку,вернее к компилятору psp gcc ;)
Ладно, не буду спорить, но по хорошему у тебя тутор про то, как в студии нажать на кнопку и создать пустой проект.

Читайте также: