PSPверсия |  Новое на сайте |  Обратная связь |  Команда сайта |  FAQ |  ПРАВИЛА |     
 
Обзор нового на PSPinfo.RU

Ближайшие Сходки:
ДатаГородНомерНазваниеЗаписаться
собери друзей и сообщи об этом всем! »»
Самые популярные FLASH игры:

Sonic
играли 89408 раз

Muay Thai
играли 44478 раз

Castle Defender
играли 42472 раз

Urabanslug
играли 36338 раз

Mud and Blood (vietnam)
играли 34379 раз

chicken
играли 33775 раз

sonicblox
играли 33654 раз

x227sm
играли 33570 раз

Crazy Scates
играли 28396 раз
Абсолютные лидеры:
НовостиТемыСейвыОбоиВидеороликиВикторина
1..:Dr.Who:.945
2.iliya23420
3.Константин414
4.(:389
5.Masserau377
1.Dankin333
2.Игорь330
3.kalash1322
4.DJAMrik271
5.Артем=)252
1..:Dr.Who:.347
2.legofan12130
3.-=Sephiroth=-117
4.Dan96106
5.Patric Star104
1.wushu12250
2.Metal Sonic7404
3.iliya237000
4.Теккен6652
5.LFY6309
1..:Dr.Who:.4548
2.Михаил3742
3..:Canon:.1920
4.Ivan1760
5.Гомер Симпсон1535
1.Chizuru Minamoto2610552500
2..:Dr.Who:.2609446950
3..:Buxou:.1724432140
4.snupi1637432090
5.vitas1551113420750
расширенная статистика »»

   Все форумы » Клуб PSPinfo.RU » Программирование » Русскоязычный мануал по PGE - часть 4 Предыдущая тема :: Следующая тема  
Сейчас эту тему просматривают: [требуется регистрация] -> [требуется регистрация]
Гостей: [требуется регистрация]
 
Ссылка на пост #1 Добавлено: 9 июля 2012 03:58    

Посетители
WanSpi
--

Возраст: -- | |
Сообщений: 13
Благодарности: 0 / 0
Репутация: 0
Предупреждений: 0
Друзья
Тут: 10 лет 2 месяцa
Всем привет, кто не знает, я стал помогать Mystery Man писать мануалы по PGE, и сегодня я хочу вам поведать об музыке.К сожалению PGE поддерживает лиш 2 формата музыки: WAV и MP3, так что надо будет запастись аудио конвертерами. Каждый формат играет свою цель в вашей программе и имеет свои плюсы и минусы. WAV – преднозначен для звуковых эффектов (взрыв, выстрел, эмоции и так далее), в то время когда MP3 – фоновая музыка. Начну с того что MP3 может проигрывать одновременно только одну музыку, когда WAV может несколько. Что бы запустить MP3 нам достаточно прописать:

pge.mp3.play(“path”)


где path – путь к файлу (не забываем что прописывать полный путь не надо, а только от рабочего каталога). Но вот с WAV такое не прокатит. Вначале нам нужно создать объект, после чего мы сможем запустить его. Создадим же наш объект:

object = pge.wav.load(“path”)


где path – путь к файлу (не забываем что прописывать полный путь не надо, а только от рабочего каталога), а object – объект нашего WAV файла. После чего мы должны будем его воспроизвести:

pge.wav.play(object)

-- или

object:play()


где object – объект нашего WAV файла. Теперь на нашей PSP играет музыка формата WAV и MP3. Давайте что то с ними сделаем. Вначале остановим их:

-- WAV

pge.wav.stop(object) 

-- или

object.stop()

-- MP3

pge.mp3.stop()


Думаю обеснять что здесь и где не обезательно. Как я раньше и говорил WAV может воспроизводится несколько раз, поэтому была придумана функция которая останавливает сразу все звуки:

pge.wav.stopall()


Главное не забывайте что если вы останавливаете музыку то при повторном запуске она будет начинатся заного, что бы этого избежать ее надо поставить на паузу. Вот с этого момента начинаются минусы. Дело в том что WAV не поддержует паузу, так что будем обходится только с MP3:

