воскресенье, 29 августа 2010 г.

3D Модель робота

Начал делать графику к будущему проекту, первые наработки уже есть.
Набросок:
 Рендеры текущей модели:

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

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

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

Небольшое обновление:

среда, 25 августа 2010 г.

Первая версия движка под Linux

Первое приложение из уроков удачно собрано в Linux-е. Как и предполагалось, практически никаких изменений для запуска движка на этой системе не потребовалось :)
Для этого используется новый shell-модуль  - SDLShell, который после некоторой доработки будет добавлен в общий архив движка, так же как и скомпилированная библиотека, которая будет работать в Linux-е.

Обновление:
Готова новая сборка движка, выложена там где и раньше - GameDev

пятница, 13 августа 2010 г.

Четвёртая статья по игровому движку

Добавил новую статью по игровому движку: Система событий движка
В ней рассказывается, как использовать систему действий для построения логики игры. Плюс добавлен новый урок под номером девять.

Так же обновился сам движок, добавлен новый функционал, объект текста приведён по своей структуре ближе к другим графическим объектам. Но самое главное - разделён код движка и библиотек-оболочек, теперь можно использовать только тот тип рендера из движка, который нужен в приложении.

Что не вошло в эту сборку: сделаны первые шаги для реализации устройства на базе SDL, фактически осталось сделать только преобразование событий из одной системы в другую, и будет готов порт под Linux системы и очень близок порт под MacOS. Плюс некоторые изменения в коде, связанные с восстановлением DirectX устройства.

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

пятница, 30 июля 2010 г.

Третья статья по игровому движку "Система событий движка"

Добавлена третья статья о движке K5Engine: Система событий движка
В ней описывается событийная система: очередь событий и структура событий. Так же добавлен урок к статье.

Далее в планах статья о системе действий и работа с кодом. 
Планируется в первую очередь привести код TText в общий вид с другими графическими объектами и сделать инструментальный класс для определения типа монитора.
Уже позже - реализация оболочки для Linux.

вторник, 20 июля 2010 г.

Вторая статья по игровому движку: "Графическая система движка"

Готова вторая статья по движку:
Графическая система движка

На будущее планируется создание технической дорожной карты и статьи о системе событий движка.

среда, 14 июля 2010 г.

Первая статья по игровому движку

Написал и выложил первую статью про игровой движок: "введение в K5Engine"
В статье рассказывается о структуре ядра движка и приводится пример простейшего приложения.

понедельник, 12 июля 2010 г.

Публикация игрового движка.

Вот и настал этот день, который мы приближали как могли :)

Выдалась неделька свободного времени и пришла пора выводить в свет свой игровой движок.
Он предназначен для написания 2Д игр и называется K5Engine. Идея его архитектуры растёт ещё с курсовой работы 4-го курса. Долгое время движок разрабатывался в свободное время после работы, примерно с год уже применяется в реальных коммерческих проектах, но вот только сейчас нашлось время что бы начать его публиковать.
Информация о его развитии будет появляться в блоге, но основная площадка будет сайт нашей команды и раздел на сайте Gamedev.ru - K5Engine

четверг, 17 июня 2010 г.

Открытое письмо А. Кужель по поводу недостатков проекта налогового кодекса

