Форум программистов, компьютерный форум, киберфорум
Наши страницы
ActionScript
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
int_array
52 / 52 / 7
Регистрация: 13.10.2012
Сообщений: 180
1

WIP: разработка игры во FlashDevelop

23.06.2013, 15:00. Просмотров 2000. Ответов 10
Метки нет (Все метки)

собственно есть игра, готовая рабочая

Не по теме:

первая, можно и посмеяться


ее нужно заставить компилиться в связке FD +FlexSDK

пытался компилить в swc и тащить оттуда, но создает только экземпляры классов без символов,
через Embed не разобрался как это все делается

может там какие-то фичи есть о которых не знаю, не сплю уже вторую ночь из-за этой лажи

если кто-то сталкивался, расскажите как вы это делали, нужно очень срочно научиться

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


Не по теме:

не мог определиться в каком разделе создавать, так что переместите куда надо

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

0
Вложения
Тип файла: rar microbus 0.0.5f_fd_pre.rar (7.44 Мб, 32 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.06.2013, 15:00
Ответы с готовыми решениями:

Разработка на Haxe во FlashDevelop
Как из под flashdevelop создать приложение для android ? Что нужно установить...

WIP: змейка
Это должна получиться змейка.написал направление и присоединение обьекта к телу...

FlashDevelop Настройка
Здравствуйте, почему у меня не выводит текст при помощи Trace? может что то...

FlashDevelop и Adobe Animate
Зравствуйте, как же связать FlashDevelop и Adobe Animate ? хочю что бы я мог...

Русская локаль в Flashdevelop?
Добрый день. Вопрос не по ActionScript, но очень близко связан, а именно по...

10
TanaTiX
Модератор
2796 / 1650 / 168
Регистрация: 19.02.2011
Сообщений: 6,007
Завершенные тесты: 2
23.06.2013, 15:06 2
Смотрим
1
int_array
52 / 52 / 7
Регистрация: 13.10.2012
Сообщений: 180
23.06.2013, 15:19  [ТС] 3
а я 2 ночи не спал из-за этой проблемы, а тут все четко и ясно, еще и грамотно с точки зрения MVC
спасибо большое)
0
int_array
52 / 52 / 7
Регистрация: 13.10.2012
Сообщений: 180
28.06.2013, 01:21  [ТС] 4
сделал перенес допилил, тему можно закрывать
0
int_array
52 / 52 / 7
Регистрация: 13.10.2012
Сообщений: 180
02.07.2013, 20:48  [ТС] 5
итак, выношу на суд и критику

Microbus 0.0.6 FD.rar

если есть замечания и их много пишите все и сразу и по возможности как с этим бороться

из того что я уже услышал о своей игре, хочу уточнить несколько вопросов
1. Ни один из принципов ООП не соблюден.(с)
2.Нерасширяемая, слишком запутанная архитектура.(с) PS. как бороться, выносить все в отдельные простые функции, которые потом использовать в других функциях? еще какие идеи
3.Большая “cross reference” связанность кода.(с) PS. в чем выражается знаю, нужно меньше общаться между классами, еще советы по этому пункту если есть
4.Излишнее использование parent.(с) PS. основной мучающий меня вопрос, как обойтись без парентов вообще, и возможно ли это
5.Нет очистки памяти – неиспользование destroy при удалении уровня.(с) PS. можно просто вызывать при удалении уровня, но если есть более оптимальные способы, посоветуйте

Не по теме:

первая игра, строго не судите, проект во FlashDevelop, делаю как тестовое задание, за полезнае советы и помощь буду премного благодарен

0
TanaTiX
Модератор
2796 / 1650 / 168
Регистрация: 19.02.2011
Сообщений: 6,007
Завершенные тесты: 2
02.07.2013, 22:48 6
Пока не имею возможности в полной мере оценить проект. Появится недели через три. Если будет актуально и интересно мое мнение - стукни в личку или апни тему.
1
int_array
52 / 52 / 7
Регистрация: 13.10.2012
Сообщений: 180
02.07.2013, 23:49  [ТС] 7
процесс предстоит объемный и трудоемкий, периодически буду выкладывать результаты выполненных действий и описание проделанной работы, возможно кому-то пригодится, потому как своим головом(это не опечатка, я просто по другому не знаю как назвать ту штуку, что крепится к моей шее, после очередного письма по поводу моей "работы" и количества косяков в ней) до этого всего доходить очень трудоемко

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

Не по теме:

PS. обсуждать будем на конкретном примере, думаю для новичков будет очень полезно

2
int_array
52 / 52 / 7
Регистрация: 13.10.2012
Сообщений: 180
05.07.2013, 00:42  [ТС] 8
в общем как обстоят дела на сегодняшний день

