tag:blogger.com,1999:blog-45022995852271556122024-03-21T12:20:00.284-07:00Flash is Awesome!блог о флэш играх, программировании на флэш и многом другом.flashhappenshttp://www.blogger.com/profile/09621810694252660250noreply@blogger.comBlogger9125tag:blogger.com,1999:blog-4502299585227155612.post-51674450985537707202012-02-17T00:48:00.000-08:002012-02-17T00:48:07.167-08:00Ни о чём и обо всём 1В поседнее время у меня не очень много времени, к тому же я работаю сразу над несколькими проектами, так как не знаю, какой из них получится действительно стоящим. К тому же многие надоедают после месяца разработки - типичная проблема программистов-одиночек.
Теперь насчёт StencylWorks. Пересмотрев кучу игр, сделанных на этой проге, я нашёл только одну-две более менее удачных игр, остальные были просто ужасными. Максимум, для чего она подходит - ознакомиться с процессом игросторя, для первой пробы игры. (Да, только вот не надо эту первую пробу выкладывать в интернет со словами "Эта моя первая игра, прошу не судить строго" и ждать положительных комментариев - их просто не будет) Также я нашёл кучу ошибок в стандартном движке платформеров. Вобщем, третьей части скорее всего не будет. (Хотя возможно, если будет настроение, то я таки доделаю свой платформер с котэ в главной роли)flashhappenshttp://www.blogger.com/profile/09621810694252660250noreply@blogger.com0tag:blogger.com,1999:blog-4502299585227155612.post-18637222059009510052011-09-17T09:43:00.000-07:002012-02-18T07:42:15.709-08:00Экспресс программирование 1: космо шутер<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhinGmidA1e09Ugm83XRcZVwnZcG7YJSbGW2XfY-EGn1ZU4gCmcQqkklCZhNaMIEAg8N_K-UPpL8KpAjdTJGiYeHOUAuX6BuoM9Kb3JIgWj7xSbPaKwquuvHpaenNRxOymezq9AComUbXc/s1600/aliens.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="312" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhinGmidA1e09Ugm83XRcZVwnZcG7YJSbGW2XfY-EGn1ZU4gCmcQqkklCZhNaMIEAg8N_K-UPpL8KpAjdTJGiYeHOUAuX6BuoM9Kb3JIgWj7xSbPaKwquuvHpaenNRxOymezq9AComUbXc/s320/aliens.jpg" width="320" /></a></div>
<div align="left" class="separator" style="clear: both; text-align: center;">
<br /></div>
<div align="left" class="separator" style="clear: both; text-align: center;">
<br /></div>
<div align="left" class="separator" style="clear: both; text-align: center;">
<br /></div>
<div align="left" class="separator" style="clear: both; text-align: center;">
<br /></div>
<div align="left" class="separator" style="clear: both; text-align: center;">
<br /></div>
<div align="left" class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Итак, начинается новый раздел - экспресс программирование. Здесь я буду писать <strong>как и что можно быстро сделать на флэше</strong>. Также здесь же будут разные эксперименты.</div>
Сейчас же я расскажу <strong>как быстро сделать игру на флэш</strong> - <strong>космический шутер</strong> (что-то вроде <strong>invaders</strong>). Цель на сегодня - сделать одноуровневую игру меньше чем за час.<br />
<a name='more'></a><br />
<span style="color: red;">1</span>. Создаю новый документ, делаю несколько мувиклипов: себя (треугольничек-мувиклип, имя - hero), врага (треугольничек-мувиклип, повёрнутый в другую сторону, имя - alien), свою пулю (её я решил сделать отдельно от вражеских пуль, пусть различаются хоть как-нибудь, имя - myBullet), вражескую пулю (alBullet).<br />
<span style="color: red;">2</span>. Делаю два кадра: в первом будет надпись "Нажмите пробел для старта", во втором будет происходить весь игровой процесс. Все мувиклипы, созданные в пункте 1, должны быть на втором кадре!<br />
<span style="color: red;">3</span>. Теперь время писать код. Сначала переменные: shoot - флажок, обозначает выстрелил ли я уже или нет (если false, то могу выстрелить, если true - нет), d и d2 - depth врагов. Тоже самое с bulletd и bulletd2 - depth пуль. Теперь поподробнее про это: во Flash нужно, чтобы все объекты, создаваемые в процессе игры, имели свою глубину. Если у двух или более объектов одинаковая глубина, флэш начинает тупить. Чтобы легче было контролировать все эти объекты, они будут пронумерованы. Например: alien0, alien1, alien2 ... Я предпочитаю for(i=d2;i<d;i++){ - получается проход по всем объектам от d2 до d. Чтобы, например, пройтись по aliens0,aliens1,aliens2,...,aliens19, нужно ввести:for(i=0;i<20;i++){ , затем в теле цикла достаточно будет написать _root["aliens"+i] , чтобы ссылаться поочерёдно на все объекты (aliens0,aliens1,aliens2,...,aliens19).<br />
<span style="color: red;">4</span>. Объявляем переменные и заполняем экран врагами:<br />
stop();<br />
<br />
<blockquote>d = d2 = 0;<br />
bulletd = bulletd2 = 100;<br />
shoot = false;<br />
for (i=0; i<10; i++) {<br />
for (i2=0; i2<5; i2++) {<br />
alien.duplicateMovieClip("al"+d,d);<br />
_root["al"+d]._x = i*50+50;<br />
_root["al"+d]._y = i2*50+50;<br />
_root["al"+d].xSpeed = 1;<br />
d++;<br />
}<br />
}<br /></blockquote>
<br />
<span style="color: red;">5</span>. Затем нужно прописать _root.onEnterFrame = function(){ /*тело функции*/ }. Тогда то, что находится в теле функции будет выполняться 24 раза в секунду (по умолчанию, чтобы изменить - измените fps ролика). Теперь нужно реализовать стрельбу. Принцип такой: у вас всего одна пуля. Выстрелив, вы не можете стрелять, пока она во что-нибудь не врежется (или не улетит за пределы).<br />
<blockquote>_root.onEnterFrame = function() {<br />
if (shoot == false && Key.isDown(Key.SPACE)) {<br />
shoot = true;<br />
myBullet._x = hero._x;<br />
myBullet._y = hero._y;<br />
}<br />
if(shoot == true){<br />
myBullet._y -= 10;<br />
}else{<br />
myBullet._x = -100;<br />
}<br />
if(myBullet._y < -50){<br />
shoot = false;<br />
}<br />
}<br />
</blockquote><span style="color: red;">6</span>. Описываем поведение врагов:<br />
<blockquote>if (d != d2) {<br />
for (i=d2; i<d; i++) {<br />
if (_root["al"+i]) {<br />
_root["al"+i]._x += _root["al"+i].xSpeed*5;<br />
if(_root["al"+i].hitTest(myBullet)){<br />
_root["al"+i].removeMovieClip();<br />
shoot = false;<br />
}<br />
if (_root["al"+i]._x>530) {<br />
_root["al"+i].xSpeed = -1;<br />
}<br />
if (_root["al"+i]._x<20) {<br />
_root["al"+i].xSpeed = 1;<br />
}<br />
//random(200) - означает, что действие (здесь - стрельба врагов) будет выполняться<br />
//в среднем раз в 200 проходов (при 24fps - один раз в 8.3 секунд)<br />
if (random(200) == 0) {<br />
bullet.duplicateMovieClip("bullet"+bulletd,bulletd);<br />
_root["bullet"+bulletd]._x = _root["al"+i]._x;<br />
_root["bullet"+bulletd]._y = _root["al"+i]._y;<br />
_root["bullet"+bulletd].ySpeed = random(5)+3;<br />
bulletd++;<br />
}<br />
}<br />
}<br />
}<br />
</blockquote><span style="color: red;">7</span>. Описываем поведение вражеских пуль:<br />
<blockquote>if (bulletd != bulletd2) {<br />
for (i=bulletd2; i<bulletd; i++) {<br />
if (_root["bullet"+i]) {<br />
if (_root["bullet"+i]._x<0 || _root["bullet"+i]._x>550 || _root["bullet"+i]._y<0 || _root["bullet"+i]._y>400) {<br />
_root["bullet"+i].removeMovieClip();<br />
}<br />
_root["bullet"+i]._x += _root["bullet"+i].xSpeed;<br />
_root["bullet"+i]._y += _root["bullet"+i].ySpeed;<br />
if (_root["bullet"+i].hitTest(hero)) {<br />
DELETE();<br />
prevFrame();<br />
}<br />
}<br />
}<br />
}<br />
</blockquote><span style="color: red;">8</span>. Теперm нужно сделать функцию очистки, т.е. DELETE();<br />
<blockquote>function DELETE () {<br />
myBullet.removeMovieClip();<br />
for(i=bulletd2;i<bulletd;i++){<br />
_root["bullet"+i].removeMovieClip();<br />
}<br />
for(i=d2;i<d;i++){<br />
_root["al"+i].removeMovieClip();<br />
}<br />
}<br />
</blockquote><span style="color: red;">9</span>. И немного оптимизации. Дело в том, что пуль будет много, и правая граница for'а будет постоянно уведичиваться. И спустя некоторое время игра начнёт сильно тормозить. Поэтому я всегда делаю проверку, и если на левой границе уже никого не осталось, то и не надо её считать :)<br />
<blockquote>if (bulletd2 != bulletd && !_root["bullet"+bulletd2]) {<br />
bulletd2++;<br />
}<br />
if (d2 != d && !_root["al"+d2]) {<br />
d2++;<br />
}<br /></blockquote>
<span style="color: red;">10</span>. И последние штрихи в этом кадре: условие победы и движение главного героя.<br />
<blockquote>if (Key.isDown(Key.LEFT)) {<br />
hero._x -= 7;<br />
}<br />
if (Key.isDown(Key.RIGHT)) {<br />
hero._x += 7;<br />
}<br />
if(d2 == d){<br />
DELETE();<br />
prevFrame();<br />
}<br /></blockquote>
<span style="color: red;">11</span>. Вернёмся к первому кадру: Пишем всю необходимую информацию (управление - влево, вправо, пробел. Чтобы начать игру, нажмите энтер. И пишел следующий код:<br />
stop();<br />
<blockquote>_root.onEnterFrame=function () {<br />
if(Key.isDown(Key.ENTER)){<br />
nextFrame();<br />
}<br />
}<br />
</blockquote>Итак, вот полный код этой игры. Поэксперементируейте, попробуйте изменить какие-нибудь значения.<br />
<blockquote>stop();<br />
function DELETE () {<br />
myBullet.removeMovieClip();<br />
for(i=bulletd2;i<bulletd;i++){<br />
_root["bullet"+i].removeMovieClip();<br />
}<br />
for(i=d2;i<d;i++){<br />
_root["al"+i].removeMovieClip();<br />
}<br />
}<br />
d = d2 = 0;<br />
bulletd = bulletd2 = 100;<br />
shoot = false;<br />
for (i=0; i<10; i++) {<br />
for (i2=0; i2<5; i2++) {<br />
alien.duplicateMovieClip("al"+d,d);<br />
_root["al"+d]._x = i*50+50;<br />
_root["al"+d]._y = i2*50+50;<br />
_root["al"+d].xSpeed = 1;<br />
d++;<br />
}<br />
}<br />
_root.onEnterFrame = function() {<br />
if (shoot == false && Key.isDown(Key.SPACE)) {<br />
shoot = true;<br />
myBullet._x = hero._x;<br />
myBullet._y = hero._y;<br />
}<br />
if(shoot == true){<br />
myBullet._y -= 10;<br />
}else{<br />
myBullet._x = -100;<br />
}<br />
if (Key.isDown(Key.LEFT)) {<br />
hero._x -= 7;<br />
}<br />
if (Key.isDown(Key.RIGHT)) {<br />
hero._x += 7;<br />
}<br />
if(d2 == d){<br />
DELETE();<br />
prevFrame();<br />
}<br />
if (d != d2) {<br />
for (i=d2; i<d; i++) {<br />
if (_root["al"+i]) {<br />
_root["al"+i]._x += _root["al"+i].xSpeed*5;<br />
if(_root["al"+i].hitTest(myBullet)){<br />
_root["al"+i].removeMovieClip();<br />
shoot = false;<br />
}<br />
if (_root["al"+i]._x>530) {<br />
_root["al"+i].xSpeed = -1;<br />
}<br />
if (_root["al"+i]._x<20) {<br />
_root["al"+i].xSpeed = 1;<br />
}<br />
if (random(200) == 0) {<br />
bullet.duplicateMovieClip("bullet"+bulletd,bulletd);<br />
_root["bullet"+bulletd]._x = _root["al"+i]._x;<br />
_root["bullet"+bulletd]._y = _root["al"+i]._y;<br />
_root["bullet"+bulletd].ySpeed = random(5)+3;<br />
bulletd++;<br />
}<br />
}<br />
}<br />
}<br />
if (bulletd != bulletd2) {<br />
for (i=bulletd2; i<bulletd; i++) {<br />
if (_root["bullet"+i]) {<br />
if (_root["bullet"+i]._x<0 || _root["bullet"+i]._x>550 || _root["bullet"+i]._y<0 || _root["bullet"+i]._y>400) {<br />
_root["bullet"+i].removeMovieClip();<br />
}<br />
_root["bullet"+i]._x += _root["bullet"+i].xSpeed;<br />
_root["bullet"+i]._y += _root["bullet"+i].ySpeed;<br />
if (_root["bullet"+i].hitTest(hero)) {<br />
DELETE();<br />
prevFrame();<br />
}<br />
}<br />
}<br />
}<br />
if (bulletd2 != bulletd && !_root["bullet"+bulletd2]) {<br />
bulletd2++;<br />
}<br />
if (d2 != d && !_root["al"+d2]) {<br />
d2++;<br />
}<br />
};<br /></blockquote>
P.s. Вообще, эту игру я делал достаточно давно. Цель моя была тогда несколько другая: написать играбельную игру как можно меньшего размера. В оригинальной игре код немного изменён (например, мувиклипы создаются когда игра уже запушена. Таким образом в библиотеке всего один мувиклип: главный герой. Это сделано из-за того, что создание мувиклипы едят много памяти). Swf файл игры весит 1,394 байт :D</div>flashhappenshttp://www.blogger.com/profile/09621810694252660250noreply@blogger.com0tag:blogger.com,1999:blog-4502299585227155612.post-68405254903837988832011-08-23T02:16:00.000-07:002012-02-18T07:41:58.032-08:00Делаем игры со StencylWorks. Часть 2<div dir="ltr" style="text-align: left;" trbidi="on"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5WFEODC-I9PE4ofySOAXWk9u3PK6tMFLmOnNFZHLVoQZoSqrpbVbbI4Ot7AvS4W66pbalz8-OctPVNO2sHLS_WCRp6fyFJrTIHUHOVXaty1i3M_SPXi3dcbHCdh8FbRaHU6934CVT_Jc/s1600/stencylWorks.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="175" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5WFEODC-I9PE4ofySOAXWk9u3PK6tMFLmOnNFZHLVoQZoSqrpbVbbI4Ot7AvS4W66pbalz8-OctPVNO2sHLS_WCRp6fyFJrTIHUHOVXaty1i3M_SPXi3dcbHCdh8FbRaHU6934CVT_Jc/s320/stencylWorks.png" width="320" /></a></div><br />
Вторая часть моего знакомства с StencylWorks. Первая часть <a href="http://flash-is-awesome.blogspot.com/2011/08/stencylworks-1.html">здесь</a>.<br />
После такого хорошего начала просто обязаны были появиться недочёты. И они появились.<br />
<a name='more'></a><br />
<div align="center"><span style="font-size: large;">Первые разочарования. </span></div>Итак, я решил сделать актёру-врагу поведение.<br />
(Здесь меня многие не поймут, поэтому поясняю: в StencylWorks всё называется по-своему. Объекты, способные хоть как-то взаимодействовать друг с другом - Актёры. (Actor) Ими являются главный герой, NPC, пули, собираемые предметы, бонусы, монеты и т. п. Поведение (behaviour) - некий скрипт, привязанный к Актёру (или нескольким), определяющий, собственно, что он (они) будут делать. Сценами (Scene) называются уровни. Также сценами могут быть главное меню, меню выбора уровня и т. д.)<br />
Скрипт в этой программе пишется с помощью вот таких блоков:<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdq_-dQUMp2hoFMky52FRmwe8SZD8F0Fx3DXpRH4173bb8Brn15E6O5EzZfYXVR98UlqzpBxcWpCVaIfiHXQcAzN1CLGMxRfnigcLh-DLeLumO4T6w7tuRyuXDlawkU9EdpQmN0oruhpA/s1600/StencylWorks3.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="175" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdq_-dQUMp2hoFMky52FRmwe8SZD8F0Fx3DXpRH4173bb8Brn15E6O5EzZfYXVR98UlqzpBxcWpCVaIfiHXQcAzN1CLGMxRfnigcLh-DLeLumO4T6w7tuRyuXDlawkU9EdpQmN0oruhpA/s320/StencylWorks3.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Написание кода в StencylWorks. Кликните по изображению для увеличения.</td></tr>
</tbody></table>Всё бы ничего, но у этих блоков есть огромный минус: код писать слишком долго. Посудите сами: сначала нужно вспомнить в какой категории находится нужный блок (Actor/Flow/Scene/User Input/Numbers & Text/Attributes/Sound/Messaging/Game/Drawing/Collision/Custom), затем выбрать нужную подкатегорию (например в категории Actor: Position/Motion/Properties/Draw/Tweening/Effects) и лишь потом найти среди нескольких блоков нужный. И при всём этом блоки глючат, не всегда встают куда нужно, а иногда вообще не хотят никуда вставать.<br />
<br />
Апдейт: ещё можно кликнуть правой кнопкой мыши по любому блоку и выбрать "Add to Favourites", тем самым добавив его во вкладку "Любимые"(Favourites). Но если перетащить туда все нужные блоки, то их будет сложно искать. Если же перетащить несколько - то придётся всё время переключаться с Favourites на Palette и наоборот. "Золотая середина" - это десяток самых используемых блоков.<br />
<br />
У такого написания кода есть альтернатива - блок "Code". В нём можно писать код вручную. Но на первое время делать этого не советую, потому что для этого нужно знать все названия и аргументы функций, созданных StencylWorks.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGvpaBWmVXTIaLBa7u_gAZBiScunHNUTL0JeZVQlbZJdFyooXRoCgs4S75PI457_G3fpIVfveWQ_k-0tAHwwEwl3kxINcCKiCZfMbnksUe__6O3HjOKUmhEClkoXUwTsI8jUzmANQgKhE/s1600/StencylWorks4.bmp" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGvpaBWmVXTIaLBa7u_gAZBiScunHNUTL0JeZVQlbZJdFyooXRoCgs4S75PI457_G3fpIVfveWQ_k-0tAHwwEwl3kxINcCKiCZfMbnksUe__6O3HjOKUmhEClkoXUwTsI8jUzmANQgKhE/s320/StencylWorks4.bmp" width="303" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Блок "code".Кликните по изображению для увеличения.</td></tr>
</tbody></table><br />
<br />
Продолжение статьи здесь.</div>flashhappenshttp://www.blogger.com/profile/09621810694252660250noreply@blogger.com0tag:blogger.com,1999:blog-4502299585227155612.post-40815679277296078812011-08-19T05:26:00.000-07:002011-08-23T02:24:47.992-07:00Делаем игры со StencylWorks. Часть 1<div dir="ltr" style="text-align: left;" trbidi="on"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5WFEODC-I9PE4ofySOAXWk9u3PK6tMFLmOnNFZHLVoQZoSqrpbVbbI4Ot7AvS4W66pbalz8-OctPVNO2sHLS_WCRp6fyFJrTIHUHOVXaty1i3M_SPXi3dcbHCdh8FbRaHU6934CVT_Jc/s1600/stencylWorks.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="175" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5WFEODC-I9PE4ofySOAXWk9u3PK6tMFLmOnNFZHLVoQZoSqrpbVbbI4Ot7AvS4W66pbalz8-OctPVNO2sHLS_WCRp6fyFJrTIHUHOVXaty1i3M_SPXi3dcbHCdh8FbRaHU6934CVT_Jc/s320/stencylWorks.png" width="320" /></a></div><br />
Недавно на просторах Интернета появилась довольно интересная программа - <a href="http://stencyl.com/">StencylWorks</a>. Так как разработкой игр я занимаюсь уже давно, меня она очень заинтересовала. В описании говорилось, что вы сможете создавать игры без знания языка программирования.<br />
<br />
<a name='more'></a><br />
<div align="center"><span style="font-size: large;">Первые впечатления.</span></div><span style="font-size: small;">Скачав (программа бесплатная) и установив StencylWorks, я был приятно удивлён. Приятно удивил и размер загружаемого файла - 38.2 MB. Дружелюбный интерфейс сразу же предложил пройти вводный курс и рассказать как делать игры. (Программа полностью на английском языке, что, конечно же, отпугнёт большую часть россиян) Через 20 минут я уже знал основные принципы работы программы. Интерфейс достаточно прост: я выбрал тип игры - платформер. StencelWorks сгенерировал небольшой уровень с главным героем и несколькими блоками. В главного героя сразу были встроены основные события: движение влево-вправо, прыжок, рестарт уровня при падении главного героя за пределы экрана и др. Спустя пару минут уже был готов уровень:</span><br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8QDUxumi-767hL7k0h_Oo4wmRhWdiLTkjPG8LKmHnO3SnyiK3bGArZELObSM1smV_-Gnf3a1PuDkoKJzd_7H426UPEaqGrvd-yddO9TNPCETJ5MfbFV-CKglhlVtrvs0zaH6LTtVYaN0/s1600/screenshot1.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="212" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8QDUxumi-767hL7k0h_Oo4wmRhWdiLTkjPG8LKmHnO3SnyiK3bGArZELObSM1smV_-Gnf3a1PuDkoKJzd_7H426UPEaqGrvd-yddO9TNPCETJ5MfbFV-CKglhlVtrvs0zaH6LTtVYaN0/s320/screenshot1.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Интерфейс StencylWorks. Кликните по изображению для увеличения.</td></tr>
</tbody></table><span style="font-size: small;">Большое количество разнообразных персонажей, блоков, скриптов и т. д. можно скачать и сразу внедрить в игру используя встроенный StencylForge. Что, конечно же, является огромным плюсом.</span><br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJK6PjqvnkdwR4NElllkhOa_eASfsMmSgTH8HnfuvtRuORiDlTjI1XtUuUanwrxB1ANGVSBKjSaOXDhSJJttxgDAjeZ8su1ZCasO5-KqhaHahPFcrI13VLT97-2hHCzXjbcHCk-TYq7uA/s1600/screenshot2.bmp" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="203" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJK6PjqvnkdwR4NElllkhOa_eASfsMmSgTH8HnfuvtRuORiDlTjI1XtUuUanwrxB1ANGVSBKjSaOXDhSJJttxgDAjeZ8su1ZCasO5-KqhaHahPFcrI13VLT97-2hHCzXjbcHCk-TYq7uA/s320/screenshot2.bmp" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">StencylForge. Кликните по изображению для увеличения. </td></tr>
</tbody></table><br />
<span style="font-size: small;">Само создание уровня было очень простым: выбираешь нужный элемент из списка справа - рисуешь его на сцене. (Единственное что не порадовало - невозможность копирования объектов) Нажал Test Game, StencylWorks сгенерировал и скомпилировал swf-файл. И вот уже герой по имени Mambo весело прыгает и бегает по блокам. Только вот враги беспомощно стоят на месте. Непорядок! Нужно прописать им какое-нибудь "поведение". Вот тут и начались первые проблемы. </span><span style="font-size: small;"><a href="http://flash-is-awesome.blogspot.com/2011/08/stencylworks-2.html">Следующая часть здесь.</a></span></div>flashhappenshttp://www.blogger.com/profile/09621810694252660250noreply@blogger.com0tag:blogger.com,1999:blog-4502299585227155612.post-47164788032699800352011-08-19T04:46:00.000-07:002011-08-19T05:33:52.451-07:005 ошибок начинающих flash программистов<div dir="ltr" style="text-align: left;" trbidi="on">1) Комментарии, комментарии и ещё раз комментарии! Иначе потом ничего не поймёте в своём же коде, который писали месяц назад.<br />
<br />
2) Давайте переменным имена, отражающие их суть. Чтобы не быть голословным, приведу пример.<br />
<a name='more'></a>Сравните два фрагмента кода:<br />
<br />
if(d)<br />
{<br />
b++;<br />
}<br />
a=b+c;<br />
<br />
if(createNewTextField)<br />
{<br />
textFields++;<br />
}<br />
objectsTotal = textFields+buttons;<br />
<br />
Поверьте! Время, потраченное на написание длинных имён не будет потрачено впустую! Если же он Вам так дорого, можно придумать несколько сокращений. (Например, i - целочисленная переменная, использующаяся в цикле for. TF = TextField. MC = MovieClip и т д)<br />
<br />
3) Не забывайте про форматирование. Учитесь форматировать сразу, не пользуясь кнопкой "Auto Format". В других средах разработки такой "волшебной" кнопочки может и не быть. То же самое касается постановки ";" после каждого присваивания и вызова функции. Хоть флэш и разрешает не ставить точку с запятой, делать это всё же нужно во избежание дальнейших ошибок при переходе на другие языки программирования.<br />
<br />
4) Флэш разрешает писать код и в кадрах, и в мувиклипах, да хоть в мувиклипах внутри других мувиклипов! Но представьте как трудно будет совмещать все эти участки кода, разбросанные по всему проекту! Поэтому рекомендую писать код в кадрах (если AS2). Максимум, что я себе позволяю написать вне кадра - это stop(); gotoAndPlay(x); AS3 в этом отношении хорош - он не позволит допустить такой ошибки.<br />
<br />
5) Не забывайте, что флэш - объектно ориентированный язык. Возможно, создав класс, можно будет намного легче выполнить какую-либо задачу.</div>flashhappenshttp://www.blogger.com/profile/09621810694252660250noreply@blogger.com0tag:blogger.com,1999:blog-4502299585227155612.post-14170043767168587062011-08-19T02:42:00.000-07:002011-08-19T05:34:15.352-07:00Какой Action Script выбрать?<div dir="ltr" style="text-align: left;" trbidi="on">Всего различают три версии этого замечательного языка.<br />
<br />
<br />
1) Action Script 1.0 – безнадёжно устарел.<br />
<br />
2) Action Script 2.0. Самый простой язык программирования, с которым я когда-либо работал.<br />
<a name='more'></a> Сам исправляет некоторые ошибки. (например, выставляет все пропущенные «;» или разрешает использовать переменную без её объявления) Перемнные могут быть конкретного типа или нетипизированными. Это означает, что одной и той же переменной можно присваивать разные типы данных. И никакой ошибки не будет. Также имеется удобная возможность писать код в так называемых «кадрах» или в экземплярах. Это значительно упрощает задачу, но усложняет выявление логических ошибок.<br />
<br />
3) Action Script 3.0. На данный момент это самая новая версия. Больше всего подходит для крупных, масштабных проектов. Существенно отличается от второй версии: здесь код писать можно только внутри классов. Соответственно, ни о каких скриптах в кадрах или в MovieClip’ах и речи не может быть. Ещё сделали обязательное объявление переменных. Как и в AS2 их можно объявить конкретного типа или нетипизированными.<br />
<br />
Преимущества AS3 выявляются при создании крупных проектов с большим количеством классов и экземпляров. Это лёгкая трассировка кода и увеличенная в 2.3 раза производительность. (по сравнению с AS2)<br />
<br />
Итак, на вопрос: что лучше? нельзя ответить однозначно. При создании презентаций, баннеров, роликов и других малогабаритных проектов лучше всего подойдёт Action Script 2.0. Но если же вы создаёте нечто большее, то выбор очевиден: AS3.<br />
<br />
P.s.: А ещё у языков семейтсва Action Script имеется одна интересная особенность: скрипт сохраняется в кодировке Юникод. Следовательно, комментарии, названия переменных, классов, экземпляров и т. д. можно писать русскими буквами!<br />
<br />
Правда смысла в этом мало…</div>flashhappenshttp://www.blogger.com/profile/09621810694252660250noreply@blogger.com0tag:blogger.com,1999:blog-4502299585227155612.post-69006412081950079122011-08-18T12:01:00.000-07:002011-08-19T05:34:27.752-07:00Плюсы и минусы флэш сайтов.<div dir="ltr" style="text-align: left;" trbidi="on">Это довольно избитая тема, но всё же: стоит ли создавать сайт на флэше или же ограничиться html/php?<br />
Чтобы разобраться в этом вопросе, нужно выделить все плюсы и минусы флэш сайтов.<br />
Итак, начнём с <b>плюсов</b>.<br />
<a name='more'></a><br />
+ Необычный дизайн. Всем известно, что обычно страница сайта делится на две или три колонки. Здесь же ничто Вас не ограничивает - можно делать что угодно: красивая анимация переходов между страницами сайта, выдвигающееся меню при наведении мыши, куча интерактивных элементов и многое другое.<br />
+ Автономность. То есть после того как сайт загрузился, можно смело "гулять" по нему в режиме оффлайна. А всё потому что с самого начала <b>весь</b> сайт загружается в оперативную память, а потом уже работает оттуда.<br />
+ Простота среды разработки. Научиться делать сайты можно буквально за пару уроков.<br />
Теперь <b>минусы</b>:<br />
- Долгая загрузка. Она связана с тем, что сайт загружается полностью и сразу.<br />
- Для тех, у кого нет флэш плеера, ваш сайт будет пустым окном. Но таких мало, ведь все мы смотрим видео в интернете...<br />
- Проблемы с индексацией. Это одна из основных проблем. Индексация - сохранение всей информации на Вашем сайте поисковым роботом. Индексация очень важна, т.к. без неё сайт не будет отображаться в результатах поиска. Некоторые поисковые системы распознают и сохраняют <b>только текст</b> на главной странице сайта. А нет индексации - нет и посетителей.<br />
- Ещё есть небольшая проблемка, связанная с разнообразием мониторов. Если обычный сайт ещё можно как-то оптимизировать под любой экран, то с флэшем всё намного сложнее. Дело в том, что флэш сайт загружается в окошке, размер которого нужно указать до публикации сайта.<br />
<br />
К сожалению, минусов получается больше и они более существенны. Но всё в Ваших руках. Может быть именно Вам удастся создать отличный флэш сайт?</div>flashhappenshttp://www.blogger.com/profile/09621810694252660250noreply@blogger.com0tag:blogger.com,1999:blog-4502299585227155612.post-71737288030066691742011-08-18T10:49:00.000-07:002011-08-19T05:34:56.387-07:00Flash игры<div dir="ltr" style="text-align: left;" trbidi="on">Flash игры. Все мы хоть раз в них играли. Здесь я расскажу о них немного поподробнее. Flash возник благодаря американской компании Macromedia ещё в далёком 1996 году. Затем , в 2005-ом, этот проект купила Adobe. Всё это время, и по сей день, флэш активно развивался. Появлялись новые версии, усложнялся Action Script (язык программирования).<br />
Сейчас Флэш используется почти на каждом сайте. В виде баннеров,видео (почти все видео плееры в интернете сделаны на флэше*), и, конечно же, игр.<br />
<a name='more'></a><br />
Флэш игры, хоть и не обладают возможностями игр более высокого уровня, пользуются большой популярностью. Эта популярность обусловлена некоторыми преимуществами. Во-первых, практически все флэш игры бесплатные. Во-вторых, они не занимают много времени. В-третьих, их намного легче создавать.<br />
Лично я считаю, что идеальная игра не должна "затягивать" человека на огромный промежуток времени. (как это делают все ММОРПГ) Она не должна бытьслишком трудной, иначе удовольствие от неё пропадает. И, наконец, она должна быть забавной и интересной. Многие Флэш игры соответствуют всем этим требованиям.<br />
Итак, флэш игры отлично подходят для убийства 15-20 минут с целью поднятия настроения. Плюсы и минусы:<br />
+ Их легко создавать<br />
+ Они бесплатные<br />
+ Также нужно не забывать про их малый размер<br />
+ Присутствие юмора<br />
+ 99% из них легко освоить<br />
- Простота<br />
- Ограниченный функционал**<br />
<br />
* да-да, плеер ютуба тоже сделан на флэше<br />
** например, нельзя назначить какое-либо действие на правую кнопку мыши, потому что при её нажатии вылезает Адобовское контекстное меню</div>flashhappenshttp://www.blogger.com/profile/09621810694252660250noreply@blogger.com0tag:blogger.com,1999:blog-4502299585227155612.post-67102115818336753042011-08-18T09:49:00.000-07:002011-08-19T05:35:10.194-07:00Юмор в играх<div dir="ltr" style="text-align: left;" trbidi="on"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcxVPOYvRVvcRQeF9SVPC51BGgKtdwsS1AcrKNAumnZW90fNAV-lWJj-XR2daH5296drFiv_2609NDLdWrpO8QZ9786d-ng9QVi6PojkilsXyPU5jT26Qod11Cv4oL_Ldx07vnF6PpRaw/s1600/smiley.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcxVPOYvRVvcRQeF9SVPC51BGgKtdwsS1AcrKNAumnZW90fNAV-lWJj-XR2daH5296drFiv_2609NDLdWrpO8QZ9786d-ng9QVi6PojkilsXyPU5jT26Qod11Cv4oL_Ldx07vnF6PpRaw/s320/smiley.jpg" width="320" /></a></div><br />
В последнее время я стал часто замечать в играх тег "funny". И такие игры зачастую становятся популярными! За примером далеко ходить не надо - возьмём, например,<br />
<a name='more'></a> Another Pointless Flash Button Game Derived From Other Pointless Flash Button Games Inspired For No Absolute Reason Featuring a Random Button That Asks You Random Pointless Objects and Challenges You (Yes you.) To Complete This Super Long Game If You Can. (примерный перевод - Ещё Одна Бессмысленная Флэш Кнопочная Игра Производная От Других Бесполезных Флэш Кнопочных Вдохновлённая Без Причины Благодаря Случайной Кнопке Которая Задаёт Вам Случайные Бессмысленные Вопросы И Бросает Вызов Вам (да, Вам.) Чтобы Вы Прошли Эту Очень Долгую Игру Если Сможете). Название, конечно, сразу наводит на мысль: здесь что-то не так :) На самом деле это пародия на сотни "Кнопочных" игр, выходящих с завидной регулярностью. Весь смысл таких игр заключается в нажимании одной единственной кнопки. При этом на экране появляется какой-нибудь текст. Кнопка "разговаривает" с Вами на разные темы. Вот и здесь - вам нужно всего лишь нажать на эту кнопку 1338 раз, и если хватит терпения и знания английского языка, прочитать все что она скажет. Да и сделать такое может каждый. И такая игра набрала 50 тысяч просмотров и довольно высокую оценку. Почему? Потому что она сделана с юмором.<br />
<br />
Также хотелось бы добавить, что игры изначально придуманы для того, чтобы доставить игроку удовольствие. Один из выходов - сделать их несложными. Иногда в них даже и проиграть-то нельзя. Вспомнить хотя бы нашумевшую игру You Have To Burn The Rope (Тебе Нужно Сжечь Верёвку), набравшую 2.3 миллиона игр.(!) В описании говорится: "Компьютерные игры становятся всё сложнее и сложнее..." И You Have To Burn The Rope действительно проходится за 2 минуты. Плюс в конце бонус, ради которого стоит пройти эту игру:)<br />
<br />
Итак, немного юмора никогда не помешают игре, даже если это просто надпись "the end is a lie". Не зря на соревнованиях по разработке игр (например Ludum Dare Competition - соревнование, где на всё вам даётся 48 часа) одним из критериев их оценки является "Юмор".</div>flashhappenshttp://www.blogger.com/profile/09621810694252660250noreply@blogger.com0