Уважаемая Александра Владимировна,
Спасибо за Ваше беспокойство о проблемах рядовых предпринимателей. Хотим обратить ваше внимание, на то что законопроект нового Налогового Кодекса, который должен вступить в силу с 1 января 2011 г. представляет потенциальную угрозу для украинского рынка информационных технологий и смежных отраслей.
Проект Налогового кодекса (в редакции, доступной по адресу http://gska2.rada.gov.ua/pls/zweb_n/webproc4_1?id=&pf3511=37984) содержит в себе ряд пунктов, фактически делающих невозможной предпринимательскую деятельность самозанятых специалистов в области информатизации, производителей программного обеспечения и консультантов в области ИТ. Специфика деятельности этих специалистов такова, что они часто оказывают услуги зарубежным клиентам с использованием сети Интернет, что с позиций нынешнего законодательства квалифицируется как внешнеэкономическая деятельность (ВЭД).
Однако, проект Налогового кодекса может "загубить" возможность нашего государства закрепить успехи в отрасли информационных технологий. Пункт 2.2 статьи 2 главы 1 раздела XiV проекта Кодекса содержит прямой запрет на ведение внешнеэкономической деятельности на условиях упрощенной системы налогообложения:
"2.2)Спрощена система оподаткування не поширюється на:
...
2.2.1) суб’єктів господарювання (юридичних осіб та фізичних осіб – підприємців), які здійснюють:
к) оптову та роздрібну торгівлю через мережу Інтернет;
м) діяльність у сфері інформатизації;
о) зовнішньоекономічну діяльність;
2.2.2) фізичних осіб – підприємців, які здійснюють:
ґ) діяльність у сфері інжинірингу, геології та геодезії;"
Таким образом, деятельность в области информатизации и продажу продуктов и услуг в сфере информационных технологий через сеть Интернет с 1 января можно будет вести только на общей системе налогообложения. Самозанятый специалист в области информатизации как правило не может квалифицированно осуществлять бухгалтерскую и юридическую поддержку своего бизнеса в объеме, необходимом для ведения учета с исполнением всех требований общей системы налогообложения, особенно с использованием ВЭД. Предполагаемые изменения вносят существенные и необоснованные препятствия для субьектов предпринимательской деятельности.
Принятие нового НК в текущей редакции неминуемо приведет к следующим негативным последствиям:
* Отток высококвалифицированных кадров в другие страны - новый виток "утечки мозгов"
* Тенизация IT-рынка Украины
* Уход капитала на более дешевые рынки информационных услуг (Россия, Беларусь, Индия, Китай, Румыния и т. д.)
* Уменьшение валютных поступлений в страну
* Стагнация и деградация информационных технологий в Украине
* Дальнейшее ухудшение международного имиджа Украины как страны, стремящейся законсервировать отсталость технологий и экономического уклада.
Чтобы не допустить этого, мы, инициативная группа самозанятых специалистов в области информатизации, предлагаем убрать из проекта Налогового кодекса запрет на ведение деятельности в области информатизации и внешнеэкономической деятельности на упрощенной системе налогобложения, или заменить формулировку на такую, которая позволяет заниматься ВЭД, связанной с производством, продажей и экспортом продуктов информационных технологий и услуг в этой области. Более конкретно:
* В пункте 2.2.1 статьи 2 главы 1 раздела XiV
* Удалить подпункт "м) діяльність у сфері інформатизації;";
* Заменить "к) оптову та роздрібну торгівлю через мережу Інтернет;" на "к) оптову та роздрібну торгівлю через мережу Інтернет, окрiм продажу товарiв та послуг у сферi iнформатизації;", или на на "к) оптову та роздрібну торгівлю фiзичними товарами через мережу Інтернет" или удалить этот подпункт;
* Заменить "о) зовнішньоекономічну діяльність;" на "о) зовнішньоекономічну діяльність, окрiм зовнішньоекономічної діяльністi у сферi iнформатизації", или удалить этот подпункт;
* В пункте 2.2.2 статьи 2 главы 1 раздела XiV
* Заменить "ґ) діяльність у сфері інжинірингу, геології та геодезії;" на "ґ) діяльність у сфері геології та геодезії;".

Пояснительная записка



О роли самозанятых специалистов в экономике

Деятельность самозанятых специалистов:
* Не требует расхода природных или иных невосполнимых ресурсов Украины
* Приносит в страну валюту, положительно влияя на платежный баланс Украины
* Создает положительный образ Украины как страны с отличными IT специалистами, а не страны с Чернобылем и газовой трубой.
* Неявным образом обеспечивает оборот средств внутри страны, стимулируя производство, строительство и т. д., поскольку деньги не уходят за рубеж.
* Позволяет выпускникам технических ВУЗов получить первую работу и работать согласно специальности.
* Обеспечивает потенциальную возможность создания новых рабочих мест, т. к. зарубежный заказчик желает не только найти здесь одного качественного специалиста для найма, но и в перспективе иметь полноценных партнеров для расширения сферы деятельности. К примеру, создание одного лишь веб-сайта для какой-либо компании США в дальнейшем может перенести весь процесс разработки программных продуктов этой компании в Украину, а это означает несколько десятков обеспеченных работой специалистов.
Таким образом, подобная деятельность является очень полезной для экономики и нуждается в поддержке со стороны государства, которая может выражаться просто в создании благоприятных условий для деятельности, как это происходит в большинстве стран которые обладают достаточным уровнем потенциала работников в области информационных технологий, как-то Индия и Китай. Так, для сравнения - В 2007 году доходы Китая в отрасли программного обеспечения и информационных услуг составили около 83 млрд долларов; были подписаны соглашения об экспорте компьютерных программ на сумму 2 млрд долларов США (прирост на 65 процентов). При этом зачастую американские заказчики предпочитают сотрудничество со специалистами из стран бывшего СССР, потому что их уровень подготовки выше, чем у китайцев и индусов; также наших специалистов ценят за способности решать сложные проблемы.

О месте Украины в глобальном рынке информационных технологий

Современная мировая экономика, как известно, с конца прошлого века находится в процессе перехода от индустриального уклада к постиндустриальному (информационному). Мир становится еще более глобальным, взаимозависимым, связанным между собой при помощи Интернета, и в нем все большую роль начинают играть не только новые отрасли экономики, но и новые формы занятости и бизнеса. С каждым годом увеличивается количество бизнесов, которые не просто продают через Интернет то, что раньше продавали бы традиционными способами — но и получают принципиально новые возможности. Помимо создания новых компаний - "стартапов", все больше специалистов открывают для себя возможность работать не с одним работодателем, физически ограничиваясь рамками офиса/города/региона, но и сотрудничать с множеством заказчиков, находящихся в разных частях света, оказывая им услуги через Интернет и через него же получая за них оплату. С развитием Интернета, компьютерных и других технологий ассортимент разновидностей такой деятельности все возрастает; на независимое сотрудничество (фриланс) переходят даже представители традиционно консервативных профессий — бухгалтера, юристы и др. Помимо индивидуальных форм деятельности, новое разделение труда предусматривает и передачу функций целых отделов корпораций на внешний подряд — аутсорсинг. Аутсорсинговая компания, к примеру, центр технической поддержки корпорации Майкрософт, может размещаться в любой точке Земли — там, где корпорация найдет наиболее подходящие человеческие ресурсы, политическую стабильность и благоприятный налоговый климат. Это может быть Индия, Ирландия, Китай, Египет, Россия... или Украина.
Очевидно, что развитие информационной сферы на этом не закончится, и в ближайшее десятилетие еще больше фирм будут продавать свои товары и услуги через Сеть, еще больше использовать труд разбросанных по всему миру фрилансеров и аутсорсинговых центров, еще больше жителей планеты получат возможность сотрудничать с заказчиками, где бы они ни находились, создавать Интернет-магазины и другие полезные сервисы, открывать у себя на родине аутсорсинговые и другие ИТ-компании, приносящие в страну валюту и создающие высококвалифицированные рабочие места. Все вместе это предоставит новые возможности и для банкинга, других финансовых услуг, обеспечит дальнейший устойчивый рост мировой экономики, повысит ее эффективность, снизит ресурсозависимость, в значительной мере выровняет дисбалансы в уровне жизни, что уже произошло в первом десятилетии 21 века благодаря первой волне информатизации. Украина в значительной мере использовала возможности этой волны, но кризис показал, что для дальнейшего использования преимуществ информатизации перед страной встают серьезные вызовы. Одним из главных барьеров для успешного развития украинской экономики в глобализирующемся мире является сложность открытия и ведения бизнеса - как для украинских предпринимателей, так и для инвесторов.
Что же предпринимается новой украинской властью для улучшения бизнес-климата, в частности в сфере налогообложения (по сложности которой мы который год занимаем позорные 181-182 места из 183), в отношении таких стратегических для наступающего будущего отраслей, как ИТ, и таких перспективных ее направлений, как Интернет-коммерция, фриланс, аутсорсинг, коммерческая разработка ПО и прочая деятельность, связанная с информатизацией? Учитывают ли авторы НК не только текущее состояние вещей, но и перспективы?
На мировом и отечественном рынке программных продуктов - большая конкуренция. Именно упрощенная система налогобложения - а точнее, один "кумулятивный" платеж в бюджет и простая квартальная отчетность - является ключевым фактором, обеспечивающим возможность ведения предпринимательской деятельности в этих областях специалистами-одиночками. Переход на общую систему налогообложения для самозанятого специалиста означает совершенно недопустимые затраты времени и сил на подготовку фискальной отчетности и общение с государственными органами и фондами. Необходимо рассмотреть существующую практику Индии и Китая по отношению к бизнесу связанному с информационными технологиями. У нашей страны и наших специалистов есть все возможности, чтобы вывести нашу страну в лидеры мирового рынка по информационным технологиям. Конечно, сложно конкурировать с Китаем, но Румынию мы точно смогли бы опередить.
В перспективе необходимо:
* Законодательно определить нормативное поле в сфере предпринимательской деятельности по предоставлению информационных услуг, разработки ПО и электронной коммерции
* Разработать согласованную, простую и прозрачную процедуру налогообложения и контроля предпринимательской и независимой профессиональной деятельности в сфере ИТ, учитывающую особенности этих видов деятельности, их перспективы и значение для страны, и предотвращающую при этом злоупотребления, характерные для старой упрощенной системы.


 
 
