Особенности разработки маленьких, мобильных и инди-игр.
взято у:
Какие есть советьі для начинающих?
1. Ищите небольшую команду (в идеале найдите одного-пару разработчиков) для прокачки скиллов арта, скиллов работы в команде, и определения точных ваших желаний.
2. Не ищите команду мечтателей об игре «как гта5 только в России».
3. Поработайте забесплатно.
4. Делайте сразу весь ингейм.
5. Начните с проектов, цикл разработки которых не более 1-2 месяцев.
5. Проработайте хотя бы полгода, или выпустите 2-3 проекта для конечного определения.
6. Смотрите и играйте много чужих игр из выбранной вами области/жанра. Много копируйте.
7. Не бойтесь начать нишеваться по жанру. Всегда есть возможность переквалифицироваться в другой жанр.
8. Самое главное — успеть понять что вам интересно и чем вы хотите заниматься в будущем.
9. Не задумывайтесь о нишевании в специализации — это прийдёт само.
10. Много рисуйте, работайте над своим стилем — это второе по важности. Без стиля не будет узнаваемости.
11. Если всё же решились делать что-то в вашей жизни совершенно серьёзно, живите этим делом, отдавая ему все свое свободное время.
взято у:
http://www.murlyka.com/2013/11/20/2d-ingame-1st/
Какие есть советьі для начинающих?
1. Ищите небольшую команду (в идеале найдите одного-пару разработчиков) для прокачки скиллов арта, скиллов работы в команде, и определения точных ваших желаний.
2. Не ищите команду мечтателей об игре «как гта5 только в России».
3. Поработайте забесплатно.
4. Делайте сразу весь ингейм.
5. Начните с проектов, цикл разработки которых не более 1-2 месяцев.
5. Проработайте хотя бы полгода, или выпустите 2-3 проекта для конечного определения.
6. Смотрите и играйте много чужих игр из выбранной вами области/жанра. Много копируйте.
7. Не бойтесь начать нишеваться по жанру. Всегда есть возможность переквалифицироваться в другой жанр.
8. Самое главное — успеть понять что вам интересно и чем вы хотите заниматься в будущем.
9. Не задумывайтесь о нишевании в специализации — это прийдёт само.
10. Много рисуйте, работайте над своим стилем — это второе по важности. Без стиля не будет узнаваемости.
11. Если всё же решились делать что-то в вашей жизни совершенно серьёзно, живите этим делом, отдавая ему все свое свободное время.
_________________
Движение спрайта по произвольному пути пути
Класс спрайта которьій двигается по пути
и юзаем наш спрайт;
Вкладення:
Комментарий к файлу: рисуем путь и сохраняем в масив координатьі точек пути
Снимок.PNG [ 102.41 КБ | Просмотров: 78 ]
Снимок.PNG [ 102.41 КБ | Просмотров: 78 ]
Синтаксис: Lua
--создаем масив точек:
pike={
5,4,
107,56,
99,108,
42,123,
28,84,
45,38,
112,21,
165,41,
175,110,
141,182,
48,236,
30,232,
41,175,
105,156,
166,174,
184,215,
180,254,
148,293,
139,311,
134,329
}
pike={
5,4,
107,56,
99,108,
42,123,
28,84,
45,38,
112,21,
165,41,
175,110,
141,182,
48,236,
30,232,
41,175,
105,156,
166,174,
184,215,
180,254,
148,293,
139,311,
134,329
}
Синтаксис: Lua
--функция движения от точки к точке с заданной скоростью
function speed_move2(sprite,x2,y2,speed)
x1, y1 = sprite:getPosition()
local d=math.sqrt(math.abs(x1-x2)^2+math.abs(y1-y2)^2) --довж гіпотенузи
speed=(d/speed)*1000
speed=speed/1000*60 --60fps
sprite.move = MovieClip.new{
{1, speed, sprite, {x = {x1, x2, "inBack"},y = {y1, y2, "inBack"}}} -- проиграть с 1 до 100кадра с движением по оси Х от 0 до 200
}
sprite.move:gotoAndPlay(1)
sprite.move:addEventListener(Event.COMPLETE ,function()runpath(sprite) end )
end
function speed_move2(sprite,x2,y2,speed)
x1, y1 = sprite:getPosition()
local d=math.sqrt(math.abs(x1-x2)^2+math.abs(y1-y2)^2) --довж гіпотенузи
speed=(d/speed)*1000
speed=speed/1000*60 --60fps
sprite.move = MovieClip.new{
{1, speed, sprite, {x = {x1, x2, "inBack"},y = {y1, y2, "inBack"}}} -- проиграть с 1 до 100кадра с движением по оси Х от 0 до 200
}
sprite.move:gotoAndPlay(1)
sprite.move:addEventListener(Event.COMPLETE ,function()runpath(sprite) end )
end
Класс спрайта которьій двигается по пути
Синтаксис: Lua
enemy1 = Core.class(Sprite)
function enemy1:init(x,y,path,speed)
self.frame={}
self.frame[1] = Bitmap.new(Texture.new("controllers/enemy1/krovosisi0001.png"))
self.frame[2] = Bitmap.new(Texture.new("controllers/enemy1/krovosisi0002.png"))
self.anim = MovieClip.new{
{1, 3, self.frame[1]},
{4, 7, self.frame[2]}
}
self.anim:setGotoAction(7, 1)
self.anim:gotoAndPlay(1)
----------------------------------------------------
self:setPosition(x,y)
self.x=x
self.y=y
self.path=path
self.speed=speed
self.step=3
self:addChild(self.anim)
stage:addChild(self)
runpath(self)
end
function runpath(self)
if self.step+1==#self.path then
self.step=3
self.x=self:getX()
self.y=self:getY()
else
self.step=self.step+2
end
self.x2=self.x+self.path[self.step]-self.path[1]
self.y2=self.y+self.path[self.step+1]-self.path[2]
speed_move2(self,self.x2,self.y2,self.speed)
end
function enemy1:init(x,y,path,speed)
self.frame={}
self.frame[1] = Bitmap.new(Texture.new("controllers/enemy1/krovosisi0001.png"))
self.frame[2] = Bitmap.new(Texture.new("controllers/enemy1/krovosisi0002.png"))
self.anim = MovieClip.new{
{1, 3, self.frame[1]},
{4, 7, self.frame[2]}
}
self.anim:setGotoAction(7, 1)
self.anim:gotoAndPlay(1)
----------------------------------------------------
self:setPosition(x,y)
self.x=x
self.y=y
self.path=path
self.speed=speed
self.step=3
self:addChild(self.anim)
stage:addChild(self)
runpath(self)
end
function runpath(self)
if self.step+1==#self.path then
self.step=3
self.x=self:getX()
self.y=self:getY()
else
self.step=self.step+2
end
self.x2=self.x+self.path[self.step]-self.path[1]
self.y2=self.y+self.path[self.step+1]-self.path[2]
speed_move2(self,self.x2,self.y2,self.speed)
end
и юзаем наш спрайт;
Вкладення:
Вкладення:
Комментарий к файлу: Gideros Mobile Game Development (англійською мовою)
Gideros Mobile Game Development [eBook].pdf [2.02 МБ]
Скачиваний: 4
Gideros Mobile Game Development [eBook].pdf [2.02 МБ]
Скачиваний: 4
_________________
Інтеграція Admob і компіляція гри в APK dthcsz 2017.3
додаємо впроект гідероскод визову рекламивпотрібному місці:
вказуємо в настройках експорту шлях до SDK, JDK, та ключа підпису, і вмикаємо 2 плагіна як вказано на скрінах, жмемо ок іекспортуємо.
додаємо впроект гідероскод визову рекламивпотрібному місці:
Синтаксис: Lua
require "ads"
admob = Ads.new("admob")
admob:setKey("ca-app-pub-23423424~234234234")-- код клієнта адмоб
admob:showAd("banner","ca-app-pub-234234/23424") -- код банера
admob:setAlignment("center", "bottom")
admob:showAd("interstitial","ca-app-pub-234234/23424") -- код міжсторінкової реклами
admob = Ads.new("admob")
admob:setKey("ca-app-pub-23423424~234234234")-- код клієнта адмоб
admob:showAd("banner","ca-app-pub-234234/23424") -- код банера
admob:setAlignment("center", "bottom")
admob:showAd("interstitial","ca-app-pub-234234/23424") -- код міжсторінкової реклами
вказуємо в настройках експорту шлях до SDK, JDK, та ключа підпису, і вмикаємо 2 плагіна як вказано на скрінах, жмемо ок іекспортуємо.
Вкладення:
Вкладення:
Вкладення:
Маска
Вкладення:
Комментарий к файлу: маска
2.png [ 2.33 КБ | Просмотров: 18 ]
Вкладення:
3.png [ 11.82 КБ | Просмотров: 18 ]
Синтаксис: Lua
local JigsawVShader=
[[ attribute vec4 POSITION0; attribute vec2 TEXCOORD0; uniform mat4 g_MVPMatrix; varying mediump vec2 texCoord; void main() { gl_Position = g_MVPMatrix * POSITION0; texCoord = TEXCOORD0; } ]] local JigsawFShader=[[ uniform lowp sampler2D gMask; uniform lowp sampler2D gJig; uniform mediump vec4 jigRect; uniform mediump vec4 maskInfo; varying mediump vec2 texCoord; #ifdef GLES2 precision mediump float; #endif void main() { vec4 mask= texture2D(gMask, texCoord); if (mask.r<0.5) discard; vec4 jig=texture2D(gJig, texCoord*jigRect.zw+jigRect.xy); gl_FragColor = jig; } ]] local JigsawShaderAttrs= { {name="POSITION0",type=Shader.DFLOAT,mult=3,slot=0,offset=0}, {name="vColor",type=Shader.DUBYTE,mult=0,slot=1,offset=0}, {name="TEXCOORD0",type=Shader.DFLOAT,mult=2,slot=2,offset=0} } local JigsawShaderConstants={ {name="g_MVPMatrix",type=Shader.CMATRIX,sys=Shader.SYS_WVP, vertex=true}, {name="gMask",type=Shader.CTEXTURE,mult=1,vertex=false}, {name="gJig",type=Shader.CTEXTURE,mult=1,vertex=false}, {name="jigRect",type=Shader.CFLOAT4,mult=1,vertex=false}, } local JigsawShader= Shader.new( JigsawVShader,JigsawFShader, Shader.FLAG_FROM_CODE,JigsawShaderConstants,JigsawShaderAttrs) local jigsaw=Texture.new("1.jpg",true) --картинка local piece=Pixel.new(Texture.new("2.jpg",true),200,200) --маска (чорне видаляє) piece:setTexture(jigsaw,1) piece:setShader(JigsawShader) piece:setShaderConstant("jigRect",Shader.CFLOAT4,1,0.1,0.1,0.3,0.3) application:setBackgroundColor(150) stage:addChild(piece) piece:setPosition(50,50) _________________ |
*
Немає коментарів:
Дописати коментар