pge.mp3.pause()


Когда вызывается эта функция в первый раз то MP3 ставится на паузу, во второй раз воспроизводится с того места где мы его остановили, тут же всплывает еще одно но, если мы используем функцию:

pge.mp3.play()

то мы заного воспроизведем MP3, вместо того чтобы воспроизвестись с момента паузы. Теперь давайте проверим играет ли сейчас музыка:

-- WAV

playing = pge.wav.isplaying(object)

-- или

playing = object:isplaying() 

-- MP3

playing = pge.mp3.isplaying()


где playing - boolean переменная, если она равняется true значит музыка проигруется, иначе она будет ровнятся false. Теперь давайте заставим музыку повторятся после оконачания:

-- WAV

pge.wav.loop(object)

-- или

object:loop() 

-- MP3

pge.mp3.loop(true|false)


Как вы заметили в MP3 нам надо поставить true или false (повторятся или не повторятся), в то время когда в WAV этого делать не обязательно (хоть и можно), при вызове WAV просто возьмет противоположное значение, а то есть если стоит что бы не повторялось, тогда будет повторятся и наоборот. И наконец разберем последнюю команду, самую интересную как по мне - громкость. Каждый формат имеет свое преимущество с этой функцией. Для начала пропишем команду которая будет менять громкость нашей музыки:

-- WAV

pge.wav.volume(object, lvol, rvol)

-- или

object:loop(lvol, rvol)

-- MP3

pge.mp3.volume(vol)


Для начала разберем WAV. Как вы думаю догадались lvol и rvol - громкость левого и правого динамика, эти значения должны лежать в диапазоне от 0 до 100, где 0 это отсутствие звука. Значение rvol можно не писать, тогда оно будет по умолчанию ровняться lvol. Это преимущество дает возможность создавать 3-ех мерный звук, что очень полезно в играх. По умолчанию эти значения ровняются 50. Теперь что касается MP3. Как мы видем он не имеет возможность создавать 3-ех мерный звук, но зато имеет больший диапазон громкости (от 0 до 100000) что делает более удобным в настройке громкости под ваш вкус. По умолчанию громкость 32678.

Вот вся теория. Перед тем как мы перейдем к практике я немного хотел бы подчеркнуть, а то есть сказать свое слово в использовании обоих форматов. Начну я с MP3. Качество звука при проигрывании довольно не плохое, настройки все работают и в общем это довольно не плохой выбор, если вы хотите просто воспроизвести музыку. А вот WAV для музыки совсем не подходит. Во первых присутствует небольшое шипение, что сильно сказуеться качестве воспроизведения. Во вторых при проигрывании музыки настройки не вступают в силу, если они будут изменятся, к примеру если мы поставим громкость на максимум, проиграем ее и сразу поставим громкость на ноль, то все равно музыка будет играть на максимуме, лиш после остановки и заново воспроизведения музыки громкость будет нулевая. И в третьих если же громкость на нуле то из-за небольшого шипения все равно будет издаватся звук, хоть и не очень заметным, поэтому нам придется отслеживать этот момент, а то есть когда громкость стоит на нуле, нам придется любое воспроизведение запрещать. Столько минусов что заставляет задуматься, а стоит ли вообще использовать этот формат, мой ответ да, так как я раньше писал у него есть и некоторые плюсы, которые хоть и для музыки не нужны, но вот для звуков как раз то. Как я и писал WAV в отличае от MP3 может одновремено проигрывать несколько объектов, что значительное влияет, так как одновремено может происходит несколько действий, так же возможность создовать 3-ех мерный звук, что так же хорошо влияет на звук. Так что взяв все эти факторы, могу сказать с увериностью, MP3 было создано специально для фоновой музыки, в то время когда WAV чисто для звуков. И на последок скажу, что когда играет музыка, нивкоем случае не выходите системно (home), иначе зависнет ваша PSP.Теперь же перейдем к практике. Напишем небольшую программу которая будет включать все функции которые мы сегодня выучили. Для начала напишем меню, с которого мы будем выбирать что нам воспроизвести: WAV или MP3.

white = pge.gfx.createcolor(255,255,255)
red = pge.gfx.createcolor(255,0,0)
arial = pge.font.load("arial.ttf",12, PGE_RAM) 
arial_big = pge.font.load("arial.ttf",20, PGE_RAM)
menu = 1
while pge.running() do
	pge.controls.update()
	pge.gfx.startdrawing() 
	pge.gfx.clearscreen()
	arial_big:activate()
	if menu == 2 then
		arial_big:printcenter(110,white,"WAV")
	else
		arial_big:printcenter(110,red,"WAV")
	end
	if menu == 1 then
		arial_big:printcenter(150,white,"MP3")
	else
		arial_big:printcenter(150,red,"MP3")
	end
	if pge.controls.pressed (PGE_CTRL_CROSS) then
		if menu == 1 then
			dofile("scripts/wav.lua")
		else
			dofile("scripts/mp3.lua")
		end
	elseif pge.controls.pressed (PGE_CTRL_START) then
		break
	elseif pge.controls.pressed (PGE_CTRL_UP) then
		menu = menu - 1
	elseif pge.controls.pressed (PGE_CTRL_DOWN) then
		menu = menu + 1
	end	
	if menu == 3 then
		menu = 1
	elseif menu == 0 then
		menu = 2
	end
	pge.gfx.enddrawing() 
	pge.gfx.swapbuffers() 
end 


Задерживатся на обесняния думаю не стоит, так как все что тут написано не по нашей теме, единственое на что я остановлю внимание, так это на том что при выборе одной из категории мы переходим к одному из двух файлов, которые находятся в папке "scripts". Теперь давайте создадим их: "mp3.lua" и "wav.lua". Для начала приступим к написанию "mp3.lua". Перед написанием давайте добавим в наш робочий каталог хотя бы пару MP3 файлов, я же их поместил в папку "music" и назвал "1.mp3" и "2.mp3", что бы легче их можно было использовать. Теперь приступим к самому коду. Для начала пропишем все переменные:

vol = 32678 -- громкость звука
mus = 1 -- какой трек сейчас играет
loop = false -- повтор музыки


Теперь приготовим цикл:

while pge.running() do
	pge.controls.update()
	pge.gfx.startdrawing() 
	pge.gfx.clearscreen()

        -- тут мы будем писать программу

	pge.gfx.enddrawing() 
	pge.gfx.swapbuffers()
end


Теперь займемся самой музыкой. Добавим разные действия. При нажатии вниз и вверх будет меняться громкость на 100, при нажатии на крестик будет воспроизводится, нолик - пауза (снять с паузы), квадрат - стоп, треугольник - повтор, включить и выключить, и при нажатии влево и вправо будет меняться трек:

      if pge.controls.pressed (PGE_CTRL_CROSS) then
		pge.mp3.play("music/" .. mus .. ".mp3")
	elseif pge.controls.pressed (PGE_CTRL_RIGHT) then
		mus = mus + 1
	elseif pge.controls.pressed (PGE_CTRL_LEFT) then
	        mus = mus - 1
        elseif pge.controls.pressed (PGE_CTRL_TRIANGLE) then
                if loop == true then
                         loop = false
                else
                         loop = true
                end
                pge.mp3.loop(loop)
	elseif pge.controls.pressed (PGE_CTRL_CIRCLE) then
                pge.mp3.pause()
	elseif pge.controls.pressed (PGE_CTRL_SQUARE) then
                pge.mp3.stop()
	elseif pge.controls.held (PGE_CTRL_UP) then
		vol = vol + 100
	elseif pge.controls.held (PGE_CTRL_DOWN) then
		vol = vol - 100
	end


Так же есть предложение добавить что бы при нажатии на старт мы выходили на главное меню, в этом нам поможет команда "break" (для тех кто не знает, с помощью этой команды можно выйти с цикла):

	if pge.controls.pressed (PGE_CTRL_START) then
		pge.mp3.stop()
		break
        end