Лирика:
Кликните здесь для просмотра всего текста

понаводив справки, пообщавшись со знакомыми девелоперами, почитав некоторую литературу я пришел к некоторым логическим выводам

Не по теме:


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



1.игра делалась ИЗНАЧАЛЬНО неправильно, не учитесь делать игры по скринкастам, квик туторам и тому подобному (разве что для себя), если вы решили всерьез заняться разработкой игр под Flash(да и не только), а тем более зарабатывать этим на жизнь, уделите достаточное время своему развитию, прочитайте хотя бы одну книгу(не бегло, а так чтобы в голове отложилось), проанализируйте нормы и практики, почитайте о паттернах и их реализации в данной среде, понятно что на грабли наступают все, но это лично мой совет дабы вы не тратили свое время в пустую, как это получилось у меня.

2.четко сформируйте структуру проекта, нарисуйте одну, две, пятьдесят схем, пока не придете к продуманному, рациональному и оптимальному варианту, будь то фреймворк для управления спутником или счетчик нажатия на кнопку (практика разработки в компаниях показывает что наличие подробного ТЗ и диздока ускоряет разработку в разы). чего я не делал и в итоге, с появлением новых требований код превратился в неудобочитаемую, запутанную кашу.

3.если все пришло к такому виду как у меня сейчас и вы не знаете что с этим всем делать (перечень недостатков пару постами выше), с чего начать, как избавляться, делаем следующее: бэкапим что есть (папочку рядом и еще делаем с нее архив на всякий случай), создаем новый проект и переносим поэтапно, начиная с точки входа и правим походу с учетом всех требований, пусть и придется переписывать 500, 1000, 10 000 строк кода, это будет возможно(процентов 10, не более) и медленнее, но более понятно для вас и будет меньше вероятность допустить ошибку

это те проблемы с которыми столкнулся я, в итоге мне придется переписывать большую часть кода, создавать с нуля объекты сцены (меню, уровень и тд.) и это при том что потрачено уже больше месяца


По теме:

класс Game был переведен в синглтон, не знаю насколько это рационально, но создается он один раз, обращаться к нему легче из любого класса игры, не нужно при этом прокидывать родителей и прочую лабуду

вот код

Кликните здесь для просмотра всего текста
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
package 
{
    import flash.display.MovieClip;
    import Menu;
    import Level;
    import EndGame;
    import MicrobusSounds;
    /**
     * 
     *difference level count
     * @author Dmitry Osipov
     */
    public class Game extends MovieClip
    {
        
        //creating variables for levels
        private var _menu:Menu;
        private var level:Level;
        private var end_game:EndGame;
        public var num_of_levels:uint = 2;
        public var current_level:uint = 1;
 
        
        //using as singletone
        private static var instance:Game;
        private static var isConstructing:Boolean = false;
        
        //constructor
        public function Game():void
        {
            //if somebody calls constructor, throw error
            if (!isConstructing) throw new Error("Singleton! Use Game.getInstance()");
            //initialize
            init();
        }
        
        //getting instance
        public static function getInstance():Game
        {
            //if there is no instance
            if (instance == null)
            {
                //create it
                isConstructing = true;
                instance = new Game();
                //init it
                instance.init();
                //set constuctor flag
                isConstructing = false;
            }
            //and return instance
            return instance;
        }
        
        //initializing
        private function init():void
        {
            //play music
            MicrobusSounds.getInstance().playMusic();
            //when init load menu
            toMenu();
        }
        
        //need to jump to menu
        public function toMenu():void
        {
            destroyer();
            //remove all childrenn 
            while (numChildren > 0) 
            {
                removeChildAt(0);
            }
            
            //and add a new menu instance
            _menu = new Menu();
            addChild(_menu);
        }
        
        //to next stage
        public function toNext():void
        {
            //destroy all
            destroyer();
            
            //if there are some levels to play
            if (current_level < num_of_levels)
            {
                //go to level
                toLevel();
                //and increase  num of levels
                increaseLevelCount();
            }else {
                //if there no levels to play go to end game
                toEndGame();
            }
        }
        //to level
        public function toLevel():void
        {
            //destroy all in game
            destroyer();
            //remove all childrenn 
            while (numChildren > 0) 
            {
                removeChildAt(0);
            }
            
            //adding a new level
            level = new Level(current_level);
            addChild(level);
        }
        //to end game screen
        public function toEndGame():void
        {
            //destroy all in game
            destroyer()
            //remove all children
            while (numChildren > 0) 
            {
                removeChildAt(0);
            }
            
            //and add a new endgame instance
            end_game = new EndGame(this);
            addChild(end_game);
        }
        
        //simple increaser
        public function increaseLevelCount():void
        {
            //if it not last
            if (current_level < num_of_levels)
            {
                //increase
                current_level++;
            }
        }
        
        //instance destroyer
        private function destroyer():void
        {
            //if not empty
            if (_menu != null)
            {
                //DESTROY!
                _menu.destroy();
                removeChild(_menu);
            }
            //if not empty
            if (level != null)
            {
                //DESTROY!
                level.destroyAll();
                removeChild(level);
            }
            //if not empty
            if (end_game != null)
            {
                //DESTROY!
                end_game.destroy();
                removeChild(end_game);
            }
        }
    }
}


