А андройдик мой всё-таки кудесники восстановили за 2.5к. Пока работает без нареканий. Как будто и не тонул вовсе.
Avatar

elmortem

Vcard Download vCard   what is this?
Rss_icon

Recent Activity


Filter by:
All
  • Karma Team: Начало 2011

    Состав

    • elmortem — программирование
    • Тинка — графика и анимация
    • grouzdev — геймдизайн

    Игры

    1. Pixel White — экспериментальная игра имени Татьяны Белой, тогда ещё живой
    2. Black Thing — чёрно-белый платформер. Приз за самую креативную игру на FlashGAMM
    3. Magic Miner — игра за 2 дня в рамках конференции HackDay (художник Squorax)
    4. Last Robot — простенький лаунчер для Newgrounds Robot Day 2011
    5. Georganism — платформер с механикой соединения персонажей с разными способностями
    6. High Flying Kite — необычная змейка
    7. Gravistation 2 — продолжение гравитационного пазл-платформера (художник Nex)
    8. Wizland Arena — Арена-шутер с элементами РПГ (не продали)
    9. Sbowbowl — новогодний лаунчер с элементами боулинга

    Портал

    • Ввели понятие уровней и опыта за игровые сессии, оценки и комментарии
    • Ввели характеристики персонажа, которые можно прокачивать при получении уровня
    • Сделали API для ачивментов, за ачивки тоже начисляется опыт
    • Сделали публикацию игры не только с Mochi Media, но и с Newgrounds и ArmorGames
    • Денег не приносит, только удовольствие
  • Кока-Кола из под крана 4 декабря
    Подарок жителям Вопонежа ко дню выборов.
    From: elmortem
    Views: 1
    1 ratings
    Time: 00:21 More in News & Politics
  • elmortem's demon cam
    Развлекаюсь...
    From: elmortem
    Views: 0
    0 ratings
    Time: 00:05 More in Comedy
  • Framework: GameConfig Прочитал статью flashgameblogs.ru/blog/actionscript/751.html и решил показать свой конфиг.

    Цель данного класса — вынести основные игровые переменные во внешний файл для удобного балансирования игры геймдизайнером и последующая интеграция финального конфига в игру.

    Вот так выглядит файл конфига:
    <config>
    	<player>
    		<spells type="array">
    			<item>
    				<type type="string">fireball</type>
    				<power type="int">80</power>
    				<delay type="number">1.2</delay>
    			</item>
    			<item>
    				<type type="string">airwave</type>
    				<power type="int">50</power>
    				<delay type="number">0.7</delay>
    			</item>
    		</spells>
    	</player>
    	<enemies type="array">
    		<item>
    			<name type="string">Sharick</name>
    			<type type="string">Dog</type>
    			<agressive type="number">0.6</agressive>
    			<health type="int">100</health>
    		</item>
    		<item>
    			<name type="string">Murka</name>
    			<type type="string">Cat</type>
    			<agressive type="number">0.4</agressive>
    			<health type="int">60</health>
    		</item>
    	</enemies>
    </config>

    Вложенность может быть любой.

    GameConfig

    elmortem.game.config.GameConfig
    package elmortem.game.config {
    	import elmortem.loaders.DataLoader;
    	import flash.events.Event;
    	import flash.events.EventDispatcher;
    	import flash.events.IOErrorEvent;
    	/**
    	 * ...
    	 * @author elmortem
    	 */
    	public class GameConfig extends EventDispatcher {
    		static public const EVENT_ERROR:String = "GameConfig.Error";
    		static public const EVENT_LOADED:String = "GameConfig.Loaded";
    		
    		public var data:Object;
    		public var loaded:Boolean;
    		
    		public function GameConfig() {
    			data = { };
    			loaded = false;
    		}
    		public function loadFromUrl(url:String):void {
    			DataLoader.loadData(url, null, onLoad, null, onError);
    		}
    		private function onLoad(e:Event):void {
    			loadFromString(e.target.data);
    		}
    		private function onError(e:IOErrorEvent):void {
    			trace(e);
    			dispatchEvent(new Event(EVENT_ERROR));
    		}
    		
    		public function loadFromString(str:String):void {
    			var xml:XML;
    			try {
    				xml = new XML(str);
    			} catch (err:Error) {
    				dispatchEvent(new Event(EVENT_ERROR));
    				trace(err.message);
    				trace(str);
    				return;
    			}
    			
    			data = parse(xml);
    			loaded = true;
    			
    			dispatchEvent(new Event(EVENT_LOADED));
    		}
    		
    		private function parse(xml:XML):Object {
    			//trace(xml);
    			var i:int;
    			var c:XMLList;
    			var type:String = String(xml.@type);
    			
    			if(type == "" || type == "object" || type == "obj" || type == "o") {
    				c = xml.child("*");
    				var obj:Object = { };
    				for (i = 0; i < c.length(); i++) {
    					obj[c[i].localName()] = parse(c[i]);
    				}
    				return obj;
    			} else if(type == "array" || type == "arr" || type == "a") {
    				c = xml.child("*");
    				var arr:Array = [];
    				for (i = 0; i < c.length(); i++) {
    					arr.push(parse(c[i]));
    				}
    				return arr;
    			} else if (type == "string" || type == "str" || type == "s") {
    				c = xml.child("*");
    				if(c == null) {
    					return String(xml);
    				} else {
    					var s:String = "";
    					for (i = 0; i < c.length(); i++) {
    						s += String(c[i]);
    					}
    					return s;
    				}
    			} else if (type == "int" || type == "i") {
    				return int(xml);
    			} else if (type == "number" || type == "num" || type == "n") {
    				return Number(xml);
    			} else if (type == "boolean" || type == "bool") {
    				return toBool(String(xml));
    			}
    			return null;
    		}
    		
    		static public function toBool(d:*):Boolean {
    			if (d is String && d == "true") return true;
    			if (d is int && d == 1) return true;
    			return false;
    		}
    	}
    }


    Использование класса в игре. Создаём объект класса и подписываемся на событие GameConfig.EVENT_LOADED, чтобы знать, когда уже можно создавать игру.
    config = new GameConfig();
    config.addEventListener(GameConfig.EVENT_LOADED, onStartGame);


    В период разработки игры используется код загрузки конфига из внешнего файла:
    config.loadFromUrl("config.xml");


    Когда игра уже готова, мы передаём в конфиг непосредственно текст конфига:
    config.loadFromString("<config>...</config>");


    В функции onStartGame уже можно обращаться к данным из конфига.
    private function onStartGame(e:Event):void {
    	trace(config.data.player.spells[0].power);
    }


    P.S. Идея с динамическим классом (из вышеупомянутой статьи) мне нравится, так что скорее всего переделаю свой конфиг так же, чтобы убрать лишнее звено «data» и обращаться напрямую к конфигу.
  • Медик и барабан
    Медик отжигает под ОСТ из Наруто.
    From: elmortem
    Views: 0
    0 ratings
    Time: 02:44 More in Comedy
  • Naruto (Курск) Naruto (Курск)

    subj

    Location: Воронеж
    Date: Aug 23, 2007
    Number of Photos in Album: 4

    View Album

  • Харука Харука

    Харука, няяя! ^_^

    Date: Aug 23, 2007
    Number of Photos in Album: 17

    View Album

  • Новый Год 2008 Новый Год 2008

    Где-то недалеко от Белгорода...

    Location: Белгород
    Date: May 10, 2008
    Number of Photos in Album: 12

    View Album

  • Липецк-Бухопати 2009 Липецк-Бухопати 2009

    Location: Липецк
    Date: Feb 5, 2009
    Number of Photos in Album: 1

    View Album

  • Higan Party Higan Party

    Higan Party в Липецке

    Location: Липецк, клуб "Ночной квартал"
    Date: Mar 20, 2010
    Number of Photos in Album: 22

    View Album

Next page