<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-6459969669665828376</atom:id><lastBuildDate>Wed, 30 Apr 2025 00:16:03 +0000</lastBuildDate><category>c++</category><category>lua</category><category>luabind</category><category>boost</category><category>unit testing</category><category>windows</category><category>3d</category><category>3dsmax</category><category>HGE</category><category>autotools</category><category>background</category><category>bash</category><category>bat</category><category>begin</category><category>binutils</category><category>blender</category><category>bloom</category><category>bool</category><category>class</category><category>cppunit</category><category>cri</category><category>dtf.ru</category><category>end</category><category>flash</category><category>function</category><category>functor</category><category>gamedev</category><category>is_valid</category><category>iterator</category><category>linux</category><category>luabind::object</category><category>modeller</category><category>scene</category><category>shell</category><category>sokoban</category><category>startup</category><category>stl</category><category>subversion</category><category>unicode</category><category>utf8</category><category>кри</category><category>локализация</category><category>моделлер</category><category>рунет</category><category>сокобан</category><category>художник</category><title>Young Game Developer</title><description>Блог начинающего программиста коммерческих игровых проектов.</description><link>http://younggamedeveloper.blogspot.com/</link><managingEditor>noreply@blogger.com (Unknown)</managingEditor><generator>Blogger</generator><openSearch:totalResults>25</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6459969669665828376.post-367991910164033141</guid><pubDate>Sun, 13 Jul 2008 11:29:00 +0000</pubDate><atom:updated>2008-07-13T16:32:16.177+05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">startup</category><title>Классное видео про стартапы</title><description>Не удержался и опубликовал, чтобы сохранить ссылку на видео :)&lt;br /&gt;&lt;br /&gt;&lt;object width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/I6IQ_FOCE6I&quot;&gt;&lt;param name=&quot;wmode&quot; value=&quot;transparent&quot;&gt;&lt;embed src=&quot;http://www.youtube.com/v/I6IQ_FOCE6I&quot; type=&quot;application/x-shockwave-flash&quot; wmode=&quot;transparent&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;PS видео старое возможно уже вы это видели ;-)</description><link>http://younggamedeveloper.blogspot.com/2008/07/blog-post_13.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6459969669665828376.post-4829160115990515830</guid><pubDate>Sat, 12 Jul 2008 08:49:00 +0000</pubDate><atom:updated>2008-07-12T13:53:32.787+05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">unit testing</category><title>Что такое автоматизированные тесты</title><description>Последнее время меня часто спрашивают для чего нужны автоматизированные тесты в проекте, сегодня увидел на &lt;noindex&gt;&lt;a href=&quot;http://habrahabr.ru/blog/development/46370.html#habracut&quot; rel=&quot;nofollow&quot;&gt;хабре&lt;/a&gt;&lt;/noindex&gt; не плохую заметку на эту тему.</description><link>http://younggamedeveloper.blogspot.com/2008/07/blog-post.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6459969669665828376.post-1115754267580943224</guid><pubDate>Fri, 20 Jun 2008 19:19:00 +0000</pubDate><atom:updated>2008-06-21T00:27:48.846+05:00</atom:updated><title>Игры, написанные на JavaScript</title><description>Это тема уже не раз проскакивала на просторах интернета, но я только сегодня увидел, что есть умельцы, которые делают игры с помощью совсем не пригодных для этого вещей (это все равно, что пытаться вырыть котлован под высотку с помощью детского совочка).&lt;br /&gt;&lt;br /&gt;Оказывается, если приложить некоторые усилия и кучу свободного времени, то можно написать игру на JavaScript, которая будет прекрасно работать в браузере.&lt;br /&gt;&lt;br /&gt;&lt;noindex&gt;&lt;a href=&quot;http://www.nihilogic.dk/labs/javascript-games/&quot; rel=&quot;nofollow&quot;&gt;На сайте&lt;/a&gt;&lt;/noindex&gt; выложены игры:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Mario&lt;/li&gt;&lt;li&gt;Wolfenstein 3D&lt;/li&gt;&lt;li&gt;Super MarioCart&lt;/li&gt;&lt;li&gt;3D Chess&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;PS игры не очень дружат с IE и Opera, но прекрасно работают в мозиле или firefox&#39;e.</description><link>http://younggamedeveloper.blogspot.com/2008/06/javascript.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6459969669665828376.post-7403847083913475325</guid><pubDate>Thu, 29 May 2008 17:58:00 +0000</pubDate><atom:updated>2008-05-29T23:02:30.746+05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">flash</category><title>Опыт создания коммерческой игры на коленках</title><description>&lt;noindex&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://keep4u.ru/full/080529/2d098c29ae8bf2565c/jpg&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://keep4u.ru/imgs/s/080529/2d/2d098c29ae8bf2565c.jpg&quot; style=&quot;border: 1px solid rgb(0, 0, 0);&quot; /&gt;&lt;/a&gt;&lt;/noindex&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Наткнул на замечательный &lt;noindex&gt;&lt;a href=&quot;http://www.johnny-k.ru&quot; rel=&quot;nofollow&quot;&gt;блог&lt;/a&gt;&lt;/noindex&gt; одного человека, который смог за 4 дня создать успешную коммерческую flash игру, не имея никаких серьезных навыков в этом деле!&lt;br /&gt;&lt;br /&gt;&lt;noindex&gt;&lt;a href=&quot;http://www.johnny-k.ru/2008/05/05/kak-ya-delal-svoyu-pervuyu-igru/&quot; rel=&quot;nofollow&quot;&gt;Тут&lt;/a&gt;&lt;/noindex&gt; выложена книга (так это называет автор, но больше похоже на большую статью), в которой автор рассказывает, как начать зарабатывать с продажи flash игр.</description><link>http://younggamedeveloper.blogspot.com/2008/05/blog-post.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>7</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6459969669665828376.post-621234533338779113</guid><pubDate>Sun, 18 May 2008 08:51:00 +0000</pubDate><atom:updated>2008-05-18T14:05:31.886+05:00</atom:updated><title>Ubuntu gamedev :)</title><description>Сегодня искал в гугле о collision detection и наткнулся на wiki-сайт: &lt;noindex&gt;&lt;a href=&quot;http://ubuntu-gamedev.wikispaces.com/&quot; rel=&quot;nofollow&quot;&gt;Ubuntu gamedev&lt;/a&gt;&lt;/noindex&gt; Видимо можно ожидать появления сайтов различных тематик под каждый отдельный дистрибутив? :)</description><link>http://younggamedeveloper.blogspot.com/2008/05/ubuntu-gamedev.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6459969669665828376.post-1383827299357525657</guid><pubDate>Wed, 30 Apr 2008 14:36:00 +0000</pubDate><atom:updated>2008-04-30T19:40:27.802+05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">bat</category><category domain="http://www.blogger.com/atom/ns#">shell</category><category domain="http://www.blogger.com/atom/ns#">sokoban</category><category domain="http://www.blogger.com/atom/ns#">windows</category><category domain="http://www.blogger.com/atom/ns#">сокобан</category><title>Сокобан, написанный в bat.</title><description>Оказывается с помощью bat файлов можно написать простую логическую игру:&lt;br /&gt;&lt;br /&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://keep4u.ru/full/080430/477738ce5032a65086/jpg&quot;&gt;&lt;img src=&quot;http://keep4u.ru/imgs/s/080430/47/477738ce5032a65086.jpg&quot; style=&quot;border: 1px solid rgb(0, 0, 0);&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Или даже такое:&lt;br /&gt;&lt;br /&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://keep4u.ru/full/080430/9276f793315dcbea30/jpg&quot;&gt;&lt;img src=&quot;http://keep4u.ru/imgs/s/080430/92/9276f793315dcbea30.jpg&quot; style=&quot;border: 1px solid rgb(0, 0, 0);&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.dtf.ru/blog/read.php?id=50980&quot;&gt;Подробности&lt;/a&gt;</description><link>http://younggamedeveloper.blogspot.com/2008/04/bat.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6459969669665828376.post-2949990837353971503</guid><pubDate>Sun, 27 Apr 2008 16:50:00 +0000</pubDate><atom:updated>2008-04-27T21:57:53.600+05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">3d</category><category domain="http://www.blogger.com/atom/ns#">3dsmax</category><category domain="http://www.blogger.com/atom/ns#">background</category><category domain="http://www.blogger.com/atom/ns#">blender</category><category domain="http://www.blogger.com/atom/ns#">scene</category><title>Как создаются background&#39;ы</title><description>Сегодня в интернете попалось несколько картинок, которые очень меня удивили. Я узнал как создаются простые, но в тоже время очень красочные background&#39;ы. Для этого можно применить найденные модели в интернете и фототекстуры.&lt;br /&gt;&lt;br /&gt;Текстурированная сцена:&lt;br /&gt;&lt;br /&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://keep4u.ru/full/080427/3d403dab78dfa5af0f/jpg&quot;&gt;&lt;img src=&quot;http://keep4u.ru/imgs/s/080427/3d/3d403dab78dfa5af0f.jpg&quot; style=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;И нетекстурированная:&lt;br /&gt;&lt;br /&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://keep4u.ru/full/080427/295db8a656d2f0a0ee/jpg&quot;&gt;&lt;img src=&quot;http://keep4u.ru/imgs/s/080427/29/295db8a656d2f0a0ee.jpg&quot; style=&quot;border: 1px solid rgb(0, 0, 0);&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;И еще одна сцена:&lt;br /&gt;&lt;br /&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://keep4u.ru/full/080427/e01c2a8c312faf06c3/jpg&quot;&gt;&lt;img src=&quot;http://keep4u.ru/imgs/s/080427/e0/e01c2a8c312faf06c3.jpg&quot; style=&#39;border: 1px solid #000000&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://keep4u.ru/full/080427/ed57676605bf009715/jpg&quot;&gt;&lt;img src=&quot;http://keep4u.ru/imgs/s/080427/ed/ed57676605bf009715.jpg&quot; style=&#39;border: 1px solid #000000&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Думаю любой человек сможет создать нечто подобное :)</description><link>http://younggamedeveloper.blogspot.com/2008/04/background.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6459969669665828376.post-1644578149074301655</guid><pubDate>Sat, 19 Apr 2008 14:43:00 +0000</pubDate><atom:updated>2008-04-19T19:54:35.075+05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cri</category><category domain="http://www.blogger.com/atom/ns#">dtf.ru</category><category domain="http://www.blogger.com/atom/ns#">unicode</category><category domain="http://www.blogger.com/atom/ns#">utf8</category><category domain="http://www.blogger.com/atom/ns#">кри</category><category domain="http://www.blogger.com/atom/ns#">локализация</category><title>Поддержка нескольких языков приложением</title><description>При разработке коммерческих приложений рано или поздно придется столкнуться с проблемой локализации. Как правило, если сразу этот вопрос не был рассмотрен, то появляется множество проблем при попытке перевести свой программный продукт на другие языкы. Большниство новичков даже не знают, что из себя представляет Unicode и как с ним работать. На dtf.ru недавно появилась небольшая статья, которая показывает в каком направлении надо двигаться.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Мы живем в таком замечательном мире, в котором игра, сделанная в одной стране, легко может продаваться в другой. Впрочем, не всегда так &quot;легко&quot;, как хотелось бы. Потому что кроме географического барьера вашей игре придется преодолеть барьер языковой.&lt;br /&gt;&lt;br /&gt;На Земле насчитывается более 5000 языков. А финальный вариант стандарта ISO 639-3 (трехбуквенные языковые коды), учитывающий даже диалекты мертвых языков, содержит целых 7589 записей.&lt;br /&gt;Очевидно, что языковое разнообразие вашей игры будет описываться значительно более скромными цифрами; не менее очевиден ваш интерес в том, чтобы какое-то разнообразие было. Однако никто не любит долго заниматься локализацией, поэтому ее неизбежность должна заставлять задуматься над правильной организацией процесса.&lt;br /&gt;&lt;br /&gt;По моим подсчетам, на тему локализации на различных КРИ было прочитано 5 докладов, что указывает на определенный интерес коллег к этой теме. Особое внимание заслуживает доклад &quot;Бумеранг, написание локализуемой игры&quot;, сделанный в 2003 году Юрием Блажевичем и Василием Подобедом. Доклад содержит в себе ряд правил, следование которым поможет быстро достичь счастья всем участникам процесса локализации. Полное содержание доклада вы можете получить с сайта КРИ, я же позволю себе уточнить и раскрыть некоторые аспекты.&lt;br /&gt;&lt;br /&gt;Мы, как и многие другие разработчики, когда-то столкнулись с необходимостью локализации своих игр. В этой статье я опишу, как мы реализовали перевод одного из игровых ресурсов - текстовых данных, и предложу наш инструмент для упрощения и улучшения такого перевода.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: right;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Олег Смирнов&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style=&quot;text-align: right;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href=&quot;http://dtf.ru/articles/read.php?id=50790&quot;&gt;Продолжение...&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;</description><link>http://younggamedeveloper.blogspot.com/2008/04/blog-post_19.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6459969669665828376.post-1988745230995486962</guid><pubDate>Sat, 19 Apr 2008 06:07:00 +0000</pubDate><atom:updated>2008-04-19T11:08:10.362+05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">begin</category><category domain="http://www.blogger.com/atom/ns#">c++</category><category domain="http://www.blogger.com/atom/ns#">end</category><category domain="http://www.blogger.com/atom/ns#">functor</category><category domain="http://www.blogger.com/atom/ns#">iterator</category><category domain="http://www.blogger.com/atom/ns#">lua</category><category domain="http://www.blogger.com/atom/ns#">luabind</category><title>Object Iterators</title><description>Методы &lt;span style=&quot;font-weight:bold;&quot;&gt;end()&lt;/span&gt; и &lt;span style=&quot;font-weight:bold;&quot;&gt;begin()&lt;/span&gt; возвращают &lt;span style=&quot;font-weight:bold;&quot;&gt;luabind::iterator&lt;/span&gt;, который можно использовать для перебора всех элементов в таблице &lt;span style=&quot;font-weight:bold;&quot;&gt;luabind::object&lt;/span&gt;. Так же есть другой тип итератора — &lt;span style=&quot;font-weight:bold;&quot;&gt;luabind::functor&lt;/span&gt;, который позволяет перебрать все функции в таблице (более подробно можно прочитать в документации к luabind).</description><link>http://younggamedeveloper.blogspot.com/2008/04/object-iterators.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6459969669665828376.post-6218375129456095724</guid><pubDate>Sat, 19 Apr 2008 06:00:00 +0000</pubDate><atom:updated>2008-04-19T11:03:20.569+05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">bool</category><category domain="http://www.blogger.com/atom/ns#">c++</category><category domain="http://www.blogger.com/atom/ns#">is_valid</category><category domain="http://www.blogger.com/atom/ns#">lua</category><category domain="http://www.blogger.com/atom/ns#">luabind</category><title>Метод is_valid и оператор bool</title><description>Метод &lt;span style=&quot;font-weight:bold;&quot;&gt;is_valid&lt;/span&gt; и оператор bool позволяют проверить является ли полученный &lt;span style=&quot;font-weight:bold;&quot;&gt;luabind::object&lt;/span&gt; рабочим:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;//получаем глобальную табилцу lua объекту luabind::object&lt;br /&gt;luabind::object MyObject = get_globals(pLua);&lt;br /&gt;&lt;br /&gt;//проверяем действителен ли объект&lt;br /&gt;if (MyObject.is_valid())&lt;br /&gt;{&lt;br /&gt;    DoSomething(MyObject[key]);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Так же возможен такой вариант:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;if (MyObject)&lt;br /&gt;{&lt;br /&gt;    DoSomething(MyObject[key]);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;&lt;br /&gt;is_valid&lt;/span&gt; действителен, когда был использован конструктор по-умолчанию и не было присвоено значение.</description><link>http://younggamedeveloper.blogspot.com/2008/04/isvalid-bool.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6459969669665828376.post-3580817434725582085</guid><pubDate>Thu, 17 Apr 2008 08:30:00 +0000</pubDate><atom:updated>2008-04-17T13:42:53.882+05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">c++</category><category domain="http://www.blogger.com/atom/ns#">lua</category><category domain="http://www.blogger.com/atom/ns#">luabind</category><category domain="http://www.blogger.com/atom/ns#">luabind::object</category><title>Команды at() и [] для luabind::object</title><description>Как только lua тип назначен для &lt;span style=&quot;font-weight:bold;&quot;&gt;luabind::object&lt;/span&gt; вы можете использовать оператор &lt;span style=&quot;font-weight:bold;&quot;&gt;[]&lt;/span&gt; или методм &lt;span style=&quot;font-weight:bold;&quot;&gt;at()&lt;/span&gt; для доступа к данным. &lt;span style=&quot;font-weight:bold;&quot;&gt;at()&lt;/span&gt; обеспечивает read-only доступ, а &lt;span style=&quot;font-weight:bold;&quot;&gt;[]&lt;/span&gt; - read-write доступ. Параметр, передаваемый в &lt;span style=&quot;font-weight:bold;&quot;&gt;[]&lt;/span&gt; или &lt;span style=&quot;font-weight:bold;&quot;&gt;at()&lt;/span&gt;, должен быть lua типом доступным в глобальном пространстве имен (помните, что все переменные lua объявлены в глобальной области видимости, если явно не указано ключевое слово &lt;span style=&quot;font-weight:bold;&quot;&gt;local&lt;/span&gt; перед первым объявлением переменной в скрипте lua). Для преобразования типа &lt;span style=&quot;font-weight:bold;&quot;&gt;luabind::object&lt;/span&gt; в C++ тип необходимо использовать &lt;span style=&quot;font-weight:bold;&quot;&gt;luabind::object_cast&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Например давайте объявим такие переменные в lua скрипте:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;Mat = 37&lt;br /&gt;Sharon = 15&lt;br /&gt;Scooter = 1.5&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Теперь мы должны связать &lt;span style=&quot;font-weight:bold;&quot;&gt;luabind::object&lt;/span&gt; с глобальной таблицей lua. Для этого необходимо использовать функцию &lt;span style=&quot;font-weight:bold;&quot;&gt;get_globals&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;luabind::object global_table = get_globals(pLua);&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;После этого можно получить доступ до объявленных переменных:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;float scooter = luabind::object_cast&amp;lt;float&amp;gt;(global_table.at(&quot;Scooter&quot;));&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Или поменять значение переменных:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;global_table[&quot;Mat&quot;] = 10;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Одной из важных особенностей &lt;span style=&quot;font-weight:bold;&quot;&gt;luabind::object&lt;/span&gt; является возможность вызывать функции, определенные в lua. Вы можете даже включать &lt;span style=&quot;font-weight:bold;&quot;&gt;luabind::object&lt;/span&gt; в поля класса C++, позволяя расширить функциональные возможности класса. В следующих статьях я покажу, как это сделать.</description><link>http://younggamedeveloper.blogspot.com/2008/04/at-luabindobject.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6459969669665828376.post-537434806650162352</guid><pubDate>Thu, 17 Apr 2008 08:17:00 +0000</pubDate><atom:updated>2008-04-17T13:23:09.609+05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">c++</category><category domain="http://www.blogger.com/atom/ns#">lua</category><category domain="http://www.blogger.com/atom/ns#">luabind</category><title>luabind::object</title><description>Чтобы упростить привязку lua типов к вашим C++ функция и объектам, luabind содержит класс object. Этот класс может представлять любой тип lua. Интерфейс класса object скопирован с документации luabind:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;class object&lt;br /&gt;{&lt;br /&gt;public:&lt;br /&gt;  class iterator;&lt;br /&gt;  class raw_iterator;&lt;br /&gt;  class array_iterator;&lt;br /&gt;&lt;br /&gt;  template&amp;lt;class T&amp;gt;&lt;br /&gt;  object(lua_State*, const T&amp; value);&lt;br /&gt;  object(const object&amp;);&lt;br /&gt;  object(lua_State*);&lt;br /&gt;  object();&lt;br /&gt;&lt;br /&gt;  -object();&lt;br /&gt;&lt;br /&gt;  iterator begin() const;&lt;br /&gt;  iterator end() const;&lt;br /&gt;  raw_iterator raw_begin() const;&lt;br /&gt;  raw_iterator raw_end() const;&lt;br /&gt;  array_iterator abegin() const;&lt;br /&gt;  array_iterator aend() const;&lt;br /&gt;&lt;br /&gt;  void set();&lt;br /&gt;  lua_State* lua_state() const;&lt;br /&gt;  void pushvalue() const;&lt;br /&gt;  bool is_valid() const;&lt;br /&gt;  operator bool() const;&lt;br /&gt;&lt;br /&gt;  template&amp;lt;class Key&amp;gt;&lt;br /&gt;  &amp;lt;implementation-defined&amp;gt; operator[](const Key&amp;);&lt;br /&gt;&lt;br /&gt;  template&amp;lt;class Key&amp;gt;&lt;br /&gt;  object at(const Key&amp;) const;&lt;br /&gt;&lt;br /&gt;  template&amp;lt;class Key&amp;gt;&lt;br /&gt;  object raw_at(const Key&amp;) const;&lt;br /&gt;&lt;br /&gt;  template&amp;lt;class T&amp;gt;&lt;br /&gt;  object&amp; operator=(const T&amp;);&lt;br /&gt;  object&amp; operator=(const object&amp;);&lt;br /&gt;&lt;br /&gt;  template&amp;lt;class T&amp;gt;&lt;br /&gt;  bool operator==(const T&amp;) const;&lt;br /&gt;  bool operator==(const object&amp;) const;&lt;br /&gt;  bool operator&lt;(const object&amp;) const;&lt;br /&gt;  bool operator&lt;=(const object&amp;) const;&lt;br /&gt;  bool operator&gt;(const object&amp;) const;&lt;br /&gt;  bool operator&gt;=(const object&amp;) const;&lt;br /&gt;  bool operator!=(const object&amp;) const;&lt;br /&gt;&lt;br /&gt;  void swap(object&amp;);&lt;br /&gt;  int type() const;&lt;br /&gt;&lt;br /&gt;  &amp;lt;implementation-defined&amp;gt; operator()();&lt;br /&gt;&lt;br /&gt;  template&amp;lt;class A0&amp;gt;&lt;br /&gt;  &amp;lt;implementation-defined&amp;gt; operator()(const A0&amp; a0);&lt;br /&gt;&lt;br /&gt;  template&amp;lt;class A0, class A1&amp;gt;&lt;br /&gt;  &amp;lt;implementation-defined&amp;gt; operator()(const A0&amp; a0, const A1&amp; a1);&lt;br /&gt;&lt;br /&gt;  /* ... */&lt;br /&gt;};&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;</description><link>http://younggamedeveloper.blogspot.com/2008/04/luabindobject.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6459969669665828376.post-6027335612711797912</guid><pubDate>Wed, 16 Apr 2008 11:21:00 +0000</pubDate><atom:updated>2008-04-16T16:44:35.631+05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">c++</category><category domain="http://www.blogger.com/atom/ns#">class</category><category domain="http://www.blogger.com/atom/ns#">lua</category><category domain="http://www.blogger.com/atom/ns#">luabind</category><title>Создание классов в lua</title><description>Так же возможно определять классы в ваших lua скриптах с использованием luabind, а затем экспортировать их в C++ программы. Давайте создадим класс Animal на lua:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;class &#39;Animal&#39;&lt;br /&gt;&lt;br /&gt;function Animal:__init(num_legs, noise_made)&lt;br /&gt;&lt;br /&gt;  self.NoiseMade = noise_made&lt;br /&gt;  self.NumLegs = num_legs&lt;br /&gt;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;function Animal:Speak()&lt;br /&gt;&lt;br /&gt;  print(self.NoiseMade)&lt;br /&gt;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;function Animal:GetNumLegs()&lt;br /&gt;&lt;br /&gt;  return self.NumLegs&lt;br /&gt;&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Ключевое слово &lt;span style=&quot;font-weight:bold;&quot;&gt;self&lt;/span&gt; работает точно так же, как и в &lt;span style=&quot;font-weight:bold;&quot;&gt;this&lt;/span&gt; в C++, которое возвращает указатель класса на себя. Созданный класс Animal теперь можно использовать в нашем скрипте:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;cat = Animal(4, &amp;quot;meow&amp;quot;)&lt;br /&gt;&lt;br /&gt;cat:Speak()&lt;br /&gt;&lt;br /&gt;print (&amp;quot;У кота &amp;quot;..cat:GetNumLegs()..&amp;quot; ноги&amp;quot;)&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;После выполнения скрипт выведет на экран:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;meow&lt;br /&gt;У кота 4 ноги&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Так же можно использовать наследование для классов:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;class &#39;Pet&#39; (Animal)&lt;br /&gt;&lt;br /&gt;function Pet:__init(name, num_legs, noise_made) super(num_legs, noise_made)&lt;br /&gt;  self.Name = name&lt;br /&gt;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;function Pet:GetName()&lt;br /&gt;&lt;br /&gt;  return self.Name&lt;br /&gt;&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Ключевое слово &lt;span style=&quot;font-weight:bold;&quot;&gt;super&lt;/span&gt; используется для вызова конструктора базового класса перед инициализацией класса-наследника. Пример использования класса Pet:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;dog = Pet(&amp;quot;Albert&amp;quot;, 4, &amp;quot;woof&amp;quot;)&lt;br /&gt;&lt;br /&gt;dog:Speak()&lt;br /&gt;&lt;br /&gt;print (&amp;quot;Мою собаку зовут &amp;quot;..dog:GetName())&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;После выполнения скрипт выведет на экран:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;woof&lt;br /&gt;Мою собаку зовут Albert&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;</description><link>http://younggamedeveloper.blogspot.com/2008/04/lua_16.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6459969669665828376.post-3189648211633129545</guid><pubDate>Tue, 15 Apr 2008 18:29:00 +0000</pubDate><atom:updated>2008-04-16T00:02:56.597+05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">c++</category><category domain="http://www.blogger.com/atom/ns#">lua</category><category domain="http://www.blogger.com/atom/ns#">luabind</category><title>Экспортирование C++ классов в luabind</title><description>Привязка классов C++ к lua не на много сложнее, чем функции. Она реализована с помощью шаблона class_ и метода def, который регистриует конструкторы, методы, переменные и деструкторы. class_::def возвращает this указатель на редактируемую цепочку. &lt;br /&gt;&lt;br /&gt;Класс животного:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;class Animal&lt;br /&gt;{&lt;br /&gt;private:&lt;br /&gt;&lt;br /&gt;  int         m_iNumLegs;&lt;br /&gt;&lt;br /&gt;  std::string m_NoiseEmitted;&lt;br /&gt;&lt;br /&gt;public:&lt;br /&gt;&lt;br /&gt;  Animal(std::string NoiseEmitted,&lt;br /&gt;         int         NumLegs):m_iNumLegs(NumLegs),&lt;br /&gt;                              m_NoiseEmitted(NoiseEmitted)&lt;br /&gt;  {}&lt;br /&gt;&lt;br /&gt;  virtual ~Animal(){}&lt;br /&gt;&lt;br /&gt;  virtual void Speak()const&lt;br /&gt;  {std::cout &lt;&lt; &quot;\n[C++]: &quot; &lt;&lt; m_NoiseEmitted &lt;&lt; std::endl;}&lt;br /&gt;&lt;br /&gt;  int          NumLegs()const{return m_iNumLegs;}&lt;br /&gt;};&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;экспорт класса с помощью luabind:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;module(pLua)&lt;br /&gt;[&lt;br /&gt;  class_&amp;lt;Animal&amp;gt;(&quot;Animal&quot;)&lt;br /&gt;    .def(constructor&amp;lt;string, int&amp;gt;())&lt;br /&gt;    .def(&quot;Speak&quot;, &amp;Animal::Speak)&lt;br /&gt;    .def(&quot;NumLegs&quot;, &amp;Animal::NumLegs)&lt;br /&gt;];&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Теперь можно применять этот класс в lua скрипте:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;--создание объекта животное и вызов его методов&lt;br /&gt;&lt;br /&gt;cat = Animal(&quot;Мяу&quot;, 4);&lt;br /&gt;&lt;br /&gt;print (&quot;\n[Lua]: У кота &quot;..cat:NumLegs().. &quot; ног.&quot;);&lt;br /&gt;&lt;br /&gt;cat:Speak();&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Заметьте, что в скрипте используется оператор &lt;span style=&quot;font-weight:bold;&quot;&gt;:&lt;/span&gt; для вызовов методов. Другой путь вызова метода: &lt;span style=&quot;font-weight:bold;&quot;&gt;cat.Speak(cat)&lt;/span&gt;. Методы можно вызывать любым из указанных способов. Классы в lua представлены в виде таблиц, каждый элемент таблицы представляет собой метод или переменную класса.&lt;br /&gt;&lt;br /&gt;Классы-наследники тоже легко экспортировать с помощью luabind. Пример класса, полученного от класса Animal:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;class Pet : public Animal&lt;br /&gt;{&lt;br /&gt;private:&lt;br /&gt;&lt;br /&gt;  std::string m_Name;&lt;br /&gt;&lt;br /&gt;public:&lt;br /&gt;&lt;br /&gt;  Pet(std::string name,&lt;br /&gt;      std::string noise,&lt;br /&gt;      int         NumLegs):Animal(noise, NumLegs),&lt;br /&gt;                           m_Name(name)&lt;br /&gt;  {}&lt;br /&gt;&lt;br /&gt;  std::string GetName()const{return m_Name;}&lt;br /&gt;};&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Используя luabind, класс Pet легко привязывать к lua. Это делается с помощью параметра шаблона bases&amp;lt;base class&gt;, который определяет родительский класс:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;module(pLua)&lt;br /&gt;[&lt;br /&gt;  class_&amp;lt;Pet, bases&amp;lt;Animal&amp;gt; &amp;gt;(&quot;Pet&quot;)&lt;br /&gt;      .def(constructor&amp;lt;string, string, int&amp;gt;())&lt;br /&gt;      .def(&quot;GetName&quot;, &amp;Pet::GetName)&lt;br /&gt;];&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Если ваш класс был создан при помощи множественного наследования, то каждый родительский класс должен быть прописан в bases&amp;lt;&amp;gt; и разделен запятыми:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;class_&amp;lt;Derived, bases&amp;lt;Base1, Base2, Base3&amp;gt; &amp;gt;(&quot;Derived&quot;)&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;</description><link>http://younggamedeveloper.blogspot.com/2008/04/c-lua.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6459969669665828376.post-8490415457179469128</guid><pubDate>Tue, 15 Apr 2008 15:03:00 +0000</pubDate><atom:updated>2008-04-15T20:40:34.096+05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">c++</category><category domain="http://www.blogger.com/atom/ns#">function</category><category domain="http://www.blogger.com/atom/ns#">lua</category><category domain="http://www.blogger.com/atom/ns#">luabind</category><title>Экспортирование C/C++ функций в luabind</title><description>Чтобы привязать C/C++ функцию к lua используйте luabind::def фунцию. Например, давайте создадим простые функции: сложения двух чисел и вывода сообщения Hello World и привяжем их к lua:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;using namespace std;&lt;br /&gt;using namespace luabind;&lt;br /&gt;&lt;br /&gt;void HelloWorld()&lt;br /&gt;{&lt;br /&gt;  cout &lt;&lt; &quot;\n[C++]: Hello World!&quot; &lt;&lt; endl;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int add(int a, int b)&lt;br /&gt;{&lt;br /&gt;  return a+b;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;module(pL)&lt;br /&gt;[&lt;br /&gt;  def(&quot;HelloWorld&quot;, &amp;HelloWorld),&lt;br /&gt;  def(&quot;add&quot;, &amp;add)&lt;br /&gt;];&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Теперь в скриптах lua можно вызывать эти функции:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;print(&quot;[lua]: Вызов функции C++ HelloWorld()&quot;)&lt;br /&gt;&lt;br /&gt;HelloWorld()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;print(&quot;\n[lua]: Вызов функции C++ add()&quot;)&lt;br /&gt;&lt;br /&gt;a=10&lt;br /&gt;b=5&lt;br /&gt;&lt;br /&gt;print (&quot;\n[lua]: &quot;..a..&quot; + &quot;..b..&quot; = &quot;..add(a, b))&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;После выполнения скрипта получим:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;[lua]: [lua]: Вызов функции C++ HelloWorld()&lt;br /&gt;[C++]: HelloWorld!&lt;br /&gt;[lua]: [lua]: Вызов функции C++ add()&lt;br /&gt;[lua]: 10+5=15&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Если у вас есть перегруженные функции, например:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;int MyFunc(int a);&lt;br /&gt;void MyFunc(double a);&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;то def будет иметь следующий вид:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;module(pLua)&lt;br /&gt;[&lt;br /&gt;  def(&quot;MyFunc&quot;, (int (*)(int)) &amp;MyFunc),&lt;br /&gt;  def(&quot;MyFunc&quot;, (void (*)(double)) &amp;MyFunc),&lt;br /&gt;];&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;</description><link>http://younggamedeveloper.blogspot.com/2008/04/cc-luabind.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6459969669665828376.post-3387685746889860102</guid><pubDate>Sun, 13 Apr 2008 19:36:00 +0000</pubDate><atom:updated>2008-04-14T00:39:38.066+05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">bloom</category><category domain="http://www.blogger.com/atom/ns#">HGE</category><title>Интересный блог о разработке казульного проекта Bloom 2</title><description>&lt;p&gt;Под вечер нашел еще очень неплохие блоги автора elmortem. В &lt;a href=&quot;http://bloom-2.blogspot.com/&quot;&gt;своем новом блоге&lt;/a&gt; он рассказывает о создании проекта Bloom 2 (я играл в bloom, игра сделана очень качественно для первой казулки, надеюсь новая часть будет еще лучше предыдущей). Так же на его &lt;a href=&quot;http://elmortem.mirgames.ru/?path=hgeue&quot;&gt;другом блоге&lt;/a&gt; можно найти кучу полезных расширений для HGE, особенно полезна разработка HGE с с полной поддержкой Unicode (сам когда-то хотел сделать такое, но потом решил работать с дефолтными возможностями по локализации).&lt;/p&gt;</description><link>http://younggamedeveloper.blogspot.com/2008/04/bloom-2.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6459969669665828376.post-6852223892024618511</guid><pubDate>Sun, 13 Apr 2008 14:46:00 +0000</pubDate><atom:updated>2008-04-15T20:44:40.338+05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">c++</category><category domain="http://www.blogger.com/atom/ns#">lua</category><category domain="http://www.blogger.com/atom/ns#">luabind</category><title>Экспорт С++ классов и функций с помощью luabind (общая информация)</title><description>Экспорт функций в lua очень прост даже без библиотеки luabind, но классы - это совсем другое дело! Чтобы экспортировать простой класс и его методы из lua в c++, вам придется создать lua-таблицу, которая будет содержать как данные класса, так и методы, которые вам потребуются. Вам придется создать метатаблицу, которая будет определять, как ваш класс ведет себя с операторами == или *. Чтобы экспортировать lua-функцию в c-функцию требуется много времени и сил, а чтобы сделать тоже самое с классом придется потратить гораздо больше ресурсов. К счастью за нас уже сделали тяжелую работу и создали API, который позволяет экспортировать функции и классы без каких-либо трудностей. Этот API называется luabind, и точно так же как и lua является open-source решением, которое можно легко использовать для своей работы.&lt;br /&gt;&lt;br /&gt;Luabind - это библиотека, которая позволяет соединять данные между lua и C ++. Это реализовано благодаря использованию мета-программирования. Вы можете можете создавать классы в lua и использовать их в своих c++ программах, а также наоборот.&lt;br /&gt;&lt;br /&gt;Чтобы начать использовать luabind, нужно включить заголовочные файлы библиотеки и lua в ваш проект, и затем вызывать функцию luabind::open(lua_State*) для инициализации luabind:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;extern &quot;C&quot;&lt;br /&gt;{&lt;br /&gt;   #include &quot;lua.h&quot;&lt;br /&gt;   #include &quot;lualib.h&quot;&lt;br /&gt;   #include &quot;lauxlib.h&quot;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#include &quot;luabind/luabind.hpp&quot;&lt;br /&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;    //создание lua state&lt;br /&gt;    lua_State* pLua = lua_open();&lt;br /&gt;&lt;br /&gt;    //инициализация luabind&lt;br /&gt;    luabind::open(pLua);&lt;br /&gt;&lt;br /&gt;    /* регистрация функций и классов в luabind */&lt;br /&gt;&lt;br /&gt;    /* загрузка и выполение скриптов */&lt;br /&gt;&lt;br /&gt;    // освобождение ресурсов&lt;br /&gt;    lua_close(pLua);&lt;br /&gt;&lt;br /&gt;    return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Для добавление своей функции нужно зарегистрировать ее в окружении luabind, для этого используется luabind::module(pL):&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;luabind::module(pL)&lt;br /&gt;[&lt;br /&gt;    // регистрация классов и функций&lt;br /&gt;];&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Этот вызов регистрирует вашу функцию или класс в глобальном пространстве имен. Чтобы указать какое-то другое пространство имен сделайте:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;luabind::module(pL, &quot;MyNamespace&quot;)&lt;br /&gt;[&lt;br /&gt;    // регистрация классов и функций&lt;br /&gt;];&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Luabind представляет пространство имен, как таблицу. В данном примере, все функции и классы будут находится в таблице с именем MyNameSpace.&lt;/luabind&gt;&lt;/luabind&gt;&lt;/lauxlib.h&gt;&lt;/lualib.h&gt;&lt;/lua.h&gt;</description><link>http://younggamedeveloper.blogspot.com/2008/04/luabind_13.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6459969669665828376.post-5806992693108812337</guid><pubDate>Sun, 13 Apr 2008 11:06:00 +0000</pubDate><atom:updated>2008-04-13T16:14:00.826+05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">boost</category><category domain="http://www.blogger.com/atom/ns#">c++</category><category domain="http://www.blogger.com/atom/ns#">lua</category><category domain="http://www.blogger.com/atom/ns#">luabind</category><title>Изучение luabind.</title><description>Сегодня решил начать изучение различных библиотек для связывания lua и c++. Начну рассмотрение с luabind.&lt;br /&gt;&lt;br /&gt;Документацию на русском языке можно прочесть &lt;a href=&quot;http://bental.by.ru/luabind/docs.html&quot;&gt;здесь&lt;/a&gt; (по-умолчанию выставляется неправильная кодировка, выберите в настройках браузера UTF8, чтобы убрать кракозяблы).&lt;br /&gt;&lt;br /&gt;Для того, чтобы начать работать с luabind, её необходимо скачать с &lt;a href=&quot;http://www.rasterbar.com/products/luabind.html&quot;&gt;офцициального сайта&lt;/a&gt;. Так же для работы потребуется библиотека &lt;a href=&quot;http://www.boost.org/&quot;&gt;boost&lt;/a&gt;.&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;</description><link>http://younggamedeveloper.blogspot.com/2008/04/luabind.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6459969669665828376.post-7832570292979802808</guid><pubDate>Sat, 12 Apr 2008 06:16:00 +0000</pubDate><atom:updated>2008-04-12T11:19:42.727+05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">boost</category><category domain="http://www.blogger.com/atom/ns#">c++</category><category domain="http://www.blogger.com/atom/ns#">stl</category><title>Небольшая заметка об отличном блоге с советами по C++</title><description>Сегодня с утра решил пройтись по ссылкам известных IT блогеров и мне попался этот блог&lt;br /&gt;&lt;a href=&quot;http://dvinogradov.blogspot.com/&quot;&gt;Raider&#39;s Programming Blog&lt;/a&gt;. Ничего подобного до этого я еще не находил, т.к. в нем очень много интересных заметок по применению C++ в практике. Очень рекомендую посетить тем новичкам кому нравится программирование на C++ и хочет узнать для себя что-то новое (хотя многие из советов автора применимы для boost и stl, что может вызывать некоторые трудности в понимании). Там рассказаны о том, что вы можете узнать сами, проработав много времени с языком, либо набив кучу шишек при разработке.</description><link>http://younggamedeveloper.blogspot.com/2008/04/c.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6459969669665828376.post-8558484106848419627</guid><pubDate>Fri, 11 Apr 2008 19:06:00 +0000</pubDate><atom:updated>2008-04-12T00:08:12.514+05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">gamedev</category><category domain="http://www.blogger.com/atom/ns#">modeller</category><category domain="http://www.blogger.com/atom/ns#">моделлер</category><category domain="http://www.blogger.com/atom/ns#">художник</category><title>Как найти моделлера и художника в свой проекта.</title><description>Перед программистами, которые занимаются разработкой игрового проекта в одиночку (да и у начинающей команды тоже), рано или поздно встает вопрос о том, где найти и как заинтересовать своим проектом художника или моделлера.&lt;br /&gt;&lt;br /&gt;Самый очевидный способ предложить оплату за выполнение работы, но как правило такой возможности нет (были бы деньги, то такой вопрос и не возникал). Поэтому начинают давать обещания, что как только начнутся продажи, то обязательно вы поделитесь с ними процентом от выручки. Сейчас на такие предложения соглашаются такие же начинающие, которые вам не дадут контента нужного качества. Большая часть людей, которые способны сделать  качественную графику обычно не заинтересуются таким переложением.&lt;br /&gt;&lt;br /&gt;Большая часть ищет себе партнеров только на ресурсах, посвященных gamedev&#39;у, что является роковой ошибкой в большинстве случаев, т.к. преобладающая доля посетителей таких ресурсов являются такими же программистами, как и они сами. Поэтому лучше сразу  забыть про такие ресурсы и начать поиск художников/моделлеров на тех ресурсах, где они водятся в больших количествах, например, render.ru. Там уже проще найти человека, который заинтересуется вашей разработкой и будет готов работать за просто так :)&lt;br /&gt;&lt;br /&gt;Основным требованием является обязательное, как можно более детальное, описание проекта, еще лучше будет, если вы выложите рабочую версию своей игры, в которой работают хотя бы некоторые заявленные возможности (не забывайте, что криво и постоянно падающая демка будет вызывать только отвращение, поэтому приведите ее в рабочий вид прежде, чем показывать).&lt;br /&gt;&lt;br /&gt;При поиске самым важным является сам игровой проект, который и будет является для вашего нового партнера по проекту гарантией того, что он не потратит впустую свое время.&lt;br /&gt;&lt;br /&gt;Еще один важный шаг — это говорить всем о своем проекте, т.е. можете детально не вдаваться в подробности, а кратко говорить что занимаетесь тем-то и тем-то. Я раньше думал, что среди друзей нет никого кто умеет рисовать, но оказалось все с точностью до наоборот. Благодаря этому шагу я нашел через друга замечательного 3D моделлера, который сейчас работает со мною (на моем опыте есть еще один такой пример, поэтому можно сказать, что такой способ имеет все шансы на жизнь).&lt;br /&gt;&lt;br /&gt;Все что я написал в этой заметке понимает каждый, т.к. эти истины просты и понятны, но почему-то на том же геймдев.ру куча людей совершают одни и те же ошибки.</description><link>http://younggamedeveloper.blogspot.com/2008/04/blog-post_12.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6459969669665828376.post-9186905182124974668</guid><pubDate>Wed, 09 Apr 2008 05:53:00 +0000</pubDate><atom:updated>2008-04-13T20:02:57.760+05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">autotools</category><category domain="http://www.blogger.com/atom/ns#">bash</category><category domain="http://www.blogger.com/atom/ns#">binutils</category><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">subversion</category><category domain="http://www.blogger.com/atom/ns#">windows</category><title>О linux</title><description>Все свои игровые проекты я писал только под платформу &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_0&quot;&gt;Windows&lt;/span&gt;. Но за рабочим местом у меня стоит два компьютера. Из любопытства несколько месяцев назад поставил на один из них &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_1&quot;&gt;Linux&lt;/span&gt; — &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_2&quot;&gt;OpenSuse&lt;/span&gt; 10.3. И в первую же очередь начал искать, как там можно начать программировать.&lt;br /&gt;&lt;br /&gt;В начале было очень не удобно и не привычно работать в командной строке, если раньше мог собрать свой проект простым нажатием на одну кнопку, то теперь приходилось вводить команды на сборку в консоль (тогда еще не знал о &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_3&quot;&gt;bash&lt;/span&gt;, &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_4&quot;&gt;binutils&lt;/span&gt; и &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_5&quot;&gt;autotools&lt;/span&gt;, что здорово тормозило мою работу). До этого часто встречал в интернете такие фразы как: «&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_6&quot;&gt;Linux&lt;/span&gt; создан программистом и для программистов» или «Удобнее всего программировать в &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_7&quot;&gt;linux&lt;/span&gt;». В начале думал, что люди, писавшие это как минимум не нормальные, которые никогда не видели удобной &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_8&quot;&gt;Visual&lt;/span&gt; &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_9&quot;&gt;Studio&lt;/span&gt;. Но постепенно сам втянулся в написание кода в этой новой для меня системе. Оказалось, что ничего удобнее консоли нет (теперь недолюбливаю мышь, т.к. приходится постоянно отрывать руки от клавиатуры, расходуя на это драгоценное время :)). Первое время не мог привыкнуть к использованию консольных текстовых редакторов, зато сейчас начинаю немного нервничать, работая в &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_10&quot;&gt;gedit&lt;/span&gt; или блокноте &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_11&quot;&gt;windows&lt;/span&gt;, т.к. у меня уходит кучу времени на совершение лишних движения мышкой, в то время как в консольном редакторе я эти же действия выполняю в 2-3 раза быстрее.&lt;br /&gt;&lt;br /&gt;Сейчас пишу часть кода, который не зависит от платформы на &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_12&quot;&gt;linux&lt;/span&gt;,а потом провожу его интеграцию в проект. Многие скажут, что это не рационально, но я вижу в этому несколько положительных для себя вещей:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;я буду иметь опыт программирования под другой платформой и расширю свой кругозор.&lt;/li&gt;&lt;li&gt;имею очень удобный &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_13&quot;&gt;toolset&lt;/span&gt; для программирования (если отстраниться от «&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_14&quot;&gt;windows&lt;/span&gt; привычек», то понимаешь насколько все продумано и удобно сделано).&lt;/li&gt;&lt;li&gt;и самое главное то, что я получаю от этого удовольствие, а это в работе очень много стоит :)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Есть и недостатки. Это то что, что у меня уходит чуть больше времени на разработку из-за постоянных перебросов кода с одного рабочего места на другое. Хотя &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_15&quot;&gt;subversion&lt;/span&gt; помогает частично решить эту проблему.</description><link>http://younggamedeveloper.blogspot.com/2008/04/linux.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6459969669665828376.post-2151436799019356973</guid><pubDate>Mon, 07 Apr 2008 21:03:00 +0000</pubDate><atom:updated>2008-04-08T09:48:30.959+05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">lua</category><category domain="http://www.blogger.com/atom/ns#">рунет</category><title>lua в рунете</title><description>Сегодня попытался найти форумы, сайты и статьи в рунете, освещающие использование lua. Но ничего путного не попалось. Похоже всё еще не набралась критическая масса людей, которые хотели бы делится между собой идеями по использованию этого скриптового языка.&lt;br /&gt;&lt;br /&gt;Вот что мне удалось найти:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.blogger.com/www.lua.ru&quot;&gt;www.lua.ru&lt;/a&gt; – одним из достоинств данного сайта является наличие переведенной документации для последних версий lua, но это и все что нашлось на данном ресурсе. Так же есть полупустой форум.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.gamedev.ru/articles/?id=70112&quot;&gt;http://www.gamedev.ru/articles/?id=70112&lt;/a&gt; – статья, которую уже кто только не копировал. В ней приводятся базовые понятия по работе с lua.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.ibm.com/developerworks/ru/library/l-lua/&quot;&gt;http://www.ibm.com/developerworks/ru/library/l-lua/&lt;/a&gt; - так же вводная статья в lua, которая показывает основные возможности языка, а также указывает способы его применения.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://ilovelua.narod.ru/&quot;&gt;http://ilovelua.narod.ru/&lt;/a&gt; - самое лучшее, что удалось найти в рунете, если не обращать внимания на кейворды для поисковиков в самом начале сайта на главной странице. Есть несколько статей, которые показывают применение lua в условиях простого игрового проекта.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://gamedev.ru/forum/&quot;&gt;http://gamedev.ru/forum/&lt;/a&gt; - с помощью поиска, можно найти множество тем, которые имеют прямое отношение к применению lua. В первую очередь нужно использовать этот ресурс, при возникновении вопросов.&lt;br /&gt;&lt;br /&gt;Если вы знаете еще какие-нибудь ресурсы, связанные с lua, буду благодарен, если напишите о них в комментариях.</description><link>http://younggamedeveloper.blogspot.com/2008/04/lua.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6459969669665828376.post-6931896380554749294</guid><pubDate>Sun, 06 Apr 2008 11:56:00 +0000</pubDate><atom:updated>2008-04-08T02:09:24.380+05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cppunit</category><category domain="http://www.blogger.com/atom/ns#">unit testing</category><title>Unit Testing</title><description>В течение двух дней писал к своим классами unit-тесты. В предыдущем проекте часто возникали проблемы с проверкой на работоспособность множества классов после изменения одного из них. Сейчас же 30-40% готового кода проходит автоматизированное тестирование, что надеюсь в будущем сохранит время.&lt;br/&gt;&lt;br/&gt;Для написания тестов использовал библиотеку CppUnit (скачать можно по адресу &lt;a href=&quot;http://cppunit.sourceforge.net/&quot;&gt;http://cppunit.sourceforge.net/&lt;/a&gt; ). Для других языков программирования тоже существуют подобные библиотеки (JUnit — java, DUnit — delphi, PyUnit — python и другие).</description><link>http://younggamedeveloper.blogspot.com/2008/04/unit-testing.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6459969669665828376.post-5541493302782782536</guid><pubDate>Fri, 04 Apr 2008 18:33:00 +0000</pubDate><atom:updated>2008-04-08T11:41:59.883+05:00</atom:updated><title>Описание проекта</title><description>Новый игровой проект будет похож на &lt;a href=&quot;http://www.frozen-bubble.org/&quot;&gt;Frozen Bubble&lt;/a&gt;, Bubble Odyssey, Bubble Puzzle 97 (если кто знает еще подобные игры, то напиши в комментариях их названия для их изучения). Основной целью такой игры является сбивать пушкой прилипшие друг к другу шары, которые висят под потолком. Стреляя из пушки шарами разных цветом, мы сбиваем гирлянды одноцветных висящих шаров, если они находятся рядом и их количество достигает определенного числа. Пока еще не совсем ясно какие возможности будут добавлены помимо стандартных, поэтому я буду реализовывать базовые возможности игры.&lt;br/&gt;&lt;br/&gt;Для создании игры используется c++, hge, lua. С прошлого проекта осталось много полезного кода, который будет перенесен в текущий, поэтому смогу сэкономить кучу времени, не делая заново меню, GUI и т.д.</description><link>http://younggamedeveloper.blogspot.com/2008/04/blog-post_04.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6459969669665828376.post-6001646197580937308</guid><pubDate>Thu, 03 Apr 2008 18:58:00 +0000</pubDate><atom:updated>2008-04-03T23:59:02.155+05:00</atom:updated><title>Небольшое вступление.</title><description>С началом новой игры, я решил попробовать описать процесс разработки. Почему это захотел сделать? Даже не знаю, просто хочется поделится этим с другими. :) Хочу в процессе разработки игры описывать этапы её создания.&lt;br /&gt;&lt;br /&gt;К настоящему моменту имеет несколько сделанных простых игр, которые нигде не засветились (они на столько убоги, что мало кому понравились), а также один коммерческий проект, на котором я смог заработать.&lt;br /&gt;&lt;br /&gt;Благодаря последнему коммерческому проекту у меня имеет некоторая база кода, который позволяет поставить создание простых аркад на поток. Так мне не придется создавать GUI, меню, уже заложен простой каркас для работы с профилями игроков, сохранения их настроек, локализация и еще некоторые вещи (если кому будет интересно, то могу подробнее описать уже готовые части игры, которые можно применят постоянно).&lt;br /&gt;&lt;br /&gt;Завтра опишу, что за проект планируется делать.</description><link>http://younggamedeveloper.blogspot.com/2008/04/blog-post.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item></channel></rss>