<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Записки</title>
	<atom:link href="http://blog.nsws.ru/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.nsws.ru</link>
	<description>Мысли о разработке</description>
	<lastBuildDate>Fri, 26 Aug 2011 07:55:13 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>glfw и VirtualBox</title>
		<link>http://blog.nsws.ru/glfw-i-virtualbox.html</link>
		<comments>http://blog.nsws.ru/glfw-i-virtualbox.html#comments</comments>
		<pubDate>Fri, 26 Aug 2011 07:55:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[OpenGL]]></category>

		<guid isPermaLink="false">http://blog.nsws.ru/?p=207</guid>
		<description><![CDATA[Давным давно образовалась у меня проблема &#8211; игры не работают в VirtualBox. Проблема не решилась даже тогда, когда в VirtualBox появилась поддержка OpenGL. Единственным решением для разработки игр было использование Mesa в режиме программной эмуляции OpenGL. Наконец то я смог разобраться в причинах этой проблемы. Как оказалось разработчики VirtualBox уже долгое время не фиксят одну [...]]]></description>
			<content:encoded><![CDATA[<p>Давным давно образовалась у меня проблема &#8211; игры не работают в VirtualBox. Проблема не решилась даже тогда, когда в VirtualBox появилась поддержка OpenGL. Единственным решением для разработки игр было использование Mesa в режиме программной эмуляции OpenGL. Наконец то я смог разобраться в причинах этой проблемы. Как оказалось разработчики VirtualBox уже долгое время не фиксят одну маленькую <a href="http://www.virtualbox.org/ticket/8329">проблему</a>. И, разумеется, glfw использует именно функцию glxGetFBConfigAttrib и не получает флага GLX_WINDOW_BIT после чего считает что не возможно создать окно.</p>
<p>Для решения данной проблемки можно использовать небольшой патч:</p>
<pre>diff -Nru glfw-2.7.2/lib/x11/x11_window.c glfw-2.7.new/lib/x11/x11_window.c</pre>
<pre>--- glfw-2.7.2/lib/x11/x11_window.c     2011-05-07 18:31:42.000000000 +0400</pre>
<pre>+++ glfw-2.7.new/lib/x11/x11_window.c   2011-08-25 17:02:59.374634128 +0400</pre>
<pre>@@ -484,11 +483,12 @@</pre>
<pre> continue;</pre>
<pre> }</pre>
<pre></pre>
<pre>+        /* Vbox will never return GLX_WINDOW_BIT. We may check for GLX_PIXMAP_BIT here, or just ignore it, since we got VISUALID it should be fine.</pre>
<pre> if( !( getFBConfigAttrib( fbconfigs[i], GLX_DRAWABLE_TYPE ) &amp; GLX_WINDOW_BIT ) )</pre>
<pre> {</pre>
<pre> // Only consider window GLXFBConfigs</pre>
<pre> continue;</pre>
<pre>-        }</pre>
<pre>+        }*/</pre>
<pre></pre>
<pre> result[*found].redBits = getFBConfigAttrib( fbconfigs[i], GLX_RED_SIZE );</pre>
<pre> result[*found].greenBits = getFBConfigAttrib( fbconfigs[i], GLX_GREEN_SIZE );</pre>
<p>Данный патч можно применить не только к ветке 2.7 но и к 2.6 (данный код не претерпел значительных изменений). Возможно потребуется поправить вручную. После применения патча окно успешно создается.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nsws.ru/glfw-i-virtualbox.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Дальнейшие планы</title>
		<link>http://blog.nsws.ru/dalnejshie-plany.html</link>
		<comments>http://blog.nsws.ru/dalnejshie-plany.html#comments</comments>
		<pubDate>Fri, 13 May 2011 19:28:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Новости]]></category>
		<category><![CDATA[Проекты]]></category>

		<guid isPermaLink="false">http://blog.nsws.ru/?p=203</guid>
		<description><![CDATA[Уже прошло довольно много времени, с момента выпуска моей аркады, я сменил работу и занимаюсь теперь разработкой игр не только как хобби но и как основной доход, но все же надо двигаться дальше и разрабатывать свои игры.]]></description>
			<content:encoded><![CDATA[<p>Уже прошло довольно много времени, с момента выпуска моей аркады, я сменил работу и занимаюсь теперь разработкой игр не только как хобби но и как основной доход, но все же надо двигаться дальше и разрабатывать свои игры.</p>
<p>Итак, что ждет нас в будущем.</p>
<p>В ближайшее время у меня в планах разобраться таки с проектом CrazyStones и довести его до играбельного состояния, что потребует некоторых работ над MagicEngine, которые были уже давно нужны но руки до них никак не доходили. На доработку CrazyStones пока что планируется потратить пару месяцев, включая разработку редактора уровней, разработку самих уровней и реализацию геймплея.</p>
<p>Для движка планируется приделать человеческий рендеринг текста, поддержку разных разрешений  с адекватным зумом(а то сейчас оно так страшненько выглядит:) )  и, возможно, поддержку mng файлов для анимации.</p>
<p>После этого в планах стоит портировать движок под MacOS, с целью более полного охвата всех возможных конфигураций, а так же, в случае возможности, и портирование под iPhone и Android.</p>
<p>Ну а дальше надо делать NYP2012, дизайн документ на который в объеме 20-ти страниц текста уже готов!</p>
<p>Если будут желающие присоединиться к любому из этих этапов &#8211; пишите, всегда рад слышать ваши пожелания и предложения.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nsws.ru/dalnejshie-plany.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Игровой концепт &#8211; сумасшедшие камни</title>
		<link>http://blog.nsws.ru/igrovoj-koncept-sumashedshie-kamni.html</link>
		<comments>http://blog.nsws.ru/igrovoj-koncept-sumashedshie-kamni.html#comments</comments>
		<pubDate>Tue, 19 Apr 2011 12:28:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Концепты]]></category>
		<category><![CDATA[Новости]]></category>
		<category><![CDATA[Проекты]]></category>

		<guid isPermaLink="false">http://blog.nsws.ru/?p=191</guid>
		<description><![CDATA[В прошлую пятницу у меня возникла идея сделать Match-3 с "реальной" физикой. Сегодня я представляю концепт версию данной игры. Багов много, но в целом основная идея уже именно та что и должна быть.]]></description>
			<content:encoded><![CDATA[<p>В прошлую пятницу у меня возникла идея сделать Match-3 с &#8220;реальной&#8221; физикой. Сегодня я представляю концепт версию данной игры. Багов много, но в целом основная идея уже именно та что и должна быть.<span id="more-191"></span></p>
<p>В качестве физического движка я решил использовать box2d, который я благополучно за интегрировал за ночь с пятницы на субботу. Конечно багов еще вагон и маленькая тележка, например не совсем понятно почему абсолютно неупругие кубики отталкиваются друг от друга, работают как пружины и прочее, но тем не менее для 12 часов работы концепт выглядит более чем хорошо.</p>
<p>Немного о правилах игры. Кубики убираются когда они соприкасаются более чем на 80% поверхности ребра. Переставить два кубика можно только если данная перестановка приведет к убиранию 3 и более кубиков. Кубики должны контактировать в любой форме (не обязательно по прямой).</p>
<p>Кстати я наконец-то собрал игрушку с помощью VS и теперь размер библиотек резко уменьшился. Выкладываю только бинарники под винду, скорее всего эта версия заработает под Wine (позже наверно выложу бинарники под linux). Для запуска приложения вам возможно потребуется обновить VCRedistributable Package, который можно скачать с сайта <a title="Microsoft" href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=a7b7a05e-6de6-4d3a-a423-37bf0912db84">Microsoft </a></p>
<p>Скачать концепт можно тут(windows only 1Mb): <a title="http://blog.nsws.ru/wp-upload/CSconcept.zip" href="http://blog.nsws.ru/wp-upload/CSconcept.zip">http://blog.nsws.ru/wp-upload/CSconcept.zip</a></p>
<p>Буду рад любому фидбеку, особенно интересно мнение относительно играбельности такой игры, если ее довести до конца.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nsws.ru/igrovoj-koncept-sumashedshie-kamni.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>NYP2011 закрыт</title>
		<link>http://blog.nsws.ru/nyp2011-zakryt.html</link>
		<comments>http://blog.nsws.ru/nyp2011-zakryt.html#comments</comments>
		<pubDate>Tue, 07 Dec 2010 12:09:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[NYP]]></category>
		<category><![CDATA[Новости]]></category>

		<guid isPermaLink="false">http://blog.nsws.ru/?p=187</guid>
		<description><![CDATA[С прискорбием сообщаю что проект NYP2011 пал смертью храбрых в неравной борьбе с моей ленью. Это значит что  NYP2011 не увидит свет. Причиной этому послужила невозможность на данном этапе реализовать проект в том виде, в котором я хочу его видеть, в силу как проблем со временем (да, в еву полетать хочется больше чем делать NYP) так и с желанием)]]></description>
			<content:encoded><![CDATA[<p>С прискорбием сообщаю что проект NYP2011 пал смертью храбрых в неравной борьбе с моей ленью. Это значит что  NYP2011 не увидит свет. Причиной этому послужила невозможность на данном этапе реализовать проект в том виде, в котором я хочу его видеть, в силу как проблем со временем (да, в еву полетать хочется больше чем делать NYP) так и с желанием)</p>
<p>Вообще лучшим NYP из когдалибо выходивших я считаю NYP2009, который, как и остальные версии NYP можно скачать тут:  <a title="http://nsws.ru/node/20" href="http://nsws.ru/node/20">http://nsws.ru/node/20</a></p>
<p>На данный момент я не знаю, будет ли запущен какой либо другой проект, поживем увидим&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nsws.ru/nyp2011-zakryt.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Space_Arcade 1.1.0</title>
		<link>http://blog.nsws.ru/space_arcade-1-1-0.html</link>
		<comments>http://blog.nsws.ru/space_arcade-1-1-0.html#comments</comments>
		<pubDate>Tue, 12 Oct 2010 16:15:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[OpenGL]]></category>
		<category><![CDATA[Space Arcade]]></category>
		<category><![CDATA[Новости]]></category>
		<category><![CDATA[Проекты]]></category>
		<category><![CDATA[Разработка SO Arcade]]></category>

		<guid isPermaLink="false">http://blog.nsws.ru/?p=182</guid>
		<description><![CDATA[Сегодня, 12 октября 2010 года, вышел первый и последний патч для space_arcade. Разработка проекта завершена.
Данная версия игры распространяется в двух видах: исходные коды для Linux систем и бинарный пакет для Windows.]]></description>
			<content:encoded><![CDATA[<p>Сегодня, 12 октября 2010 года, вышел первый и последний патч для space_arcade. Разработка проекта завершена.</p>
<p><img title="Далее…" src="http://blog.nsws.ru/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif" alt="" />Данная версия игры распространяется в двух видах: исходные коды для Linux систем и бинарный пакет для Windows.</p>
<p>Огромная просьба сообщать если у вас не запустилось, совместно с конфигурацией оборудования (dxdiag-&gt;сохранить отчет,  либо указывать  CPU, OS, модель видеокарты, версию видео драйвера).<span id="more-182"></span></p>
<h3>Список изменений.</h3>
<p>Данная версия  содержит большое количество изменений. Кроме того, что был исправлен ряд багов, также была добавлена новая функциональность.</p>
<p>Новая функциональность:</p>
<ul>
<li>Добавлена онлайновая таблица рекордов. Она расположена по следующему адресу: <a href="http://nsws.ru/node/46">http://nsws.ru/node/46</a></li>
<li>Изменения в интерфейсе. Теперь имеются окна, в результате чего ликвидированы некоторые &#8220;скушные&#8221; экраны</li>
<li>Некоторые монстры теперь стреляют очередями</li>
<li>Игрок теперь не умирает от первого столкновения. Враги наносят урон, а игрок может лечиться, поднимая поверапы</li>
</ul>
<p>Исправленные баги:</p>
<ul>
<li>Теперь музыка отлично работает даже если у вас несколько звуковых карт</li>
<li>Решена проблема со 100% загрузгой процессора</li>
</ul>
<h3>Сборка из исходных кодов.</h3>
<p>Для сборки игры из исходных кодов вам потребуются следующие библиотеки для разработчиков (суффикс -dev в debian-like дистрибутивах):</p>
<ul>
<li>freetype</li>
<li>glfw</li>
<li>glew</li>
<li>png</li>
<li>jpeg</li>
<li>GL</li>
<li>GLU</li>
<li>X11</li>
<li>Xxf86vm</li>
<li>Xrandr</li>
<li>libfileio</li>
</ul>
<p>Если у вас есть все эти библиотеки, то сборку можно произвести следующим набором команд:</p>
<pre>./configure &amp;&amp; make</pre>
<p>Для запуска игры вам надо перейти в каталог src и запустить там ./arcade</p>
<h3>Системные требования:</h3>
<ul>
<li>ОС Windows XP/Vista, Linux</li>
<li>OpenGL 1.4</li>
<li>21 Мб на жестком диске</li>
<li>Манипулятор &#8220;мышь&#8221;</li>
</ul>
<p>Для установки необходимо запустить скачанный файл space_arcade.1.1.0.exe и указать место для установки, после чего установить Win32OpenSSL_Light и запустить arcade.exe из указанной директории.</p>
<p>Работоспособность игры проверена на видеокартах Nvidia 8600 и Intel 945G</p>
<h3>Ссылки на скачивание:</h3>
<p><a href="http://blog.nsws.ru/wp-upload/space_arcade.1.1.0.exe">http://blog.nsws.ru/wp-upload/space_arcade.1.1.0.exe</a></p>
<p><a href="http://blog.nsws.ru/wp-upload/space_arcade-1.1.0.tar.bz2">http://blog.nsws.ru/wp-upload/space_arcade-1.1.0.tar.bz2</a></p>
<p><a href="http://blog.nsws.ru/wp-upload/libfileio-1.0.0.tar.bz2">http://blog.nsws.ru/wp-upload/libfileio-1.0.0.tar.bz2</a></p>
<p><a href="http://www.slproweb.com/download/Win32OpenSSL_Light-1_0_0a.exe">http://www.slproweb.com/download/Win32OpenSSL_Light-1_0_0a.exe</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nsws.ru/space_arcade-1-1-0.html/feed</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>SpaceArcade: танцы на костях</title>
		<link>http://blog.nsws.ru/spacearcade-tancy-na-kostyax.html</link>
		<comments>http://blog.nsws.ru/spacearcade-tancy-na-kostyax.html#comments</comments>
		<pubDate>Tue, 27 Jul 2010 10:07:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Space Arcade]]></category>
		<category><![CDATA[Новости]]></category>
		<category><![CDATA[Проекты]]></category>
		<category><![CDATA[Разработка SO Arcade]]></category>

		<guid isPermaLink="false">http://blog.nsws.ru/?p=180</guid>
		<description><![CDATA[История проекта началась 1 июня 2008 года, когда я решил что пора наконец-то доделать до играбельного состояния хотябы один из этих своих проектов. Несмотря на то что проект забрасывался несколько раз (в сентябре 2008 по февраль 2009, с марта по июль 2009, с августа 2009 по август 2010) он всеже смог получить цифру 1.0.0 в номере версии.]]></description>
			<content:encoded><![CDATA[<p>История проекта началась 1 июня 2008 года, когда я решил что пора наконец-то доделать до играбельного состояния хотябы один из этих своих проектов. Несмотря на то что проект забрасывался несколько раз (в сентябре 2008 по февраль 2009, с марта по июль 2009, с августа 2009 по август 2010) он всеже смог получить цифру 1.0.0 в номере версии.</p>
<p><span id="more-180"></span>Игра задумывалась как полет на выживание. Игрок изничтожает все усиливающиеся толпы врагов, но уничтожить их всех он не может, потомучто конца им нет. Были даже планы сделать онлайновую таблицу рекордов, но, к сожалению, им не суждено было сбыться.</p>
<h2>Минусы:</h2>
<p>Одной из главных проблем на всём протяжении разработки было желание. Каждый раз при возврате к проекту было много энтузиазма и быстро реализовывались необходимые функции, но каждый раз энтузиазм быстро пропадал. Если тчательно посмотреть на историю забрасываний проекта то можно заметить что активной разработки было всего 8.5 месяцев, и то это были далеко не сильно загруженные месяцы.</p>
<p>Второй проблемой данного проекта стала графика. Как водится &#8211; програмисты рисовать не умеют, а у художника в какойто момент просто сдох планшет, потом у него появились другие дел, работа в офисе и т.д.</p>
<p>Кстати интересно, что проект был готов на 99% 22 августа 2009 года,была реализована вся функциональность! Но в тот момент появилась бага, которую я в то время не смог отловить и проект был заброшен.</p>
<p>Вообще проблема разработки в одиночку это энтузиазм и вещи которые чинятся слишком много времени. Каждая такая вещь способна поставить здоровенный крест на проекте (как и произошло в давние времена со стратегией &#8220;Космос&#8221;).</p>
<p>К сожалению у игры используется старая версия движка, не удалось перевести игру на новую версию за 1 неделю&#8230; Проблемы с совместимостью на лицо&#8230; Да и баги в новом движке присутствуют&#8230;</p>
<h2>Плюсы:</h2>
<p>Ну несомненно главый плюс здесь один &#8211; <strong>Я это сделал! </strong>Не<strong> </strong>смотря на то, что у меня много раз опускались руки &#8211; <strong>я это сделал.<br />
</strong></p>
<p>За время работы пришлось сильно пересмотреть свои взгляды на чистоту кода, в какойто момент становится ясно что цель уже не сделать красиво а просто сделать.</p>
<p>Игра мне понравилась, а игру я таки писал для себя, больших иллюзий о возможности ее продать у меня небыло, а сейчас, посмотрев на результат я знаю что он мне нравится, но я знаю что его не продать, ну и пусть <img src='http://blog.nsws.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>Планы:</h2>
<p>Следующая моя задача &#8211; реализация следующей игры, желательно за время гораздо меньшее, чем текущее. Скорее всего следующая игра будет в стиле Tower Defence, хотя возможно это будет и Turn Based стратегия, посмотрим, а пока я уезжаю в отпуск. До встречи!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nsws.ru/spacearcade-tancy-na-kostyax.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Релиз SpaceArcade</title>
		<link>http://blog.nsws.ru/reliz-spacearcade.html</link>
		<comments>http://blog.nsws.ru/reliz-spacearcade.html#comments</comments>
		<pubDate>Mon, 26 Jul 2010 11:15:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Space Arcade]]></category>
		<category><![CDATA[Новости]]></category>
		<category><![CDATA[Разработка SO Arcade]]></category>

		<guid isPermaLink="false">http://blog.nsws.ru/?p=177</guid>
		<description><![CDATA[Сегодня, 26 июля 2010 года, я рад сделать релиз первой игры, которую я дописал до конца. сегодня выходит SpaceArcade-1.0.0!]]></description>
			<content:encoded><![CDATA[<p>Сегодня, 26 июля 2010 года, я рад сделать релиз первой игры, которую я дописал до конца. сегодня выходит SpaceArcade-1.0.0!</p>
<p><span id="more-177"></span>Данная версия игры распространяется в двух видах: исходные коды для Linux систем и бинарный пакет для Windows.</p>
<p>Огромная просьба сообщать если у вас не запустилось, совместно с конфигурацией оборудования (dxdiag-&gt;сохранить отчет,  либо указывать  CPU, OS, модель видеокарты, версию видео драйвера) а в случае если у вас загрузилось – сообщать скорость игры (цифра в верхнем правом углу).</p>
<h3>Сборка из исходных кодов.</h3>
<p>Для сборки игры из исходных кодов вам потребуются следующие библиотеки для разработчиков (суффикс -dev в debian-like дистрибутивах):</p>
<ul>
<li>freetype</li>
<li>glfw</li>
<li>glew</li>
<li>png</li>
<li>jpeg</li>
<li>GL</li>
<li>GLU</li>
<li>X11</li>
<li>Xxf86vm</li>
<li>Xrandr</li>
</ul>
<p>Если у вас есть все эти библиотеки, то сборку можно произвести следующим набором команд:</p>
<pre>make -f Makefile.cvs &amp;&amp; ./configure &amp;&amp; make</pre>
<p>Однако если вы используете Ubuntu 9.04 и выше вам может потребоваться использовать вот такой набор команд, если при сборке будет ругаться на libtool:</p>
<pre>make -f Makefile.cvs &amp;&amp; ./configure &amp;&amp; cp `which libtool` ./ &amp;&amp;
cp `which libtool` ./libs/magicnegine &amp;&amp; make</pre>
<p>Для запуска игры вам надо перейти в каталог src и запустить там ./arcade</p>
<h3>Системные требования:</h3>
<ul>
<li>ОС Windows XP/Vista, Linux</li>
<li>OpenGL 1.4</li>
<li>21 Мб на жестком диске</li>
<li>Манипулятор &#8220;мышь&#8221;</li>
</ul>
<p>Для установки необходимо запустить скачанный файл arcade-0.1.0.377.exe и указать место для установки, после чего запустить arcade.exe из указанной директории.</p>
<p>Работоспособность игры проверена на видеокартах Nvidia 8600 и Intel 945G</p>
<h3>Ссылки на скачивание:</h3>
<p><a href="http://blog.nsws.ru/wp-upload/SpaceArcade-1.0.0.exe">http://blog.nsws.ru/wp-upload/SpaceArcade-1.0.0.exe</a></p>
<p><a href="http://blog.nsws.ru/wp-upload/SpaceArcade-1.0.0.tar.bz2">http://blog.nsws.ru/wp-upload/SpaceArcade-1.0.0.tar.bz2</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nsws.ru/reliz-spacearcade.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Space arcade: релиз не за горами</title>
		<link>http://blog.nsws.ru/space-arcade-reliz-ne-za-gorami.html</link>
		<comments>http://blog.nsws.ru/space-arcade-reliz-ne-za-gorami.html#comments</comments>
		<pubDate>Tue, 20 Jul 2010 08:56:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Space Arcade]]></category>
		<category><![CDATA[Новости]]></category>
		<category><![CDATA[Разработка SO Arcade]]></category>

		<guid isPermaLink="false">http://blog.nsws.ru/?p=173</guid>
		<description><![CDATA[Сегодня я получил полный набор арта для игры и теперь осталось только произвести балансировку и поправить несколько недочетов чтобы выпустить игру.
Релиз стоит ожидать до 30 июля, ибо позже я уже буду неспособен работать над игрой в течении двух недель. Также вскоре после релиза стоит ожидать плясок на костях.
]]></description>
			<content:encoded><![CDATA[<p>Сегодня я получил полный набор арта для игры и теперь осталось только произвести балансировку и поправить несколько недочетов чтобы выпустить игру.</p>
<p>Релиз стоит ожидать до 30 июля, ибо позже я уже буду неспособен работать над игрой в течении двух недель. Также вскоре после релиза стоит ожидать плясок на костях.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nsws.ru/space-arcade-reliz-ne-za-gorami.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Space arcade</title>
		<link>http://blog.nsws.ru/space-arcade.html</link>
		<comments>http://blog.nsws.ru/space-arcade.html#comments</comments>
		<pubDate>Wed, 02 Jun 2010 10:35:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MagicEngine]]></category>
		<category><![CDATA[Space Arcade]]></category>
		<category><![CDATA[Новости]]></category>
		<category><![CDATA[Проекты]]></category>
		<category><![CDATA[Разработка SO Arcade]]></category>

		<guid isPermaLink="false">http://blog.nsws.ru/?p=171</guid>
		<description><![CDATA[Спустя большой период времени после версии 0.5.0.3 я наконец-то возобновил над этим проектом. На данный момент проект готовится к релизу. За прошедшее время было сделано достаточно многое.]]></description>
			<content:encoded><![CDATA[<p>Спустя большой период времени после версии 0.5.0.3 я наконец-то возобновил над этим проектом. На данный момент проект готовится к релизу. За прошедшее время было сделано достаточно многое.<span id="more-171"></span> Наконец то был запинан художник и он подготовил ряд арта, необходимого для релиза.</p>
<p>Был зафикшен ряд проблем, которые приводили к периодическому краху игры. К счастью никто этого краха не видел, т.к. он появился уже после того как в игру была добавлена анимация  взрывов кораблей.</p>
<p>И на конец самое желанное для меня &#8211; реализована полноценная работа в режиме аппаратного ускорения (а не использование software renderer, как это было раньше) на видеокартах производства Intel.</p>
<p>Вобщем проект приближается к релизу)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nsws.ru/space-arcade.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Написание ботов для веб-игр с помощью библиотеки QT</title>
		<link>http://blog.nsws.ru/napisanie-botov-dlya-veb-igr-s-pomoshhyu-biblioteki-qt.html</link>
		<comments>http://blog.nsws.ru/napisanie-botov-dlya-veb-igr-s-pomoshhyu-biblioteki-qt.html#comments</comments>
		<pubDate>Tue, 02 Mar 2010 10:35:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[QT]]></category>
		<category><![CDATA[Новости]]></category>
		<category><![CDATA[боты]]></category>
		<category><![CDATA[онлайн игры]]></category>

		<guid isPermaLink="false">http://blog.nsws.ru/?p=169</guid>
		<description><![CDATA[Как известно QT - это кросс-платформенная библиотека, позволяющая достаточно быстро создавать приложения. С появлением в ней встроенного веб-браузера webkit, ее стало возможно использовать для написания ботов для веб-игр, чем я и решил заняться несколько дней назад.]]></description>
			<content:encoded><![CDATA[<p>Как известно QT &#8211; это кросс-платформенная библиотека, позволяющая достаточно быстро создавать приложения. С появлением в ней встроенного веб-браузера webkit, ее стало возможно использовать для написания ботов для веб-игр, чем я и решил заняться несколько дней назад.<span id="more-169"></span>Сразу надо сказать что использование webkit подходит не для всех игр, а только для игр не проверяющих использование браузера IE.</p>
<p>Для создания бота через webkit можно пойти двумя путями:</p>
<ol>
<li>Использовать QTestLib и имитировать действия пользователя.</li>
<li>Использовать QWebFrame-&gt;evaluateJavaScript</li>
</ol>
<h2>Использование QTestLib</h2>
<p>При использовании QTestLib мы создаем собственную очередь сообщений, которые передаем указанному виджету (в данном случае виджету QWebView). Очередь сообщений может содержать события нажатий кнопок, движения мыши, клики мышкой (как одинарные так и двойные). Использование этой библиотеки позволяет, в теории, создать бота для любой игры, даже игры, написанной на flash, однако ее использование достаточно трудоемко.</p>
<h2>Использование QWebFrame-&gt;evaluateJavaScript</h2>
<p>Данный метод заключается в использовании вставок JavaScript, которые будут исполняться в контексте текущего фрейма. Таким образом можно написать бота только для игры, полностью построенной на html.</p>
<h2>Построения бот-программы</h2>
<p>Основной задачей бот-программы, кроме того, что она должна ботить, является скрытность, программа не должна выдавать себя. В идеале она должна вести себя точно также как и обычный игрок.</p>
<p>Я писал бота для иры <a href="http://r.carnage.ru/?1006069559">Carnage</a>. Боту был выбран следующий алгоритм работы:</p>
<ol>
<li>Зайти в игру.</li>
<li>Дождаться восстановления хитов</li>
<li>Создать заявку на хаотичный бой</li>
<li>Провести бой</li>
<li>Перейти к пункту 2</li>
</ol>
<p>Заход в игру делается с нажатия кнопки Login в интерфейсе программы самим пользователем. При нажатии кнопки Login необходимо запустить примерно такой скрипт:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">document.<span style="color: #660066;">login</span>.<span style="color: #660066;">value</span><span style="color: #339933;">=</span><span style="color: #3366CC;">'You name'</span><span style="color: #339933;">;</span> 
document.<span style="color: #660066;">password</span>.<span style="color: #660066;">value</span><span style="color: #339933;">=</span><span style="color: #3366CC;">'You password'</span><span style="color: #339933;">;</span>
document.<span style="color: #660066;">form</span>.<span style="color: #660066;">auth</span><span style="color: #339933;">-</span>form.<span style="color: #660066;">submit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Для выполнения этого скрипта необходимо получить QWebFrame на указанную страницу:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">QWebFrame <span style="color: #339933;">*</span>frame <span style="color: #339933;">=</span> webView<span style="color: #339933;">-&gt;</span>page<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span>frameAt<span style="color: #009900;">&#40;</span>QPoint<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">100</span><span style="color: #339933;">,</span><span style="color: #0000dd;">100</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Конкретно в данном случае получение фрейма по конкретным координатам не критично, но в дальнейшем это очень пригодится. Дело в том, что в игре Carnage используется несколько разных фреймов, поэтому нам необходимо получать именно требуемый фрейм, а точка 100,100 в моем случае находится именно в нем.</p>
<p>И выполнить JavaScript:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"> frame<span style="color: #339933;">-&gt;</span>evaluateJavaScript<span style="color: #009900;">&#40;</span>script<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>После логина начинается самое интересное. Для каждой страницы необходим свой скрипт, а на некоторые страницы (например на страницу подачи заявки) надо даже несколько скриптов которые будут вызваны с некоторым интервалом. Это необходимо, потому что  в игре активно используется innerHTML и редирект фрейма на туже самую страницу но с другими параметрами. Чтобы не усложнять себе жизнь и не анализировать содержимое страницы проще сделать задержки.</p>
<p>Скрипты, по вполне понятным причинам, следует выполнять только после того, как страница полностью загрузится. Для этого можно использовать слот: void loadFinished ( bool ok );</p>
<p>Внутри этого слота я проверяю на какой странице сейчас находится требуемый фрейм:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">QWebFrame <span style="color: #339933;">*</span>frame<span style="color: #339933;">=</span> webView<span style="color: #339933;">-&gt;</span>page<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span>frameAt<span style="color: #009900;">&#40;</span>QPoint<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">100</span><span style="color: #339933;">,</span><span style="color: #0000dd;">100</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
QString path <span style="color: #339933;">=</span> frame<span style="color: #339933;">-&gt;</span>url<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span>path<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>path<span style="color: #339933;">==</span><span style="color: #ff0000;">&quot;/zayavka.pl&quot;</span><span style="color: #009900;">&#41;</span>...</pre></div></div>

<p>Получив требуемый адрес мы запускаем таймер на некоторую функцию, которая произведет обработку страницы с помощью JavaScript. Почему именно таймер? Просто из слота необходимо выйти как можно быстрее, а использовать потоки не очень хорошо, потому что у QT имеются на этот счет некоторые нехорошие мысли, когда я попытался использовать потоки то это часто приводило к падению приложения. Используя таймеры мы убиваем сразу двух зайцев &#8211; мы решаем проблему быстрого возврата из слота и мы решаем проблему задержек при заполнении данных на страницах. Мы не можем использовать зацикленный JavaScript код, потомучто это приводит к тому, что основной JavaScript код страницы перестает выполняться. И мы не можем сделать sleep в основном потоке, потому что  тогда опять таки перестанет выполняться JavaScript на странице.</p>
<h3>Возврат значений из JavaScript</h3>
<p>Временами возникает необходимость получать некоторые значения от JavaScript кода. Сделать это можно через возвращаемое значение функции evaluateJavaScript. Данная функция  возвращает QVariant содержащий результат вывода вашего скрипта. И например вот такой вот скрип, запущенный в Carnage, вернем вам количество ваших хитов:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">top.<span style="color: #660066;">currHP</span><span style="color: #339933;">;</span></pre></div></div>

<p>Собственно это все что необходимо чтобы написать бота для игры Carnage, Torment и еще десятка клонов этих игр.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nsws.ru/napisanie-botov-dlya-veb-igr-s-pomoshhyu-biblioteki-qt.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