пданирую еще подключить чтение настроек игры из XML, но это будет делаться когда чертежи придут к окончательному виду и будет видно куда и что ложить
1
int_array
52 / 52 / 7
Регистрация: 13.10.2012
Сообщений: 180
07.07.2013, 22:57  [ТС] 9
немного посидев и почесав кое-что в виде головы сделал:

1.прикрутил саунд менеджер, модифицировал его под геттеры-сеттеры
2.прикрутил действия к кнопкам меню, и собственно само меню
3.уровень был инициализирован только для тестов меню паузы
4.полностью переделал меню паузы, прикрутил вействия ко всем кнопкам(функционла не полный)
5.реализовал движущийся фон на уровне, будет прикручен к игроку и зависит от положения игрока
6.отдельные элементы сцены пакую в отдельные .fla файлы с целью возможной дальнейшей модификации, + пакую .swc библиотеку для подгрузки в код

сам проект:
Microbus.0.0.7_FD.rar

вопросы по коду + код в тег и под спойлер
0
TanaTiX
Модератор
2796 / 1650 / 168
Регистрация: 19.02.2011
Сообщений: 6,007
Завершенные тесты: 2
13.07.2013, 01:56 10
Вспомнил про тему. Скачал. Запустил. Игра не началась, хотя реакция на движения мыши есть. При выходе в меню эта свистопляска продолжается. Поиграть так и не получилось. Это субъективно.
Далее. Зачем загружать xml с одним значением? Хотя ладно, допустим далее их может быть больше.
По коду.
  • Почему Game - синглтон? Какой в этом смысл?
  • Почему gameconf.xml захардкожено? Вынести значение хотя бы в статику, что бы в случае чего удобней менять было.
  • Смотрю далее, одиночка не только Game. Зачем?
  • Звук в настройках по умолчанию включен. Да, это часто встречается, но это плохая практика, заставлять пользователя заставлять его каждый раз его (звук) выключать, если он ему не нужен. SharedObject решит проблему.
  • Почему звуки захардкожены в виде ссылок, да еще и в папке assets? Согласно коду использоваться и грузиться будут все одновременно и не зависимо от действий пользователя. Тогда почему так?
  • И почему они хранятся в хеше?
  • Зачем это?
    ActionScript 3
    1
    
    System.exit(0);
    Почитайте внимательно.
  • А это объекты суицидники?
  • ActionScript 3
    1
    
    Sprite(parent).removeChild(this);
    Так быть не должно. Детей убивать должны только старшие. Нет самоубийству!
  • ActionScript 3
    1
    
    addEventListener(Event.ENTER_FRAME, update);
    и далее
    ActionScript 3
    1
    2
    3
    4
    
    private function update(e:Event):void
            {
                if (stage)
                {
    Почему не подписаться при добавлении на сцену и не отписаться при удалении с нее? Зачем все это обрабатывать каждый раз?
  • Чуть ниже значения 1000 и 600. Я догадываюсь о их значении, но это должно обрабатываться или из константы, или из переменной.
  • Названия переменных часто не известно что обозначают, например, srt_bg.
0
Taras_Z
101 / 85 / 5
Регистрация: 27.10.2010
Сообщений: 534
Записей в блоге: 2
13.07.2013, 23:52 11
Посмотрел игру и появился один вопрос: Что в игре делать?
Реакция на мышку есть и это хорошо.
Плохо то, что самой игры нет)
Невозможно вернуться в игру из меню (resume не работает)
Пока код не смотрел, полностью доверяю TanaTiX-в.

Добавлено через 1 минуту

Не по теме:

TanaTiX,

Цитата Сообщение от TanaTiX Посмотреть сообщение
А это объекты суицидники?

Sprite(parent).removeChild(this);
Насмешил :D

0
13.07.2013, 23:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.07.2013, 23:52

Flashdevelop: отображение результата компиляции.
Подскажите пожалуйста все перепробовал, когда в программе flashdevelop нажимаю...

Использование fla ресурсов в FlashDevelop
Собственно проблемма: Создаю swc файл, содержащий в себе Symbols с...

Ошибка конекта к Flash дебагера в FlashDevelop
Изменив немного мейн при отладке начинает долго и нудно ити полоса конекта,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru