Информация

Обсуждало 10 человек

LA FAIBLESSE D`?ME :: Разработка

Художество и анимация
04 марта 2012 в 12:30:28

Итак, я все таки решился написать здесь о разработке своей первой игры.
Что же меня толкнуло на это?
1) Я обожаю инди - игры, из - за чего мысль о создании собственного детища не дает мне покоя;
2) На одном очень уютном сайтике для игроделов проходит конкурс с очень интересной тематикой: приведена цитата из Джека Лондона, а игроделы свободны в ее интерпретации.
А теперь о самой игре.
-

Название я выбрал на французском, не кидайтесь камнями, это всего лишь попытка выделиться из кучи проектов и придумать оригинальное (то есть нигде не использовавшееся) название. На русский можно перевести одним словом - МАЛОДУШИЕ.
О сюжете пока ничего не скажу, могу привести лишь цитатку из сценария:
-Вся эта бессмысленная борьба... Ты продолжаешь сражение с самим собой, более того, ты увлечен им. Пожалуй, ты в очередной раз нашел, чем занять свои ручонки.
Пока все, больше спойлеров не дам, да там и нечего особо давать, не роман же я пишу))
Жанровая принадлежность - что - то вроде двухмерного TPS.
Все пишу на AS3, вроде моих скудных возможностей пока хватает.
Ну и самое вкусное - скриншот:

В графику уже вносятся поправки, но пока я даю лишь старый скриншот, вдруг они не приживутся))
-
Ну вот и все.
Надеюсь, успею доделать до 10 - тогда конкурс заканчивается!

Обсуждение (вниз)

Не хватает только вашего мнения. Зарегистрируйтесь, чтобы написать!

12 марта 2012 в 17:12:04

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


C какого она там будет? Ведь в массиве уже не будет мувиков, а если массив равен 0, та цикл не выполняется.

12 марта 2012 в 16:36:15

amo.splice(n,1) убирает элемент из массива. И если до цикла amo.length был 10, то после цикла он может стать, например, 2, если будет убрано 8 мувиков. Этих элементов в массиве больше не будет. вообще. И повторный цикл не приведет к попытке удаления удалённых мувиков.

12 марта 2012 в 16:33:50

А с чего вдруг ошибка?

12 марта 2012 в 16:29:15

var i = amo.length;
while(i--){
if (amo[n].hitTest....)
{
removeChild(amo[n]);
amo.splice(i,1);
}
}

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

12 марта 2012 в 16:26:50

var i = amo.length; while(i--){ }


или

for (var n=amo.length-1;n>=0;n--) { }

12 марта 2012 в 16:24:26

Писать меньше

12 марта 2012 в 16:14:08

это бред какойто

Нормальный бред :)
ну только
var a:MovieClip = amo[n];
на самом деле нахрен не надо, да.
Ну а сделать for или while - большой разницы нет.

12 марта 2012 в 16:06:37

MO_COUNT = 0;

когда создаешь этот свой amo тогда делаешь AMO_COUNT++;

for (var n:int = 0; n < amo.length; n++)
{
if (amo[n])
{
if (amo[n].hitTest....)
{
AMO_COUNT--;
removeChild(amo[n]);
amo[n] = null;
}
}

if (AMO_COUNT <= 0) amo = [];
}


Ужас... проще

var i = amo.length;
while(i--){
if (amo[n].hitTest....)
{
removeChild(amo[n]);
amo.splice(i,1);
}
}

12 марта 2012 в 16:06:34

Поподробней.
Смысл в том, чтоб запихнуть все объекты в массив, а не делать под каждого свою переменную.
вместо такого: amo1, amo2, amo3... получится amo[0], amo[1],amo[2],amo[3], .... amo[100500]. Что проще и удобнее.

for (var n=0;n<amo.length;n++)

перебираем все элементы массива - с 0-го по последний.
Массив у нас называется amo, кол-во элементов узнаем из amo.length (если у на 3 врага, то нам нужны элементы с 0 по 2).

var a:MovieClip = amo[n];

Достаем из массива элемент - так с ним можно будет работать. Теперь все действия нужно производить с "a", а не с "amo[n]" .

Ну и почитай всякие мануалы, там всё написано.

12 марта 2012 в 16:03:21

Это сработает?


Я всегда так делаю, а вообще что бы массив весь очистить можно просто amo = [];

12 марта 2012 в 15:58:27

for (var n=amo.length-1;n>=0;n--) { // в обратную сторону - т.к. когда уберешь элемент из массива, рискуешь вылететь за его пределы и получить ошибку
var a:MovieClip = amo[n];
if (hittest........) {
amo.splice(n,1);
removeChild(a);
a = null;
}
}

это бред какойто

AMO_COUNT = 0; когда создаешь этот свой amo тогда делаешь AMO_COUNT++; for (var n:int = 0; n < amo.length; n++) { if (amo[n]) { if (amo[n].hitTest....) { AMO_COUNT--; removeChild(amo[n]); amo[n] = null; } } if (AMO_COUNT <= 0) amo = []; }



12 марта 2012 в 15:55:02

for (var n=0;n<amo.length;n++) {
var a:MovieClip = amo[n];
a.play();

А можно тут поподробней?)) Я не понял
А вообще спасибо большое за помощь!

12 марта 2012 в 15:53:33

ну логически да, n = 0; // false n = 1..2..3 // true цикл рекратиться когда n будет равно 0

12 марта 2012 в 15:52:20

не проще ли while(n--)?

Это сработает?

12 марта 2012 в 15:48:42

как убивать:
for (var n=amo.length-1;n>=0;n--) { // в обратную сторону - т.к. когда уберешь элемент из массива, рискуешь вылететь за его пределы и получить ошибку
var a:MovieClip = amo[n];
if (hittest........) {
amo.splice(n,1);
removeChild(a);
a = null;
}
}


не проще ли while(n--)?

12 марта 2012 в 15:47:44

А у аммо нет больше нет событий?

12 марта 2012 в 14:44:11

Точнее сначала
removeChild(amo1);
а потом
amo1 = null;

12 марта 2012 в 14:43:34

Кстати, функция hitTest сравнивает не попиксельно, а квадраты, в которые вписаны сталкивающиеся объекты.
И ещё - после уничтожения amo1, тебе лучше ничего с ним не делать. Иначе будет ошибка.
Вообще конечно лучше создать массив:

var amo:Array = new Array();

var a;
a = new MovieClip(); // Создаем первого врага (вместо MovieClip ставь класс врага)
a.x = 700;
a.y = 100;
addChild(a);
amo.push(a);

a = new MovieClip(); // Создаем второго врага
a.x = 700;
a.y = 250;
addChild(a);
amo.push(a);

как заставить их двигаться (и вообще выполнять действия):
for (var n=0;n<amo.length;n++) {
var a:MovieClip = amo[n];
a.play();
}

как убивать:
for (var n=amo.length-1;n>=0;n--) { // в обратную сторону - т.к. когда уберешь элемент из массива, рискуешь вылететь за его пределы и получить ошибку
var a:MovieClip = amo[n];
if (hittest........) {
amo.splice(n,1);
removeChild(a);
a = null;
}
}

12 марта 2012 в 14:30:25

amo1.stop(); // Раз говоришь что в нем что-то проигрывается - лучше остановить
amo1 = null;
removeChild(amo1);

объект жив, пока на него хоть кто-нибудь ссылается. В данном случае ты убираешь amo1 со сцены, но не уничтожаешь его.

12 марта 2012 в 14:13:10

если amo1 соприкасается с героем, происходит removeChild(amo1).

*Соприкасается с атакой героя

12 марта 2012 в 14:12:02

В общем, сейчас объясню механику саму.
На сцене есть объект, при соприкосновении героя с которым спаунятся монстры.
Вот так это выглядит:
function pruf3(e:Event):void{
if (nm3.hitTestObject(lol)){
addChild(amo1);
addChild(amo2);
addChild(amo3);
addEventListener(Event.ENTER_FRAME, movemon3);
}
}

function movemon3(e:Event):void {
amo1.x = 700;
amo2.x = 700;
amo3.x = 700;
amo1.y = 100;
amo2.y = 250;
amo3.y = 250;
amo1.play();
amo2.play();
amo3.play();

}
amo1,2,3 - child`ы. В них проигрывается анимация движения в определенную сторону.
Соответственно, дальше все hitTest`ится, если amo1 соприкасается с героем, происходит removeChild(amo1). Но почему - то если герой после этого проходит по маршруту монстра, он умирает!

12 марта 2012 в 08:34:59

Lime, ты не стесняйся, озвучь свой баг. Может это тебе только так кажется, что всё запутано. Хуже не будет.

11 марта 2012 в 23:06:08

Да не в этом дело, все очень запутано.


И не такое распутывали.

11 марта 2012 в 22:51:31

очень жаль

11 марта 2012 в 22:16:24

Ага, тут все дураки.

Да не в этом дело, все очень запутано.

11 марта 2012 в 22:13:06

Не думаю, что кто - то бы понял


Ага, тут все дураки.

11 марта 2012 в 19:47:23

очень жаль

11 марта 2012 в 19:44:27

PolarisF, у меня все очень запутанно.
Не думаю, что кто - то бы понял, а исправить я бы все равно не успел: было 22:00, 2 часа до конца конкурса при обнаружении бага.

11 марта 2012 в 18:32:57

Так ты бы спросил, тебе бы подсказали.

11 марта 2012 в 18:10:55

У тебя наверно мего познания в ас.

В том - то и проблема, что я нуб полнейший. Писалось все в кадрах и символах

11 марта 2012 в 17:59:21

Может у тебя базовый класс от Sprite наследовался, а игра по кадрам тогда MovieClip надо, и ты мог это занести в мего пи*доху*тельные баги.

11 марта 2012 в 17:57:28

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


У тебя наверно мего познания в ас.

11 марта 2012 в 17:53:05

А спросить то не дано.

11 марта 2012 в 17:49:32

apoprom*, при соединении всего воедино вылез баг. Причем такой, что я не смог его найти, даже не подозреваю, почему так происходит

11 марта 2012 в 02:33:56

Хаха. не доделал =)))))))

11 марта 2012 в 01:44:35

Ты написал название игры на языке голи O_о

10 марта 2012 в 18:07:39

чОтко

10 марта 2012 в 18:04:05

Доделываю. Сегодня - последний срок

05 марта 2012 в 13:29:54

О_О ОМГ!!!

Сарказм, уточняю

05 марта 2012 в 12:41:27

Побольше бы в мире таких людей, как ты...

О_О ОМГ!!!

04 марта 2012 в 21:08:53

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

04 марта 2012 в 21:06:42

Очень хороший, он молодец вообще, я его люблю, но не кодю на нем

04 марта 2012 в 21:02:40

а C++ хороший язык? хД

04 марта 2012 в 20:33:04

Название на французском звучит тупо, вряд ли таким способом ты выделишься.

PolarisF, а кому-то русский не нравится, уж больно он грубоват. А носители английского говорят, набрав каши в рот. В китайском тон скачет туда сюда, а у немцев язык гавкающий. Каждый язык хорош, и ничего плохого нет в том, что бы написать на французском название. Французский и английский — очень красивые языки.

04 марта 2012 в 20:14:24

судя по скрину, нас ждет говноклон этой игры:

04 марта 2012 в 20:06:43

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


ему эта игра зело по нраву

04 марта 2012 в 19:50:08

Аахаха а вот и прямые комментарии хД

04 марта 2012 в 19:45:38

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


Игра про онанизм? Название на французском звучит тупо, вряд ли таким способом ты выделишься.

04 марта 2012 в 16:41:34

Да вроде как да

04 марта 2012 в 16:02:06

ммм...вот оно как.
ну ты успеваешь по срокам?

04 марта 2012 в 15:50:00

У природы много способов убедить человека в его смертности: непрерывное чередование приливов и отливов, ярость бури, ужасы землетрясения, громовые раскаты небесной артиллерии. Но всего сильнее, всего сокрушительнее — Белое Безмолвие в его бесстрастности. Ничто не шелохнется, небо ярко, как отполированная медь, малейший шепот кажется святотатством, и человек пугается собственного голоса. Единственная частица живого, передвигающаяся по призрачной пустыне мертвого мира, он страшится своей дерзости, остро сознавая, что он всего лишь червь. Сами собой возникают странные мысли, тайна вселенной ищет своего выражения. И на человека находит страх перед смертью, перед Богом, перед всем миром, а вместе со страхом — надежда на воскресение и жизнь и тоска по бессмертию — тщетное стремление плененной материи; вот тогда-то человек остается наедине с Богом.

04 марта 2012 в 15:35:39

а что за цитата из джека лондона?
Fundux.ru v.3.0 © 2006-2021 AleXNoD
Портал русских флеш игр и flash мультов