Теперь нам надо поставить огранечители, что бы мы не смогли поставить минусовую громкость или трек которого нет:

	if mus < 1 then
		mus = 2
	elseif mus > 2 then
		mus = 1
	end
	if vol < 0 then
		vol = 0
	elseif vol > 100000 then
		vol = 100000
	end


Почти все готово осталось только заставить громкость меняться:

	pge.mp3.volume(vol)


Вуаля наша программа работает, вот только все значения видит одна программа, это надо изменить, давайте выведем на экран всю нашу информацию:

	arial:activate()
	arial:print(0, 30, white, "Volume: " .. vol)
	arial:print(0, 50, white, "Treak: " .. mus)
	arial:print(0, 70, white, "Loop: " .. loop)
	arial:print(0, 90, white, "Play: " .. pge.mp3.isplaying()


Ну теперь программа полностью готова, давайте посмотрим что у нас в конечном итоге получилось:

vol = 32678 -- громкость
mus = 1 -- трек
loop = false -- повтор
while pge.running() do
	pge.controls.update()
	pge.gfx.startdrawing() 
	pge.gfx.clearscreen()
	if pge.controls.pressed (PGE_CTRL_START) then -- выход в главное меню
		pge.mp3.stop()
		break
	elseif pge.controls.pressed (PGE_CTRL_CROSS) then -- вопроизвести
		pge.mp3.play("music/" .. mus .. ".mp3")
	elseif pge.controls.pressed (PGE_CTRL_RIGHT) then -- переключить на другой трек
		mus = mus + 1
	elseif pge.controls.pressed (PGE_CTRL_LEFT) then
	    mus = mus - 1
    elseif pge.controls.pressed (PGE_CTRL_TRIANGLE) then -- включить (выключить) повтор
        if loop == true then
            loop = false
        else
            loop = true
        end
        pge.mp3.loop(loop)
	elseif pge.controls.pressed (PGE_CTRL_CIRCLE) then -- поставить на паузу (воспроизвести)
        pge.mp3.pause()
	elseif pge.controls.pressed (PGE_CTRL_SQUARE) then -- остановить
        pge.mp3.stop()
	elseif pge.controls.held (PGE_CTRL_UP) then -- увеличить громкость
		vol = vol + 100
	elseif pge.controls.held (PGE_CTRL_DOWN) then -- уменьшить громкость
		vol = vol - 100
	end
	if mus < 1 then -- проверка во избежания открытия несуществующей музыки
		mus = 2
	elseif mus > 2 then
		mus = 1
	end
	if vol < 0 then -- проверка во избежания перебора или недобора громкости
		vol = 0
	elseif vol > 100000 then
		vol = 100000
	end	
	pge.mp3.volume(vol) -- меняем громкость
	arial:activate()
	arial:print(0, 30, white, "Volume: " .. vol) -- выводим громкость
	arial:print(0, 50, white, "Treak: " .. mus) -- выводим трек
	if loop then -- выводим есть повтор или нету
		arial:print(0, 70, white, "Loop: true")
	else
		arial:print(0, 70, white, "Loop: false")
	end
	if pge.mp3.isplaying() then -- выводим играет музыка или нет
		arial:print(0, 90, white, "Play: true") 
	else
		arial:print(0, 90, white, "Play: false")
	end
	pge.gfx.enddrawing() 
	pge.gfx.swapbuffers()
end


Приступим к написанию "wav.lua". Так как на данный момент на моих часах 2 часа, и я хочу спать я напишу в моей статье программу лиш для одной песни, но в тестовой программе которую я прикреплю будет 9 звуков и 1 песня. И так переместим музыку в папку "music" и назовем ее "1.wav", теперь же приготовим все наши переменные, сделаем из нашей музыки объект и подготовим нашу программу:

wav1 = pge.wav.load("music/1.wav") -- делаем объект
ld = 50 -- громкость левого динамика
rd = 50 -- громкость правого динамика
while pge.running() do
	pge.controls.update()
	pge.gfx.startdrawing() 
	pge.gfx.clearscreen()

        -- тут мы будем писать программу

	pge.gfx.enddrawing() 
	pge.gfx.swapbuffers() 
end


В начале начнем с действий. Крестик - воспроизвести, квадрат - остановить, треугольник - включить или выключить повтор, вверх или вниз - изменить громкость обоих динамиков, левый или правый стик + вверх или вниз - изменить громкость одного из динамиков (в зависимости какой стик был зажат):

if pge.controls.pressed (PGE_CTRL_CROSS) then
		if (ld > 0) or (rd > 0) then
			pge.wav.play(wav1)
		end
	elseif pge.controls.pressed (PGE_CTRL_SQUARE) then
		pge.wav.stopall()
	elseif pge.controls.pressed (PGE_CTRL_TRIANGLE) then
		wav1:loop()
	elseif pge.controls.held (PGE_CTRL_LTRIGGER + PGE_CTRL_UP) then
		ld = ld + 1
	elseif pge.controls.held (PGE_CTRL_RTRIGGER + PGE_CTRL_UP) then
		rd = rd + 1
	elseif pge.controls.held (PGE_CTRL_UP) then
		rd = rd + 1
		ld = ld + 1
	elseif pge.controls.held (PGE_CTRL_LTRIGGER + PGE_CTRL_DOWN) then
		ld = ld - 1
	elseif pge.controls.held (PGE_CTRL_RTRIGGER + PGE_CTRL_DOWN) then
		rd = rd - 1
	elseif pge.controls.held (PGE_CTRL_DOWN) then
		rd = rd - 1
		ld = ld - 1
        end


Теперь сделаем проверку на допустимые рамки для звука:

	if ld > 100 then
		ld = 100
	elseif ld < 0 then
		ld = 0 
	end
	if rd > 100 then
		rd = 100
	elseif rd < 0 then 
		rd = 0 
	end


Так же сделаем выход на главное меню:

	if pge.controls.pressed (PGE_CTRL_START) then -- выходим к главному меню
		pge.wav.stopall()
		break
        end


И наконец функцию которая будет менять звук:

	wav1:volume(ld, rd)


Теперь наша программа работает, осталось только вывести всю информацию на экран:

       	arial:activate()
	arial:print(0,50,white,"Volume L: " .. ld)
	arial:print(0,70,white,"Volume R: " .. rd)
	if wav1:isplaying() then
		arial:print(0, 90, white, "Play: true") 
	else
		arial:print(0, 90, white, "Play: false")
	end


Ну и конечно же посмотрим что у нас получилось:

wav1 = pge.wav.load("music/1.wav") -- создаем объект
ld = 50 -- громкость левого динамика
rd = 50 -- громкость правого динамика
while pge.running() do
	pge.controls.update()
	pge.gfx.startdrawing() 
	pge.gfx.clearscreen()
	if pge.controls.pressed (PGE_CTRL_CROSS) then -- проигруем музыку
		if (ld > 0) or (rd > 0) then
			pge.wav.play(wav1)
		end
	elseif pge.controls.pressed (PGE_CTRL_START) then -- выходим к главному меню
		pge.wav.stopall()
		break
	elseif pge.controls.pressed (PGE_CTRL_SQUARE) then -- останавливаем всю музыку
		pge.wav.stopall()
	elseif pge.controls.pressed (PGE_CTRL_TRIANGLE) then -- включить (выключить) повтор
		wav1:loop()
	elseif pge.controls.held (PGE_CTRL_LTRIGGER + PGE_CTRL_UP) then -- меняем громкость
		ld = ld + 1
	elseif pge.controls.held (PGE_CTRL_RTRIGGER + PGE_CTRL_UP) then
		rd = rd + 1
	elseif pge.controls.held (PGE_CTRL_UP) then
		rd = rd + 1
		ld = ld + 1
	elseif pge.controls.held (PGE_CTRL_LTRIGGER + PGE_CTRL_DOWN) then
		ld = ld - 1
	elseif pge.controls.held (PGE_CTRL_RTRIGGER + PGE_CTRL_DOWN) then
		rd = rd - 1
	elseif pge.controls.held (PGE_CTRL_DOWN) then 
		rd = rd - 1
		ld = ld - 1
	elseif pge.controls.pressed (PGE_CTRL_RIGHT) then -- меняем трек
		mus = mus + 1
	elseif pge.controls.pressed (PGE_CTRL_LEFT) then
		mus = mus - 1
	end
	if ld > 100 then -- устанавливаем проверку громкости
		ld = 100 
	elseif ld < 0 then 
		ld = 0 
	end
	if rd > 100 then 
		rd = 100 
	elseif rd < 0 then
		rd = 0
	end	
	wav1:volume(ld, rd) -- меняем громкость
	arial:activate()
	arial:print(0,50,white,"Volume L: " .. ld) -- выводим громкость левого динамика
	arial:print(0,70,white,"Volume R: " .. rd) -- выводим громкость правого динамика
	if wav1:isplaying() then
		arial:print(0, 90, white, "Play: true") 
	else
		arial:print(0, 90, white, "Play: false")
	en
	pge.gfx.enddrawing()  
	pge.gfx.swapbuffers() 
end


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

Тестовая программа
Наверх 
Ссылка на пост #2 Добавлено: 9 июля 2012 08:22    

Посетители
Mystery Man
--

Возраст: -- | |
Сообщений: 241
Благодарности: 1 / 27
Репутация: 8
Предупреждений: 1
Друзья
Тут: 10 лет 5 месяцев
Молодец. Всё коротко и ясно. Не распинаешься, как я, но и о деталях не забываешь.
Только несколько претензий по оформлению:
1. старайся разделять большие куски текста на маленькие. когда читатель видит большой текст, не разделённый на абзацы, то для него это "непреодолимая стена". Читать эту "стену" очень трудно.
2. всё же лучше разделить статью на логические части, чтобы читатель мог пропустить то, что он знает. Проставь заголовки, названия и тп.
А так статья отличная. Будет и мне над чем подумать.
Наверх 
Ссылка на пост #3 Добавлено: 9 июля 2012 11:54    

Посетители
WanSpi
--

Возраст: -- | |
Сообщений: 13
Благодарности: 0 / 0
Репутация: 0
Предупреждений: 0
Друзья
Тут: 10 лет 2 месяцa
Если честно это моя первая статья, но в следующий раз обязательно все это учту.
Наверх 
Ссылка на пост #4 Добавлено: 9 июля 2012 13:54    

Посетители
vladgalay
--

Возраст: 26 | | Водолей
Сообщений: 1400
Благодарности: 22 / 150
Репутация: 190
Предупреждений: 0
Друзья
Тут: 12 лет 4 месяцa
WanSpi, молодец! Уроки писать умеешь =)
Как давно программированием на PGE занимаешься и что смог на нём сделать? =)
Наверх 
Ссылка на пост #5 Добавлено: 9 июля 2012 14:57    

Посетители
WanSpi
--

Возраст: -- | |
Сообщений: 13
Благодарности: 0 / 0
Репутация: 0
Предупреждений: 0
Друзья
Тут: 10 лет 2 месяцa
Mystery Man, vladgalay, спасибо, начал обучатся где то год назад, но это было так мимолетное увлечение, буквально на месяц, а вот недавно вспомнил что я хотел написать одну игру на PSP, так начал опять заниматься PGE, ну в общем где то полтора месяца. Проектов еще толковых нету, только одна не завершоная игра.

Сообщение отредактировано 9 июля 2012 14:59. Редактировалось 1 раз(а)
Наверх 
Ссылка на пост #6 Добавлено: 9 июля 2012 16:29    

Забанен
zharikov.vitalik
--

Возраст: 30 | | Рак
Сообщений: 462
Благодарности: 12 / 19
Репутация: 58
Предупреждений: 4
Друзья
Тут: 12 лет 2 месяцa
WanSpi,
Ну почему никто не пишет русских мануалов по EuphoriaV8 или LPPlus laughing

Приходится самому английские мануалы переводить =)
Благо я хорошо знаю чистый LUA на PSP,так сказать уже есть годовой навык =)

Если кому интересно я тоже хотел статьи писать.Только я не умею грамотно всё разъяснить новичкам.Хотя опыта программирования у меня дофига,и Программ и игр отличных моих много на этом сайте =)
Их Больше 13 =)
Наверх 
Ссылка на пост #7 Добавлено: 9 июля 2012 16:35    

Посетители
WanSpi
--

Возраст: -- | |
Сообщений: 13
Благодарности: 0 / 0
Репутация: 0
Предупреждений: 0
Друзья
Тут: 10 лет 2 месяцa
zharikov.vitalik, раз не умеешь писать так переводи, ты же сам сказал что переводишь мануалы с английского, даже это хорошо может помочь новичка.
Наверх 
Ссылка на пост #8 Добавлено: 9 июля 2012 18:20    

Посетители
Iwan954
--

Возраст: 27 | | Овен
Сообщений: 525
Благодарности: 9 / 37
Репутация: 64
Предупреждений: 2
Друзья
Тут: 13 лет 2 месяцa
Программ и игр отличных моих много на этом сайте =)

И медаль за скромность получает zharikov.vitalik
Наверх 
Ссылка на пост #9 Добавлено: 9 июля 2012 18:46    

Посетители
Mystery Man
--

Возраст: -- | |
Сообщений: 241
Благодарности: 1 / 27
Репутация: 8
Предупреждений: 1
Друзья
Тут: 10 лет 5 месяцев
WanSpi, слушай, я тут подумал, что неплохо бы "перезагрузить" цикл. По мере изучения, я нашёл в первых частях кучу ошибок (не в коде), да и представлено содержание не лучшим образом. Если поддерживаешь идею, пиши в ЛС. Думаю, никто против не будет.
Наверх 
Русскоязычный мануал по PGE - часть 4
  • 0

  
Добавить эту тему в

Похожие темы:
Название Темы [ответов]АвторДатаФорум
» Русскоязычный мануал по PGE - часть 3 [16]Mystery Man17.04.12Клуб PSPinfo.RU »» Программирование
» Русскоязычный мануал по PGE - часть 2 [0]Mystery Man11.04.12Клуб PSPinfo.RU »» Программирование
» Русскоязычный мануал по PGE - часть 1-2 [1]Mystery Man11.04.12Клуб PSPinfo.RU »» Программирование
» Мануал по PGE [перезапуск]. [23]
  Русскоязычный мануал по PGE
Mystery Man09.07.12Клуб PSPinfo.RU »» Программирование
» Русскоязычный мануал по PGE. [8]
  Цикл статей, описывающих работу с Phoenix Game Engine(PGE)
Mystery Man10.04.12Клуб PSPinfo.RU »» Программирование
» Продам новый запечатанный мануал (инструкция) от PS2 (Москва) [5]
  Почти даром отдам в Москве мануал от Sony PlayStation 2
Neko Len23.06.12Барахолка »» Прочее
» сервис мануал PSP TA-085 [6]disdis04.11.10PSP »» Ремонт PSP и PSP Slim
» сервис-мануал PSP [3]lsdlsd06.02.08PSP »» Ремонт PSP и PSP Slim
» Программирование для PSP Часть 2 [3]MALEXKIY10.11.12Клуб PSPinfo.RU »» Программирование
» 3 часть инвизималов [1]ilya22023.12.11PSP »» Invizimals

Информация
Посетители, находящиеся в группе Гости, не могут оставлять сообщения в данной теме.


Flash игры onLine |  Игры для PSP |  Обои для PSP |  Софт для PSP |  Темы для PSP |  Сейвы для PSP |  Комиксы для PSP |  Форум |  Карта сайта |   
"" and "PlayStation" are registered trademarks of Sony Computer Entertainment Inc. "", PSP and "UMD" are trademarks of Sony Computer Entertainment Inc. "", "XMB", "Memory Stick Duo" and the "Memory Stick Duo" logotype are trademarks of Sony Corp. All product titles, publisher names, trademarks, artwork and associated imagery are trademarks, registered trademarks and/or copyright material of the respective owners. All rights reserved.
Game's TOP-100 Counter