Письмо создавалось силами www.developers.org.ua, мною же взято  отсюда

воскресенье, 16 мая 2010 г.

Пара интересных статей.

Сегодня наткнулся на сайте developers.org.ua на две интересные статьи:
первая часть:
Алексей Скрыпник: руководство в стиле джаз
вторая часть:
Алексей Скрыпник: Украина не конкурирует с Чехией, Украина конкурирует с Египтом

Очень интересно подана информация, человек рассказывает о своей компании, о принципах работы, делится личным опытом.
Статьи очень познавательные и интересные. Советую ознакомиться.

среда, 28 апреля 2010 г.

Boost thread и исключения

Небольшая заметка по поводу потоков буста и генерации исключений в них.

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

пятница, 26 марта 2010 г.

Скрипт копирования директории с фильтром файлов

Не так давно игровой движок, надо которым я работаю уже длительное время, был собран в статическую библиотеку. Возникла вот такая проблема: очень неудобно руками выбирать заголовочные файлы из папок проекта в отдельный include каталог библиотеки.
Соответственно появилась идея написать скрипт для автоматизации данного процесса. А так как уже давно интересуюсь скриптовым языком Python, то захотелось опробовать его на этой задаче.
По сути задача простая, и её можно решить множеством способов. Она сводится к обходу всех подкаталогов в заданном родительном и копирование указанного типа файлов и подкаталогов в указанное место.
В Python-не за работу с файлами и папками отвечает модуль os, с чтения документации по его возможностям я и начал. Но хотелось свести писанину к минимуму, и я решил ознакомиться с руководством более подробно. Через некоторое время была найдена функция с очень интересным названием:
copytree(src, dst[, symlinks=False[, ignore=None]])

которая находится в модуле shutil.
По ней сразу понятно, что она умеет копировать дерево каталогов а так же видно, что можно задавать игнорируемые файлы. Далее даётся подсказка, что файлы фильтруются при помощи функции:
ignore_patterns(*patterns)

Полностью конструкция, которая у меня получилась, выглядит так:
from_dir = "..\\..\\K5Engine"
to_dir = "..\\include"
shutil.copytree(from_dir, to_dir ,ignore = shutil.ignore_patterns("*.cpp",".svn"))

Осталась только одна проблема, если директория include уже создана, она не будет переписана. Опять поход в документацию для поиска функции удаления каталога.
Собственно вот она:
rmtree(path[, ignore_errors[, onerror]])

Далее весь полученный код собирается в один скрипт, который и решает поставленную задачу:
import os
import shutil

if __name__ == '__main__':
    from_dir = "..\\..\\K5Engine"
    to_dir = "..\\include"

    if os.path.isdir(to_dir):
        shutil.rmtree(to_dir)

    shutil.copytree(from_dir,to_dir ,ignore=shutil.ignore_patterns("*.cpp",".svn"))

На этом всё.

вторник, 23 февраля 2010 г.

Класс-геренатор исключаний

Уже не малое время я программирую на С++, было пересмотрено масса кода, разнообразных библиотек и фреймворков. Соответственно пришлось повидать много вариантов реализации системы обработки ошибок: классическое возвращение кода ошибки, генерация разнообразных типов исключений, кидание исключения как строковый класс и так далее. Так же в процессе работы над своим проектом я искал наиболее удобный для себя способ генерации и обработки ошибок. Первоначально опробовал генерацию кода, оказалось несколько неудобно, далее использовал генерацию исключений. Как то, в очередной раз копаясь в stl обратил внимание на систему классов-исключений, которая в нём применялась, это и натолкнуло меня на идею, реализацией которой я уже не один год пользуюсь.
В stl используются классы-исключения, в которых находится текстовая строка с сообщением об ошибке. От базового класса наследуются специализированные классы, например: ошибка времени выполнения или ошибочный параметр.
Собственно система из stl мне не подошла, стиль кода отличается от того, что используется в движке. Был создан собственный класс исключение:
class TBaseException
{
protected:
wstring Mess;
public:
TBaseException() throw ();
TBaseException(const wstring &NewMess) throw ();
virtual ~TBaseException() throw ();

wstring GetMess() const;
};
Всё достаточно просто.
Далее, в процессе использования неудобно постоянно писать конструкции типа:
if(Name != L"Domochewsky"){
throw TBaseException(L"какое то сообщение, описывающее причину ошибки");
}
Запись не лаконичная, особенно если надо проверить большое количество значений, и был придуман и реализован класс-генератор исключений:
class TExceptionGenerator
{
protected:
wstring MessPrefix;
public:
TExceptionGenerator();
TExceptionGenerator(const wstring &Prifix);
virtual ~TExceptionGenerator();

void operator() (const TBaseException &Ex) const;
void Run (const TBaseException &Ex) const;

void operator() (const wstring &Mess,const bool &SetPref=true) const;
void Run (const wstring &Mess,const bool &SetPref=true) const;

void operator() ( const bool &Check,const wstring &Mess,
const bool &SetPref=true) const;

void Run ( const bool &Check,const wstring &Mess,
const bool &SetPref=true) const;

void SetPrefix(const wstring &Val);
};

Суть его работы достаточно проста, так как любое логическое условие (A>B, Pointer==NULL и так далее) возвращает true или false, то у класса были сделаны методы, которые кидают сообщение, если условие ложное. Вышло некоторое подобие asset-а.
Далее префикс используется для записи места возникновения ошибки, например это тип класса, который использует генератор. Так же для тех случаев, когда условие каким то образом не выполняется, была сделана возможность просто кинуть исключение.
Примеры использования:
1.
HINSTANCE Instance = GetModuleHandle(NULL);
Exception(Instance!=NULL,L"in CreateWinWindow() cant't get Instance");
2.
Exception(ElemEventActions!=NULL,L"in InitQueue(...) ElemEventActions is NULL");
3.
Exception(L"in ToCreateAction(...) Action is NULL");

Удобно использовать для разнообразных проверок параметров, удобно генерировать сообщение при использовании функций, которые генерируют в качестве своего результата код ошибки, да и вообще, удобно пользоваться. Пока более удобной конструкции я не нашёл.