<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='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'><id>tag:blogger.com,1999:blog-5648764027290852710</id><updated>2024-12-30T06:20:51.219-08:00</updated><category term="Созданные ИГРЫ!!!"/><category term="Pixel Shaders (постобработка )"/><category term="АЛГОРИТМЫ"/><title type='text'>Android games</title><subtitle type='html'>Игры для Андроид</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://saigame.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://saigame.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>SAI</name><uri>http://www.blogger.com/profile/08535786048263862897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>20</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5648764027290852710.post-1302931181586557902</id><published>2018-01-24T13:01:00.000-08:00</published><updated>2018-01-24T14:03:20.852-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Pixel Shaders (постобработка )"/><title type='text'>Хроматическая аберрация</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFQf4G-HOdNPHJB86f-m9H9oOkG47uV8grSWLH4Q6gFSvaUcC-lKnSz0pEsOeJ4_i6jLyxssXlIr7Sz2lQSAnp0qT7SOaztFtW23CBnRMzCfK9rUDBHeHRfhNhnfE7xicyPuZ-acR17c4j/s1600/3s.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;546&quot; data-original-width=&quot;574&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFQf4G-HOdNPHJB86f-m9H9oOkG47uV8grSWLH4Q6gFSvaUcC-lKnSz0pEsOeJ4_i6jLyxssXlIr7Sz2lQSAnp0qT7SOaztFtW23CBnRMzCfK9rUDBHeHRfhNhnfE7xicyPuZ-acR17c4j/s1600/3s.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Алгоритм эффекта: каналы GBA оставляем на месте, а канал R сдвигаем на несколько пикселей в любую сторону. Можно изменять не именно красный канал, а и любой другой.&lt;br /&gt;
&lt;br /&gt;
Самый простой код хроматической аберрации для AGK на языке GLSL:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;uniform sampler2D texture0;&lt;br /&gt;&lt;br /&gt;varying mediump vec2 uvVarying;&lt;br /&gt;&lt;br /&gt;uniform vec2 agk_resolution;&lt;br /&gt;uniform float agk_sintime;&lt;br /&gt;&lt;br /&gt;void main()&lt;br /&gt;{&lt;/b&gt;&lt;br /&gt;
&lt;div&gt;
&lt;b&gt;&lt;br /&gt; vec2 scale = 1.0/agk_resolution;&lt;br /&gt; vec4 color = vec4(texture2D(texture0, uvVarying ).rgba);&lt;br /&gt; vec2 UV_MOD=vec2(3.0*agk_sintime*agk_sintime , 0.0 );&lt;br /&gt; color.r = texture2D(texture0, uvVarying+UV_MOD*scale).r;&lt;br /&gt; &lt;br /&gt; gl_FragColor = color;&lt;br /&gt;}&lt;/b&gt;&lt;br /&gt;
&lt;div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
Переменная&lt;b&gt;&amp;nbsp;scale&lt;/b&gt; нужна для определения размера одного пикселя на экране, так как OpenGL использует нормализованные&amp;nbsp;вектора&amp;nbsp;длиной в 1.0 (при любой ширине (или высоте) экрана, первый пиксель будет иметь координату по х (или у) 0.0, а последний пиксель будет 1.0)&amp;nbsp;&amp;nbsp;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;vec4 color = vec4(texture2D(texture0, uvVarying ).rgba); - &lt;/b&gt;объявляем переменную и записываем в нее цвет пикселя текстуры&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;b&gt;texture0 &lt;/b&gt;с координатами&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;b&gt;uvVarying.&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
Если используем все 4 канала текстуры, то&lt;b&gt; &quot;.rgba&quot; &lt;/b&gt;в конце и&amp;nbsp;&lt;b&gt;vec4&lt;/b&gt;&amp;nbsp;можно&amp;nbsp;не писать&lt;b&gt;.&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
Вот так:&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;vec4 color = vec4(texture2D(texture0, uvVarying ).rgba);&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
или (равноценно)&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;vec4 color = texture2D(texture0, uvVarying);&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;vec2 UV_MOD=vec2(3.0*agk_sintime*agk_sintime , 0.0 ); - &lt;/b&gt;наша&amp;nbsp;новая переменная&lt;b&gt; (2-компонентный вектор) &lt;/b&gt;для модификации смещения координаты текстуры на 3.0 пикселя (3 пикселя может и много, но для большей выразительности эффекта сойдет).&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;agk_sintime &lt;/b&gt;используется для динамического изменения эффекта с течением времени.&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;agk_sintime -&lt;/b&gt; имеет значение в диапазоне&lt;b&gt; от -1.0 до 1.0&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
А вот&amp;nbsp;&lt;b&gt;agk_sintime*&lt;/b&gt;&lt;b&gt;agk_sintime&lt;/b&gt; дает значение&amp;nbsp;в диапазоне&lt;b&gt; от 0.0 до 1.0, &lt;/b&gt;что даст смещение только&amp;nbsp;в одну сторону.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;color.r = texture2D(texture0, uvVarying+UV_MOD*scale).r; - &lt;/b&gt;заменяем красный канал текстуры на красный канал этой же текстуры, но со сдвигом в 3 пикселя по оси х&lt;b&gt;. &lt;/b&gt;Умножение на &lt;b&gt;scale &lt;/b&gt;даст попиксельное нормализованное смещение для конкретного текущего разрешения экрана в правильных пропорциях.&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;gl_FragColor = color; -&lt;/b&gt;обязательно&amp;nbsp;выводим наш цвет пикселя в переменную&amp;nbsp;&lt;b&gt;gl_FragColor&amp;nbsp;&lt;/b&gt;.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://saigame.blogspot.com/feeds/1302931181586557902/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://saigame.blogspot.com/2018/01/blog-post_24.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/1302931181586557902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/1302931181586557902'/><link rel='alternate' type='text/html' href='http://saigame.blogspot.com/2018/01/blog-post_24.html' title='Хроматическая аберрация'/><author><name>SAI</name><uri>http://www.blogger.com/profile/08535786048263862897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFQf4G-HOdNPHJB86f-m9H9oOkG47uV8grSWLH4Q6gFSvaUcC-lKnSz0pEsOeJ4_i6jLyxssXlIr7Sz2lQSAnp0qT7SOaztFtW23CBnRMzCfK9rUDBHeHRfhNhnfE7xicyPuZ-acR17c4j/s72-c/3s.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5648764027290852710.post-690245406882563483</id><published>2018-01-24T12:19:00.001-08:00</published><updated>2018-01-24T13:15:42.765-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Pixel Shaders (постобработка )"/><title type='text'>Структура пиксельного шейдера на примере еффекта &quot;Хроматическая аберрация&quot;</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Подготовку проекта в AGK смотрите&lt;span style=&quot;color: lime;&quot;&gt;&amp;nbsp;&lt;span style=&quot;color: lime;&quot;&gt;&lt;a href=&quot;https://saigame.blogspot.com/2018/01/agk-constant-width-1280-constant-height.html%20%D0%93%D0%BE%D1%82%D0%BE%D0%B2%D0%BE&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: lime;&quot;&gt;ЗДЕСЬ&lt;/span&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Рассмотрим пиксельный шейдер &quot;Хроматическая аберрация&quot; для App Game Kit на языке GLSL:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;uniform sampler2D texture0;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;varying mediump vec2 uvVarying;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;uniform vec2 agk_resolution;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;uniform float agk_sintime;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;uniform float agk_time;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;void main()&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;{&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;vec2 scale = 1.0/agk_resolution;&lt;/b&gt;&lt;br /&gt;
&lt;span style=&quot;white-space: pre;&quot;&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;b&gt;vec4 color = vec4(texture2D(texture0, uvVarying ).rgba);&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;vec2 UV_MOD=vec2(3.0*agk_sintime*agk_sintime , 0.0 );&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/b&gt;&lt;b&gt;color.r = texture2D(texture0, uvVarying+UV_MOD*scale).r;&lt;/b&gt;&lt;br /&gt;
&lt;span style=&quot;white-space: pre;&quot;&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;gl_FragColor = color;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;}&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;/b&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;b&gt;&lt;a href=&quot;https://saigame.blogspot.com/2018/01/blog-post_24.html&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: lime;&quot;&gt;РАЗБОР АЛГОРИТМА ХРОМАТИЧЕСКОЙ АБЕРРАЦИИ&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Все переменные у которых перед их типом находится слово&amp;nbsp;&lt;b&gt;uniform &lt;/b&gt;передаются шейдеру из самой програмы. Их может менять пользователь во время выполнения игры с помощью команд:&lt;br /&gt;
&lt;b&gt; SetShaderConstantByName( shaderID, szName, value1, value2, value3, value4 ) SetShaderConstantArrayByName( shaderID, szName, arrayIndex, value1, value2, value3, value4 )&lt;/b&gt;&lt;br /&gt;
&lt;div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;uniform sampler2D texture0 - &lt;/b&gt;это текстура которую мы передали в шейдер&amp;nbsp;командой &lt;b&gt;SetObjectImage( quad, render_image, 0 ) &lt;/b&gt;в самой программе. Если нужно передать еще текстуру, то нужно записать в AGK&amp;nbsp;&lt;b&gt;SetObjectImage( quad, render_image_2, 1 ), &lt;/b&gt;а в шейдере дописать строку&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;b&gt;uniform sampler2D texture1. &lt;/b&gt;Будет вот так:&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;...&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;uniform sampler2D texture0;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;uniform sampler2D texture1;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;...&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;varying mediump vec2 uvVarying - &lt;/b&gt;это UV координаты текстуры&lt;b&gt;, &lt;/b&gt;которые передаются с вертексного шейдера (хотя мы его и не определяли, но он есть!). Эти координаты менять нельзя (как и все&amp;nbsp;&lt;b&gt;varying &lt;/b&gt;переменные), только считывать, иначе будет ошибка компиляции шейдера.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;agk_resolution,&amp;nbsp;&lt;/b&gt;&lt;b&gt;agk_sintime,&amp;nbsp;&lt;/b&gt;&lt;b&gt;agk_time - &lt;/b&gt;это переменные которые AGK самостоятельно передает в шейдер, но объявлять их в самом шейдере нужно самостоятельно (все они, естественно,&amp;nbsp;&lt;b&gt;uniform&lt;/b&gt;).&lt;/div&gt;
&lt;div&gt;
И сама функция входа:&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;void main()&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;{&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;...&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;}&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
Результатом работы шейдера должен быть 4-компонентный вектор, который записывается в переменную&amp;nbsp;&lt;b&gt;gl_FragColor.&lt;/b&gt;&lt;br /&gt;
Пример минимального шейдера, который будет просто отображать текстуру, которую ему передадим:&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;uniform sampler2D texture0;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;varying mediump vec2 uvVarying;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;void main()&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;{&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/b&gt;&lt;b&gt;gl_FragColor =&lt;/b&gt;&lt;b&gt;&amp;nbsp;texture2D(texture0, uvVarying)&lt;/b&gt;&lt;b&gt;;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;}&lt;/b&gt;&lt;br /&gt;
&lt;div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Все остальное - это фантазия программиста, который пишет шейдер!&lt;/b&gt;&lt;/div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://saigame.blogspot.com/feeds/690245406882563483/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://saigame.blogspot.com/2018/01/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/690245406882563483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/690245406882563483'/><link rel='alternate' type='text/html' href='http://saigame.blogspot.com/2018/01/blog-post.html' title='Структура пиксельного шейдера на примере еффекта &quot;Хроматическая аберрация&quot;'/><author><name>SAI</name><uri>http://www.blogger.com/profile/08535786048263862897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5648764027290852710.post-4944969440505830336</id><published>2018-01-24T11:40:00.001-08:00</published><updated>2018-01-24T13:15:00.408-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Pixel Shaders (постобработка )"/><title type='text'>Подготовка проекта в AGK для использования постобработки</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;h2 style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0P2zaM8iKjBPr_lUyb1e_GykLKjwjS6v_XmRs_tgSxmik6XrebzX8m84m1vTjMvT6qhlJC1oPc3m4a9is3LkSqVYiieqc2DOiTKKCkeYeT1tmERQRudi9P9bjex7sJnKE79gx79JE8-sq/s1600/2s.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;425&quot; data-original-width=&quot;564&quot; height=&quot;301&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0P2zaM8iKjBPr_lUyb1e_GykLKjwjS6v_XmRs_tgSxmik6XrebzX8m84m1vTjMvT6qhlJC1oPc3m4a9is3LkSqVYiieqc2DOiTKKCkeYeT1tmERQRudi9P9bjex7sJnKE79gx79JE8-sq/s400/2s.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Запишем размер экрана в константы (или переменные, если размер экрана будет меняться):&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;b&gt;#constant width 1280&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;b&gt;#constant height 720&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/span&gt; Выполняем стандартные команды:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;SetWindowSize( width, height, 0 )&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;SetOrientationAllowed( 1, 1, 1, 1 )&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;SetSyncRate( 60, 0 )&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;SetScissor( 0,0,0,0 )&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;UseNewDefaultFonts( 1 )&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt; Так как шейдеры умеют работать только с текстурами и векторами, нам нужно создать текстуру, в которую (вместо экрана) будут рисоваться все объекты (спрайты и т.д.).&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;render_image=CreateRenderImage(width, height, 0, 0 )&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt; Если&amp;nbsp;нужно создать сложный многослойный эффект (например bloom), то таких текстур может понадобиться намного больше.&lt;br /&gt;
Следующим шагом будет создание прямоугольника, который будет отображать текстуру на экране:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;quad=CreateObjectQuad()&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt; &lt;b&gt;Quad &lt;/b&gt;можно представить как большой спрайт, который занимает весь экран.&lt;br /&gt;
Дальше загружаем шейдер (&lt;b&gt;GLSL&lt;/b&gt;):&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt; &lt;b&gt;shader=LoadFullScreenShader(&quot;shaders/color.ps&quot;)&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Загружаем только пиксельный шейдер. Вертексный шейдер нам не нужен, так как геометрии мы никакой менять не будем.&lt;br /&gt;
Последний этап, это разделение стандартного рендера движка на свой.&lt;br /&gt;
Вот так выглядит стандартный цикл:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;DO&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;//команды пользователя&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Sync()&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;LOOP&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
А вот так разделенный на отдельные части:&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt; &lt;b&gt;DO&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;//команды пользователя&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; Update2D(0)&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; ClearScreen()&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; Render()&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; Swap()&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;LOOP&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt; Немного о командах:&lt;br /&gt;
&lt;b&gt;Update2D(0) &lt;/b&gt;- обновление положения всех 2D объектов (для 3D есть&amp;nbsp;&lt;b&gt;Update3D(0)&lt;/b&gt;)&lt;br /&gt;
&lt;b&gt;ClearScreen() - &lt;/b&gt;очистка прошлого кадра (буфера)&lt;br /&gt;
&lt;b&gt;Render() - &lt;/b&gt;визуализация всех&amp;nbsp;созданных&amp;nbsp;объектов в буфер (не на экран)&lt;br /&gt;
&lt;b&gt;Swap() -&lt;/b&gt; замена буферов и вывод всего содержимого на экран&lt;br /&gt;
По такому принципу происходит двойная буферизация кадров в играх. Один буфер отображается на экране, а другой тем временем подготавливается. Команда&amp;nbsp;&lt;b&gt;Swap()&lt;/b&gt; меняет их местами.&lt;br /&gt;
&lt;br /&gt;
Запишем код, который будет использовать наш шейдер для создания эффекта &lt;b&gt;&quot;Хроматическая аберрация&quot;:&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt; &lt;b&gt;DO&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp;SetRenderToImage(render_image,0)&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp;ClearScreen()&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp;Render()&lt;/b&gt;&lt;br /&gt;
&lt;span style=&quot;white-space: pre;&quot;&gt;&lt;b&gt;  &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp;SetObjectImage( quad, render_image, 0 )&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp;SetObjectShader( quad, shader)&lt;/b&gt;&lt;br /&gt;
&lt;span style=&quot;white-space: pre;&quot;&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp;SetRenderToScreen()&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp;ClearScreen()&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp;DrawObject(quad)&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; Swap()&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;LOOP&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt; Команда&amp;nbsp;&lt;b&gt;SetRenderToImage(render_image,0)&lt;/b&gt;&amp;nbsp;перенаправляет визуализацию с экрана в изображение которое мы создали в начале программы.&lt;br /&gt;
Обязательно нужно очистить текстуру командой&amp;nbsp;&lt;b&gt;ClearScreen() &lt;/b&gt;(хоть команда и переводится как &quot;очистить экран&quot;, но рендеринг происходит в текстуру, поэтому будет очищена именно текстура&amp;nbsp;&lt;b&gt;render_image&lt;/b&gt;).&lt;br /&gt;
Дальше рисуем все объекты командой&amp;nbsp;&lt;b&gt;Render(). &lt;/b&gt;И передаем нашу текстуру объекту&amp;nbsp;&lt;b&gt;quad &lt;/b&gt;командой&lt;b&gt;&amp;nbsp; SetObjectImage( quad, render_image, 0 )&lt;/b&gt;. Цифра 0 указывает под каким номером будет текстура передана в шейдер. Мы используем только одну текстуру поэтому пишем порядковый номер 0 (для второй текстуры 1 и тд). Собственно подключаем сам шейдер к объекту&amp;nbsp;&lt;b&gt;quad:&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;b&gt;SetObjectShader( quad, shader).&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
И возвращаем рендеринг обратно на экран&amp;nbsp;&lt;b&gt;SetRenderToScreen(). &lt;/b&gt;Естественно очищаем его от предыдущего&amp;nbsp;кадра командой&amp;nbsp;&lt;b&gt;ClearScreen()&lt;/b&gt;.&lt;br /&gt;
Последнее, что нужно сделать - это нарисовать единственный объект&amp;nbsp;&lt;b&gt;quad, &lt;/b&gt;который содержит &quot;снимок&quot; всех объектов игры и уже обработан шейдером. Для этого пишем команду&amp;nbsp;&lt;b&gt;DrawObject(quad) &lt;/b&gt;и меняем буферы кадров местами&amp;nbsp;&lt;b&gt;Swap().&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;a href=&quot;https://saigame.blogspot.com/2018/01/blog-post.html&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: lime;&quot;&gt;ЗДЕСЬ СТРУКТУРА ШЕЙДЕРА!&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Результат:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHrxbwoVjAuRFlLZkVQWHlgKDBqcibLxsJL_TEhEZB0oIe8QORRkLcjJeRYsciApMLSNsziSAarbXRy-4_hv3ARbVKyM-dyb2mByfaqFtzQ41-ySAP6soG23MpZffCuW7qZeoVFm9lp7ID/s1600/2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;426&quot; data-original-width=&quot;566&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHrxbwoVjAuRFlLZkVQWHlgKDBqcibLxsJL_TEhEZB0oIe8QORRkLcjJeRYsciApMLSNsziSAarbXRy-4_hv3ARbVKyM-dyb2mByfaqFtzQ41-ySAP6soG23MpZffCuW7qZeoVFm9lp7ID/s1600/2.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhgMcvkjtAfHF2FnJxhRDkHnbNmS8GSncE01NB9t1YOUD1cmHZTbKySQN9gYxKn3ou8IVXsmqnTUAfmTKbKifCdDfF0_fOEMFaJnAgiDjk1yTXwIVhskZCDIWBKverdMtoFZh-7mWB3jVE/s1600/2s.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;425&quot; data-original-width=&quot;564&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhgMcvkjtAfHF2FnJxhRDkHnbNmS8GSncE01NB9t1YOUD1cmHZTbKySQN9gYxKn3ou8IVXsmqnTUAfmTKbKifCdDfF0_fOEMFaJnAgiDjk1yTXwIVhskZCDIWBKverdMtoFZh-7mWB3jVE/s1600/2s.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUp_N64RX2xB_xM6bm7EZ4sfv4QggB26BOR1ONfAvL-GyKTHAqzl48UEIOUkUpY7iQOuqF9LMrqLmPr7DXVjNiJMuaBjqjO7wZAPIIYjTEK7W_vB0OdzVpq7Sl3ZM6ttEyC7p7JLsuVzm2/s1600/1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;display: inline !important; margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;679&quot; data-original-width=&quot;899&quot; height=&quot;301&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUp_N64RX2xB_xM6bm7EZ4sfv4QggB26BOR1ONfAvL-GyKTHAqzl48UEIOUkUpY7iQOuqF9LMrqLmPr7DXVjNiJMuaBjqjO7wZAPIIYjTEK7W_vB0OdzVpq7Sl3ZM6ttEyC7p7JLsuVzm2/s400/1.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;b style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyF-JbBbPVBtfOCCHnAx2W1n6cF5SI7Yengcwgy5Utor0OTVV8zYAGGh5khr8fXxYoAo0-woeONpXFiahLyN5X8nYFIdsUYDRed2W6ZM9HWWhmG5pCsZ9E2alTNPYb6brF79GJmlpb7jPh/s1600/1s.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; display: inline !important; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;b&gt;&lt;/b&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyF-JbBbPVBtfOCCHnAx2W1n6cF5SI7Yengcwgy5Utor0OTVV8zYAGGh5khr8fXxYoAo0-woeONpXFiahLyN5X8nYFIdsUYDRed2W6ZM9HWWhmG5pCsZ9E2alTNPYb6brF79GJmlpb7jPh/s1600/1s.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;677&quot; data-original-width=&quot;898&quot; height=&quot;301&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyF-JbBbPVBtfOCCHnAx2W1n6cF5SI7Yengcwgy5Utor0OTVV8zYAGGh5khr8fXxYoAo0-woeONpXFiahLyN5X8nYFIdsUYDRed2W6ZM9HWWhmG5pCsZ9E2alTNPYb6brF79GJmlpb7jPh/s400/1s.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Весь код:&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;b&gt;#constant width 1280&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;#constant height 720&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;SetWindowSize( width, height, 0 )&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;SetVirtualResolution( width, height )&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;SetSyncRate( 60, 0 )&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;SetScissor( 0,0,0,0 )&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;render_image=CreateRenderImage(width, height, 0, 0 )&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;quad=CreateObjectQuad()&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;shader=LoadFullScreenShader(&quot;shaders/color.ps&quot;)&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;image=LoadImage(&quot;1.jpg&quot;)&amp;nbsp; //любая картинка для теста&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;sprite=CreateSprite(image)&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;DO&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; Update2D(0)&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; SetRenderToImage(render_image,0)&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; ClearScreen()&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; Render()&lt;/b&gt;&lt;br /&gt;
&lt;span style=&quot;white-space: pre;&quot;&gt;&lt;b&gt;  &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp;SetObjectImage( quad, render_image, 0 )&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp;SetObjectShader( quad, shader)&lt;/b&gt;&lt;br /&gt;
&lt;span style=&quot;white-space: pre;&quot;&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp;SetRenderToScreen()&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp;ClearScreen()&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp;DrawObject(quad )&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; Swap()&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;LOOP&lt;/b&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://saigame.blogspot.com/feeds/4944969440505830336/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://saigame.blogspot.com/2018/01/agk-constant-width-1280-constant-height.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/4944969440505830336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/4944969440505830336'/><link rel='alternate' type='text/html' href='http://saigame.blogspot.com/2018/01/agk-constant-width-1280-constant-height.html' title='Подготовка проекта в AGK для использования постобработки'/><author><name>SAI</name><uri>http://www.blogger.com/profile/08535786048263862897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0P2zaM8iKjBPr_lUyb1e_GykLKjwjS6v_XmRs_tgSxmik6XrebzX8m84m1vTjMvT6qhlJC1oPc3m4a9is3LkSqVYiieqc2DOiTKKCkeYeT1tmERQRudi9P9bjex7sJnKE79gx79JE8-sq/s72-c/2s.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5648764027290852710.post-6911277728134650872</id><published>2015-11-26T11:32:00.000-08:00</published><updated>2015-11-26T11:34:38.114-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="АЛГОРИТМЫ"/><title type='text'>Движение объекта по кругу (2D)</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Рассмотрим простой алгоритм движения спрайта по кругу с заданной скоростью и заданным радиусом движения.&lt;br /&gt;
Мы будем использовать две тригонометрические функции: синус и косинус. Синус будет задавать изменение координаты X, а косинус - Y.&lt;br /&gt;
Для примера я взял картинки с игры The Binding of Isaac. В игре мухи &quot;защитные&quot; спутники летают вокруг Айзека по кругу. Сделаем тоже самое и мы!&lt;br /&gt;
В примере будут 3 основных объекта: главный персонаж и две мухи, которые будут летать вокруг него.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6g1FYk2evzws7eaonxvrfgYZREXJy2PWB8QE4c3xGhdx3i7OBftqAexxr8X_YpMsVcSS-J8S89U7JMza4JKXK-2SkJXsfMNbPaOc-_RqzOLiNrxj-a-3j3Gu9bpXA5r1quJkZJxSyUJgq/s1600/Beggar.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6g1FYk2evzws7eaonxvrfgYZREXJy2PWB8QE4c3xGhdx3i7OBftqAexxr8X_YpMsVcSS-J8S89U7JMza4JKXK-2SkJXsfMNbPaOc-_RqzOLiNrxj-a-3j3Gu9bpXA5r1quJkZJxSyUJgq/s1600/Beggar.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZnE2NJ6QzGn-wfwYlkgYhomWLAxfB-xCxeR6qLh2gU6w1wBKi0lwOXJ_zIM6pFrO4hqSvPLX4vRtXZ1A4Mz5jWv4xzkKAHqMKs2dyTi6_Oi8rzbpG1DUdm0CS9mosjrfCiwXRW-KfXvTn/s1600/2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZnE2NJ6QzGn-wfwYlkgYhomWLAxfB-xCxeR6qLh2gU6w1wBKi0lwOXJ_zIM6pFrO4hqSvPLX4vRtXZ1A4Mz5jWv4xzkKAHqMKs2dyTi6_Oi8rzbpG1DUdm0CS9mosjrfCiwXRW-KfXvTn/s1600/2.png&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdlOD7asCD9hGie_TNPs2F1AHUmjJE85ZEWWJr_g3mSQ0QIHn_9Su_2SRBEYoaizjLgoVdMWmwhARR7MkKTmkCd9aiAmyvjM6GoxVxkE2FdXPw5nObT0idwrOJrUTMB0myp17pp9mLFPOh/s1600/1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdlOD7asCD9hGie_TNPs2F1AHUmjJE85ZEWWJr_g3mSQ0QIHn_9Su_2SRBEYoaizjLgoVdMWmwhARR7MkKTmkCd9aiAmyvjM6GoxVxkE2FdXPw5nObT0idwrOJrUTMB0myp17pp9mLFPOh/s1600/1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://drive.google.com/file/d/0B7x8EGscv2M_dWJPTEd6VHpZN1E/view?usp=sharing&quot; style=&quot;text-align: left;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: lime; font-size: large;&quot;&gt;Скачать демонстрацию&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&amp;nbsp;Для начала нужно создать свой тип данных (подобие класса):&lt;br /&gt;
&lt;br /&gt;
Type object &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\\тип данных называем object &amp;nbsp; &amp;nbsp; &lt;br /&gt;
sprite as integer &amp;nbsp; &amp;nbsp; &amp;nbsp; \\номер спрайта&lt;br /&gt;
radius as integer &amp;nbsp; &amp;nbsp; &amp;nbsp; \\радиус круга&lt;br /&gt;
angle as float &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \\угол поворота&lt;br /&gt;
base_x as float &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\\х-координата точки вокруг которой будет летать муха&lt;br /&gt;
base_y as float &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\\у-координата точки вокруг которой будет летать муха&lt;br /&gt;
rotate_speed as float &amp;nbsp; &amp;nbsp; &amp;nbsp;\\скорость движения&lt;br /&gt;
endtype &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\\конец типа данных&lt;br /&gt;
&lt;br /&gt;
Этот тип данных нам нужен для удобства написания игры. Можно, конечно, каждый параметр занести в отдельную переменную, но тогда можно легко запутаться.&lt;br /&gt;
&lt;br /&gt;
Dim object[2] as object &amp;nbsp; \\создаем массив данных под названием object, в котором будет два &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; элемента (можно больше), тип данных указываем наш (object)&lt;br /&gt;
&lt;br /&gt;
Дальше создадим функцию которая будет создавать объект в игре (муху). ID - это номер объекта (у нас будет 1 или 2):&lt;br /&gt;
&lt;br /&gt;
Function CreateObject(ID,x,y,radius,image)&lt;br /&gt;
object[ID].sprite=CreateSprite(image)&lt;br /&gt;
object[ID].base_x=x&lt;br /&gt;
object[ID].base_y=y&lt;br /&gt;
SetSpritePositionByOffset(object[ID].sprite,object[ID].base_x,object[ID].base_y)&lt;br /&gt;
object[ID].radius=radius&lt;br /&gt;
endfunction&lt;br /&gt;
&lt;br /&gt;
И главная функция которая будет делать основную работу:&lt;br /&gt;
&lt;br /&gt;
Function RotateObject(ID)&lt;br /&gt;
object[ID].angle=object[ID].angle+object[ID].rotate_speed&lt;br /&gt;
x#=object[ID].base_x+object[ID].radius*sin(object[ID].angle)&lt;br /&gt;
y#=object[ID].base_y+object[ID].radius*cos(object[ID].angle)&lt;br /&gt;
SetSpritePositionByOffset(object[ID].sprite,x#,y#)&lt;br /&gt;
endfunction&lt;br /&gt;
&lt;br /&gt;
Координату x# определяем основываясь на базовой координате объекта object[ID].base_x и значении object[ID].radius*sin(object[ID].angle). Тоже самое будет и с координатой y#.&lt;br /&gt;
&lt;br /&gt;
Теперь посмотрим весь код целиком:&lt;br /&gt;
&lt;br /&gt;
global screen_x=1280 &amp;nbsp; &amp;nbsp; \\переменная в которой хранится ширина окна&lt;br /&gt;
global screen_y=720 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\\переменная в которой хранится высота окна&lt;br /&gt;
&lt;br /&gt;
SetVirtualResolution(screen_x,screen_y) &amp;nbsp;\\выставляем разрешение окна&lt;br /&gt;
&lt;br /&gt;
LoadImage(1,&quot;1.png&quot;) &amp;nbsp; &amp;nbsp;\\изображение мухи_1&lt;br /&gt;
LoadImage(2,&quot;2.png&quot;) &amp;nbsp; &amp;nbsp;\\муха_2&lt;br /&gt;
LoadImage(3,&quot;3.png&quot;) &amp;nbsp; &amp;nbsp;\\герой (попрошайка)&lt;br /&gt;
LoadImage(4,&quot;4.png&quot;) &amp;nbsp; &amp;nbsp;\\ фон&lt;br /&gt;
&lt;br /&gt;
Type object&lt;br /&gt;
sprite as integer&lt;br /&gt;
radius as integer&lt;br /&gt;
angle as float&lt;br /&gt;
base_x as float&lt;br /&gt;
base_y as float&lt;br /&gt;
rotate_speed as float&lt;br /&gt;
endtype&lt;br /&gt;
&lt;br /&gt;
Dim object[2] as object&lt;br /&gt;
&lt;br /&gt;
CreateObject(1,screen_x/2,screen_y/2,100,1) \\создаем муху_1 в центре экрана&lt;br /&gt;
CreateObject(2,screen_x/2,screen_y/2,300,2) &amp;nbsp;\\создаем муху_2 в центре экрана&lt;br /&gt;
&lt;br /&gt;
object[1].rotate_speed=0.5 &amp;nbsp; \\устанавливаем скорость полета для 1&lt;br /&gt;
object[2].rotate_speed=1 &amp;nbsp; &amp;nbsp; &amp;nbsp;\\устанавливаем скорость полета для 2&lt;br /&gt;
&lt;br /&gt;
CreateSprite(1,3) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \\создаем спрайт героя в центре&lt;br /&gt;
SetSpritePositionByOffset(1,screen_x/2,screen_y/2)&lt;br /&gt;
CreateSprite(2,4) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\\создаем фон&lt;br /&gt;
SetSpritePositionByOffset(2,screen_x/2,screen_y/2)&lt;br /&gt;
SetSpriteDepth(2,16) &amp;nbsp; &amp;nbsp;\\устанавливаем фон на задний план &amp;nbsp;(16 это глубина, по стандарту 10)&lt;br /&gt;
&lt;br /&gt;
DO &amp;nbsp; \\начало цикла&lt;br /&gt;
RotateObject(1) &amp;nbsp;\\двигаем первый объект&lt;br /&gt;
RotateObject(2) &amp;nbsp;\\двигаем второй объект&lt;br /&gt;
&amp;nbsp;Sync() &amp;nbsp;\\обновление экрана&lt;br /&gt;
LOOP \\конец цикла&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////&lt;br /&gt;
Function RotateObject(ID)&lt;br /&gt;
object[ID].angle=object[ID].angle+object[ID].rotate_speed&lt;br /&gt;
x#=object[ID].base_x+object[ID].radius*sin(object[ID].angle)&lt;br /&gt;
y#=object[ID].base_y+object[ID].radius*cos(object[ID].angle)&lt;br /&gt;
SetSpritePositionByOffset(object[ID].sprite,x#,y#)&lt;br /&gt;
endfunction&lt;br /&gt;
///////////////////////////////&lt;br /&gt;
Function CreateObject(ID,x,y,radius,image)&lt;br /&gt;
object[ID].sprite=CreateSprite(image)&lt;br /&gt;
object[ID].base_x=x&lt;br /&gt;
object[ID].base_y=y&lt;br /&gt;
SetSpritePositionByOffset(object[ID].sprite,object[ID].base_x,object[ID].base_y)&lt;br /&gt;
object[ID].radius=radius&lt;br /&gt;
endfunction&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHljnx65dKuRm0CE0xt6Vl4Z8V1ZpvXbx2snImhpGLEt3agqkhXI9u0WFmxJYQkBj3oEUhxXZuluK7S1s2tQxW2h33KdrH7c2RKunE_kOy7aZqWDtPqDWOChHTu9fkY0N9XJS8U27kLOlq/s1600/res1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;225&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHljnx65dKuRm0CE0xt6Vl4Z8V1ZpvXbx2snImhpGLEt3agqkhXI9u0WFmxJYQkBj3oEUhxXZuluK7S1s2tQxW2h33KdrH7c2RKunE_kOy7aZqWDtPqDWOChHTu9fkY0N9XJS8U27kLOlq/s400/res1.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a href=&quot;https://drive.google.com/file/d/0B7x8EGscv2M_dWJPTEd6VHpZN1E/view?usp=sharing&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: lime; font-size: large;&quot;&gt;Скачать демонстрацию&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\&lt;br /&gt;
Если нужно изменить движение в противоположную сторону, меняем в строке&lt;br /&gt;
&amp;nbsp;x#=object[ID].base_x+object[ID].radius*sin(object[ID].angle) &lt;br /&gt;
знак + на -&lt;br /&gt;
&amp;nbsp;x#=object[ID].base_x-object[ID].radius*sin(object[ID].angle)&lt;br /&gt;
Вот и все.&lt;br /&gt;
Код написан в App Game Kit, но реализовать его можно в любой другой программе, главное понять сам принцип.&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://saigame.blogspot.com/feeds/6911277728134650872/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://saigame.blogspot.com/2015/11/2d_26.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/6911277728134650872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/6911277728134650872'/><link rel='alternate' type='text/html' href='http://saigame.blogspot.com/2015/11/2d_26.html' title='Движение объекта по кругу (2D)'/><author><name>SAI</name><uri>http://www.blogger.com/profile/08535786048263862897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6g1FYk2evzws7eaonxvrfgYZREXJy2PWB8QE4c3xGhdx3i7OBftqAexxr8X_YpMsVcSS-J8S89U7JMza4JKXK-2SkJXsfMNbPaOc-_RqzOLiNrxj-a-3j3Gu9bpXA5r1quJkZJxSyUJgq/s72-c/Beggar.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5648764027290852710.post-8464098325121412005</id><published>2015-11-18T11:45:00.000-08:00</published><updated>2015-11-18T11:53:03.338-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="АЛГОРИТМЫ"/><title type='text'>Расстояние до цели (2D)</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;text-align: justify;&quot;&gt;Иногда в своих играх нужно определить расстояние до цели (дальность выстрела, аура, урон и тд). Тогда нужно использовать простейшую формулу с геометрии - теорему Пифагора (сума квадратов катетов прямоугольного треугольника равна квадрату гипотенузы).&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHX98skmdfOHAz_2qPLy_jYA7bEeqU4gONM-WLYsB-ylYTDeqvVA5oP7pPBCbF0oXDRpESSm0qGTL3YZ_RFth5X08WPOWgUr9nyBmPcN0Use63WkrwSF4oGH14GbD6VtFEhtQ3XtVT_zsb/s1600/2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHX98skmdfOHAz_2qPLy_jYA7bEeqU4gONM-WLYsB-ylYTDeqvVA5oP7pPBCbF0oXDRpESSm0qGTL3YZ_RFth5X08WPOWgUr9nyBmPcN0Use63WkrwSF4oGH14GbD6VtFEhtQ3XtVT_zsb/s1600/2.png&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimcRiOyCld7bMP7gOw_xcuAWJ5XvyjCL2igw69dEMDPSbIksOudyxaL9aPpxAKko_R897rXYYs8fTA8fOlZTVQOMC6gHwzyjh2zY2gtdHY84kphlzn9hB9bR3w5yRl24CVCkD9XYDPNTnq/s1600/1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimcRiOyCld7bMP7gOw_xcuAWJ5XvyjCL2igw69dEMDPSbIksOudyxaL9aPpxAKko_R897rXYYs8fTA8fOlZTVQOMC6gHwzyjh2zY2gtdHY84kphlzn9hB9bR3w5yRl24CVCkD9XYDPNTnq/s1600/1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
Нам нужно найти гипотенузу треугольника ( &lt;span style=&quot;color: #6fa8dc;&quot;&gt;с&lt;/span&gt; ). Для этого найдем сначала длину каждого катета. Катет &quot;&lt;span style=&quot;color: red;&quot;&gt;b&lt;/span&gt;&quot; является осью X, поэтому нужно отнять х-координату первой &amp;nbsp;точки от х-координаты второй точки &amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;х&lt;/span&gt;=&lt;span style=&quot;color: red;&quot;&gt;х&lt;/span&gt;2-&lt;span style=&quot;color: red;&quot;&gt;х&lt;/span&gt;1 &amp;nbsp;(или наоборот &lt;span style=&quot;color: red;&quot;&gt;x&lt;/span&gt;=&lt;span style=&quot;color: red;&quot;&gt;х&lt;/span&gt;1-&lt;span style=&quot;color: red;&quot;&gt;х&lt;/span&gt;2, на результат это не повлияет). Катет &quot;&lt;span style=&quot;color: lime;&quot;&gt;а&lt;/span&gt;&quot; это ось Y: &lt;span style=&quot;color: lime;&quot;&gt;y&lt;/span&gt;=&lt;span style=&quot;color: lime;&quot;&gt;y&lt;/span&gt;2-&lt;span style=&quot;color: lime;&quot;&gt;y&lt;/span&gt;1. После этого подносим к квадрату &lt;span style=&quot;color: red;&quot;&gt;x&lt;/span&gt; и &lt;span style=&quot;color: lime;&quot;&gt;y&lt;/span&gt;, суммируем значения и находим корень квадратный. Всё просто :)&lt;/div&gt;
&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
Как это будет выглядеть в &lt;span style=&quot;color: #3d85c6;&quot;&gt;AGK &lt;/span&gt;(напишем функцию):&lt;/div&gt;
&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;Function &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: orange;&quot;&gt;Distance&lt;/span&gt;(&lt;span style=&quot;color: red;&quot;&gt;x&lt;/span&gt;1,&lt;span style=&quot;color: lime;&quot;&gt;y&lt;/span&gt;1,&lt;span style=&quot;color: red;&quot;&gt;x&lt;/span&gt;2,&lt;span style=&quot;color: lime;&quot;&gt;y&lt;/span&gt;2)&lt;/div&gt;
&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;span style=&quot;color: red;&quot;&gt;x&lt;/span&gt;=&lt;span style=&quot;color: red;&quot;&gt;x&lt;/span&gt;2-&lt;span style=&quot;color: red;&quot;&gt;x&lt;/span&gt;1&lt;/div&gt;
&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;span style=&quot;color: lime;&quot;&gt;y&lt;/span&gt;=&lt;span style=&quot;color: lime;&quot;&gt;y&lt;/span&gt;2-&lt;span style=&quot;color: lime;&quot;&gt;y1&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;span style=&quot;color: orange;&quot;&gt;result#&lt;/span&gt;=&lt;span style=&quot;color: #3d85c6;&quot;&gt;Sqrt&lt;/span&gt;(&lt;span style=&quot;color: red;&quot;&gt;x&lt;/span&gt;*&lt;span style=&quot;color: red;&quot;&gt;x&lt;/span&gt;+&lt;span style=&quot;color: lime;&quot;&gt;y&lt;/span&gt;*&lt;span style=&quot;color: lime;&quot;&gt;y&lt;/span&gt;)&lt;/div&gt;
&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;endfunction&lt;/span&gt; &lt;span style=&quot;color: orange;&quot;&gt;result#&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
Sqrt() - корень квадратный&lt;/div&gt;
&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
result# - расстояние (# означает, что это число может быть не целым) &amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
(*На других языках программирования будет практически тоже самое)&lt;/div&gt;
&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
В завершение, как это будет в коде (например):&lt;/div&gt;
&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;If&lt;/span&gt;&lt;span style=&quot;color: orange;&quot;&gt; Distance&lt;/span&gt;(hero_x,hero_y,enemy_x,enemy_y)&amp;lt;100 &lt;span style=&quot;color: #3d85c6;&quot;&gt;then &lt;/span&gt;game_over=1&lt;/div&gt;
&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://saigame.blogspot.com/feeds/8464098325121412005/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://saigame.blogspot.com/2015/11/2d.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/8464098325121412005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/8464098325121412005'/><link rel='alternate' type='text/html' href='http://saigame.blogspot.com/2015/11/2d.html' title='Расстояние до цели (2D)'/><author><name>SAI</name><uri>http://www.blogger.com/profile/08535786048263862897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHX98skmdfOHAz_2qPLy_jYA7bEeqU4gONM-WLYsB-ylYTDeqvVA5oP7pPBCbF0oXDRpESSm0qGTL3YZ_RFth5X08WPOWgUr9nyBmPcN0Use63WkrwSF4oGH14GbD6VtFEhtQ3XtVT_zsb/s72-c/2.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5648764027290852710.post-4617814708564173966</id><published>2013-10-26T02:39:00.000-07:00</published><updated>2013-10-26T03:05:36.488-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="АЛГОРИТМЫ"/><title type='text'>Алгоритм &quot;Сортировка массива&quot;</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
В этой статье я напишу реализацию алгоритма по сортировке массива данных. Этот алгоритм можно использовать для построения списка игроков для таблицы рекордов или для поиска самого сильно (или слабого) врага на уровне и т.д.&lt;/div&gt;
Я буду реализовывать этот алгоритм на &lt;span style=&quot;color: lime;&quot;&gt;IDE AGK&lt;/span&gt; с коментариями каждой строки кода.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;span style=&quot;color: lime;&quot;&gt;DIM&lt;/span&gt; &lt;span style=&quot;color: #6fa8dc;&quot;&gt;number&lt;/span&gt;[100] &lt;span style=&quot;color: #3d85c6;&quot;&gt;as &lt;/span&gt;&lt;span style=&quot;color: lime;&quot;&gt;integer&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;// Создаем пустой массив целых чисел&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: lime;&quot;&gt;for &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;i&lt;/span&gt;=1 &lt;span style=&quot;color: lime;&quot;&gt;to &lt;/span&gt;100&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Начало цикла со счетчиком&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: #6fa8dc;&quot;&gt;number&lt;/span&gt;[&lt;span style=&quot;color: red;&quot;&gt;i&lt;/span&gt;]=&lt;span style=&quot;color: lime;&quot;&gt;random&lt;/span&gt;(1,1000)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Каждому элементу массива присваиваем случайное число от&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; до 1000&lt;br /&gt;
&lt;span style=&quot;color: lime;&quot;&gt;next &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;i&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Конец цикла со счетчиком&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: lime;&quot;&gt;LOOP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;// Начало Игрового цикла&lt;br /&gt;
&lt;span style=&quot;color: lime;&quot;&gt;repeat&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;// Начало цикла с постусловием&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: lime;&quot;&gt;for &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;i&lt;/span&gt;=1 &lt;span style=&quot;color: lime;&quot;&gt;to &lt;/span&gt;99&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: orange;&quot;&gt;done$&lt;/span&gt;=&lt;span style=&quot;color: orange;&quot;&gt;&quot;TRUE&quot;&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Строковой переменной done$ присваиваем значение&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;ИСТИНА&quot; &lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: lime;&quot;&gt;if &lt;/span&gt;&lt;span style=&quot;color: #6fa8dc;&quot;&gt;number&lt;/span&gt;[&lt;span style=&quot;color: red;&quot;&gt;i&lt;/span&gt;]&amp;gt;&lt;span style=&quot;color: #6fa8dc;&quot;&gt;number&lt;/span&gt;[&lt;span style=&quot;color: red;&quot;&gt;i&lt;/span&gt;+1]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; //Проверяем больший следующий элемент массива за&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; предидущий или нет&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: #6fa8dc;&quot;&gt;temp_number&lt;/span&gt;=&lt;span style=&quot;color: #6fa8dc;&quot;&gt;number&lt;/span&gt;[&lt;span style=&quot;color: red;&quot;&gt;i&lt;/span&gt;]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; // Если больший то: переменной  temp_number присваиваем&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; значение элемента массива number[i]&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: #6fa8dc;&quot;&gt;number&lt;/span&gt;[&lt;span style=&quot;color: red;&quot;&gt;i&lt;/span&gt;]=&lt;span style=&quot;color: #6fa8dc;&quot;&gt;number&lt;/span&gt;[&lt;span style=&quot;color: red;&quot;&gt;i&lt;/span&gt;+1]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; // Элементу массива number[i] присваиваем значение&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; следующего элемента number[i+1]&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #6fa8dc;&quot;&gt;number&lt;/span&gt;[&lt;span style=&quot;color: red;&quot;&gt;i&lt;/span&gt;+1]=&lt;span style=&quot;color: #6fa8dc;&quot;&gt;temp_number&lt;/span&gt;&amp;nbsp; // Элементу массива number[i+1] присваиваем значение&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; temp_number&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: orange;&quot;&gt;done$&lt;/span&gt;=&lt;span style=&quot;color: orange;&quot;&gt;&quot;FALSE&quot;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; // Переменной done$ присваиваем значение &quot;ЛОЩЬ&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: lime;&quot;&gt;endif&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: lime;&quot;&gt;next &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;i&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; // Конец цикла со счетчиком&lt;br /&gt;
&lt;span style=&quot;color: lime;&quot;&gt;until &lt;/span&gt;&lt;span style=&quot;color: orange;&quot;&gt;done$&lt;/span&gt;=&lt;span style=&quot;color: orange;&quot;&gt;&quot;TRUE&quot;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; // Проверяем условие цикла: если done$=&quot;ИСТИНА&quot;, то выходим&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; из цикла &lt;br /&gt;
&lt;span style=&quot;color: lime;&quot;&gt;DO&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/span&gt;// Конец игрового цикла&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Если все элементы массива уже упорядочены, то условный оператор &lt;span style=&quot;color: lime;&quot;&gt;IF&amp;nbsp; &lt;/span&gt;не присвоит значение переменной &lt;span style=&quot;color: orange;&quot;&gt;done$&lt;/span&gt;=&lt;span style=&quot;color: orange;&quot;&gt;&quot;FALSE&quot;&lt;/span&gt; и программа выйдет из цикла с постусловием.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Переменная &lt;span style=&quot;color: #6fa8dc;&quot;&gt;temp_number&lt;/span&gt; добавляется в программу для временного хранения элемента массива. Без этой переменной мы просто потеряем значение этого элемента.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
В раздел &quot;АЛГОРИТМЫ&quot; я буду добавлять свою реализацию известных (и не очень) алгоритмом. Следующим я добавлю алгоритм &quot; Поиск пути А* &quot;.&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://saigame.blogspot.com/feeds/4617814708564173966/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://saigame.blogspot.com/2013/10/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/4617814708564173966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/4617814708564173966'/><link rel='alternate' type='text/html' href='http://saigame.blogspot.com/2013/10/blog-post.html' title='Алгоритм &quot;Сортировка массива&quot;'/><author><name>SAI</name><uri>http://www.blogger.com/profile/08535786048263862897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5648764027290852710.post-7859321766795177713</id><published>2013-10-10T02:05:00.002-07:00</published><updated>2013-10-10T02:18:48.924-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Созданные ИГРЫ!!!"/><title type='text'>Round Jumper</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhR922PaD_Qlf4NtfyaA_OBx9g0c-eAwGPSThqyir2tj0hU5pEG7NASrxyU_OHKDkNIulrddqv1csDoJLekbaKCSLilE0KVMFK4nyyXqGfOkVKVRZQHpuM7JClppYkABk2K2QHDXxEKXiwK/s1600/main_ico.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhR922PaD_Qlf4NtfyaA_OBx9g0c-eAwGPSThqyir2tj0hU5pEG7NASrxyU_OHKDkNIulrddqv1csDoJLekbaKCSLilE0KVMFK4nyyXqGfOkVKVRZQHpuM7JClppYkABk2K2QHDXxEKXiwK/s320/main_ico.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
Наконец-то доделал &lt;span style=&quot;color: lime;&quot;&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.sai_games.round_jumper&amp;amp;hl=ru&quot; target=&quot;_blank&quot;&gt;Круглого Прыгуна&lt;/a&gt;&lt;/span&gt; :) Процесс разработки затянулся на полгода с большими перерывами. В игре 50 уровней поделенных на 3 локации.&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuPbklMTZDuOIzhF92WHj81JfuIu-LUb7uDUonZxXidkQuYbxJ8Xdn12DSTGO5LIyfeGAF2Uq1K3pyERiBmWFV7RjyUx8dT2phuuwGKGla1cd0UXjVtbPMRTyd1myRJf82RnSK8HYhxIBS/s1600/Screen_3.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;223&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuPbklMTZDuOIzhF92WHj81JfuIu-LUb7uDUonZxXidkQuYbxJ8Xdn12DSTGO5LIyfeGAF2Uq1K3pyERiBmWFV7RjyUx8dT2phuuwGKGla1cd0UXjVtbPMRTyd1myRJf82RnSK8HYhxIBS/s400/Screen_3.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgATl3H-nm9nxXEu_ovh1Grl0DDCGT0YM_05WIjI0UEinb4uB9vQTOnmEDQIXAy8dF2VQuyeVnrYzNB5_QLtg2g8yvu4DHNGu-BUj4qdTfyp-EanzUboIILxy4h-6y7-P9LUHaNRjz2bdVP/s1600/Screen_2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;224&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgATl3H-nm9nxXEu_ovh1Grl0DDCGT0YM_05WIjI0UEinb4uB9vQTOnmEDQIXAy8dF2VQuyeVnrYzNB5_QLtg2g8yvu4DHNGu-BUj4qdTfyp-EanzUboIILxy4h-6y7-P9LUHaNRjz2bdVP/s400/Screen_2.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&amp;nbsp;В каждой новой локации добавляются новые элементы окружения: телепорты, пушки, привидения, кнопки, движущие стены и тд. Также в игре присутствуют 4 мини-игры, которые становятся доступными после покупки нового уровня героя за &quot;опыт&quot; (ХР) накопленный в игре.&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3AkHEnWqqhCcGizWxfFMYx7Tzje1Q2-m6lvka5Ng4yKZUZPtyQ4qNU3cgVRxtoOsh-mSKshJPoC65-M2OFH3PF92VV6_WdfLP13VC1arnsGklJyn2X94HkToBq5-rPGgAbXVcNV5mfETR/s1600/Screen_5.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;225&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3AkHEnWqqhCcGizWxfFMYx7Tzje1Q2-m6lvka5Ng4yKZUZPtyQ4qNU3cgVRxtoOsh-mSKshJPoC65-M2OFH3PF92VV6_WdfLP13VC1arnsGklJyn2X94HkToBq5-rPGgAbXVcNV5mfETR/s400/Screen_5.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
Также есть достижения. За ХР можно покупать новые предметы (части Прыгуна :) ) в магазине и с них делать своего уникального героя.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRyGWWuUD0Mp0L5HAglbTkHTyk54m-VRlOJ6rongKWNhmdEW-vReZcgI94cmRuydqs2CnvPFU62-zoxNyeWjl6g5forYsYGN9yn_FPZE0bDn6QIYqVIM5kAK669guSb9OjjZ5kVY_fsUtc/s1600/Screen_4.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;225&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRyGWWuUD0Mp0L5HAglbTkHTyk54m-VRlOJ6rongKWNhmdEW-vReZcgI94cmRuydqs2CnvPFU62-zoxNyeWjl6g5forYsYGN9yn_FPZE0bDn6QIYqVIM5kAK669guSb9OjjZ5kVY_fsUtc/s400/Screen_4.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Скоро сделаю бесплатную версию.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.youtube.com/embed/fzJxtPZXYQA?feature=player_embedded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://saigame.blogspot.com/feeds/7859321766795177713/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://saigame.blogspot.com/2013/10/round-jumper.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/7859321766795177713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/7859321766795177713'/><link rel='alternate' type='text/html' href='http://saigame.blogspot.com/2013/10/round-jumper.html' title='Round Jumper'/><author><name>SAI</name><uri>http://www.blogger.com/profile/08535786048263862897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhR922PaD_Qlf4NtfyaA_OBx9g0c-eAwGPSThqyir2tj0hU5pEG7NASrxyU_OHKDkNIulrddqv1csDoJLekbaKCSLilE0KVMFK4nyyXqGfOkVKVRZQHpuM7JClppYkABk2K2QHDXxEKXiwK/s72-c/main_ico.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5648764027290852710.post-2590240396477151653</id><published>2012-10-27T12:16:00.001-07:00</published><updated>2013-10-10T01:39:55.600-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Созданные ИГРЫ!!!"/><title type='text'>Balloons Hunter HD</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4XP_Y7X_5Lu0Kf50whxjLyWr6127MuRYuMCc7Q3ZG91Rslxyo2yGbFgh4lF3wVv0uG4hWbLC_SMx5MRV3h0IhuXKuPkMozzLKF6u-5QjUDo_CPdSLFqDjgRiZg6EMSUG_1nK70KXr62-X/s1600/ico.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4XP_Y7X_5Lu0Kf50whxjLyWr6127MuRYuMCc7Q3ZG91Rslxyo2yGbFgh4lF3wVv0uG4hWbLC_SMx5MRV3h0IhuXKuPkMozzLKF6u-5QjUDo_CPdSLFqDjgRiZg6EMSUG_1nK70KXr62-X/s320/ico.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Вышла новая моя игра для Андроид устройств: &quot;&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.standur_andrey.balloons_hunter&quot;&gt;&lt;span style=&quot;color: #eeeeee;&quot;&gt;Balloons Hunter HD&lt;/span&gt;&lt;/a&gt;&quot;. Игра сделана за 3 дня. В ней есть 3 разных режима игры. В будущем планируется добавить мультиплеер.&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEia9f_K76XMfTqe_TlNSQTNM7O5p5bkOapxWOEaGaroLSPhhrEEFwIe8RON6soRWz8vI668BVCvedUsB_atiYM6fx4l5_QVipzugJN_MNTX0v5yqZ_acC8Z2OpQFw32h0PSWw8wR5bpTN1Z/s1600/AGKSplash.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEia9f_K76XMfTqe_TlNSQTNM7O5p5bkOapxWOEaGaroLSPhhrEEFwIe8RON6soRWz8vI668BVCvedUsB_atiYM6fx4l5_QVipzugJN_MNTX0v5yqZ_acC8Z2OpQFw32h0PSWw8wR5bpTN1Z/s400/AGKSplash.png&quot; width=&quot;223&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Игра вышла в формате HD (разрешение 1280х720). Также в игре используется физический движок Box 2D.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;object class=&quot;BLOGGER-youtube-video&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0&quot; data-thumbnail-src=&quot;http://1.gvt0.com/vi/4eKA74E_570/0.jpg&quot; height=&quot;266&quot; width=&quot;320&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/4eKA74E_570&amp;fs=1&amp;source=uds&quot; /&gt;&lt;param name=&quot;bgcolor&quot; value=&quot;#FFFFFF&quot; /&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot; /&gt;&lt;embed width=&quot;320&quot; height=&quot;266&quot;  src=&quot;http://www.youtube.com/v/4eKA74E_570&amp;fs=1&amp;source=uds&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://saigame.blogspot.com/feeds/2590240396477151653/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://saigame.blogspot.com/2012/10/balloons-hunter-hd.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/2590240396477151653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/2590240396477151653'/><link rel='alternate' type='text/html' href='http://saigame.blogspot.com/2012/10/balloons-hunter-hd.html' title='Balloons Hunter HD'/><author><name>SAI</name><uri>http://www.blogger.com/profile/08535786048263862897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4XP_Y7X_5Lu0Kf50whxjLyWr6127MuRYuMCc7Q3ZG91Rslxyo2yGbFgh4lF3wVv0uG4hWbLC_SMx5MRV3h0IhuXKuPkMozzLKF6u-5QjUDo_CPdSLFqDjgRiZg6EMSUG_1nK70KXr62-X/s72-c/ico.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5648764027290852710.post-4675901753038887509</id><published>2012-10-22T07:09:00.001-07:00</published><updated>2012-10-22T07:22:41.626-07:00</updated><title type='text'>Монетизация своих приложений</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Многие задавались целью монетизации (получения прибили) своих приложений. Давайте рассмотрим несколько вариантов. Итак у нас есть: готовое приложение и желание получить за него деньги. Для начала нужно создать аккаунт разработчика например в Google Play (процедура не сложная но потребует от вас 25$) или в Amazon App Store (регистрация бесплатна, но рынок поменьше) (конечно вы можете продавать диски с приложением в подземном переходе или в школе, но это вам прибыли не принесет).&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;text-align: left;&quot;&gt;Дальше (Google Play), если вы житель &quot;правильной страны&quot;, просто размещаете свое приложение на сайте, устанавливаете цену на приложение и ждете миллионных покупателей:). Но сейчас идет тенденция к получению пользователями приложений и игр бесплатно, тоисть даром!!! Что же делать в таком случае? Есть три варианта выхода из этой ситуации:&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEia1NVvVNHl17UqC_CfAMf36bfNJVo-f6WelssGiW9j5Chr-ejz1IcNbzqwtn5xRVtBsUmTb29Ocz_vvBSVhsBPb1Hmorx_0-0IcdP4QGQKld0o3CKfFJDCSoA_qEIhSgZLV1kyNeJTyT_i/s1600/fundamentalnaja-dilemma-zhizn-korotka-a-deneg-i_1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEia1NVvVNHl17UqC_CfAMf36bfNJVo-f6WelssGiW9j5Chr-ejz1IcNbzqwtn5xRVtBsUmTb29Ocz_vvBSVhsBPb1Hmorx_0-0IcdP4QGQKld0o3CKfFJDCSoA_qEIhSgZLV1kyNeJTyT_i/s1600/fundamentalnaja-dilemma-zhizn-korotka-a-deneg-i_1.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;text-align: left;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;span style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;Раздать свое приложение бесплатно &lt;/span&gt;всем &quot;нуждающимся&quot; и &quot;бедным&quot; :) (самое дешевое устройство с ОС Андроид стоит около 200$) и жить в гармонии с ними и с самим собой:)&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;color: yellow;&quot;&gt;Разместить контекстную рекламу в своем приложении.&lt;/span&gt; Этот вариант неплохой, показы рекламы у вас будут всегда. Но некоторых жителей стран СНГ, реклама слегка раздражает, а некоторых вводит в состояние легкого безумия (в следствии чего они выключают Wi-Fi, мобильный интернет и закрывают дверь на два замка; и как результат ваша прибыль от рекламы неумолимо стремится к НУЛЮ).&amp;nbsp;&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;color: lime;&quot;&gt;Платный контент.&lt;/span&gt; Вы размещаете свое приложение бесплатно, но получаете прибыль от платных примочек к игре или приложению. Например, для того чтобы разблокировать крутую пушку нужно игроку заплатить 1$ (а точнее нажать одну кнопочку; в чем и соль), а чтобы купить крутых патронов к ней нужно заплатить еще 0.01$/шт. Есть куча игр которые пройти без таких &quot;улучшений&quot; просто невозможно. А в некоторых играх даже не указано, что вы покупаете игровую вещь за РЕАЛЬНЫЕ ДЕНЬГИ (я считаю что это уже воровство). Для приложений точно также: делаете, например, виджет быстрого включения&amp;nbsp;
Wi-Fi, мобильного интернета и т.д., а дополнительные включатели делаете платными.&lt;/li&gt;
&lt;/ol&gt;
Всем удачи!!!&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://saigame.blogspot.com/feeds/4675901753038887509/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://saigame.blogspot.com/2012/10/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/4675901753038887509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/4675901753038887509'/><link rel='alternate' type='text/html' href='http://saigame.blogspot.com/2012/10/blog-post.html' title='Монетизация своих приложений'/><author><name>SAI</name><uri>http://www.blogger.com/profile/08535786048263862897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEia1NVvVNHl17UqC_CfAMf36bfNJVo-f6WelssGiW9j5Chr-ejz1IcNbzqwtn5xRVtBsUmTb29Ocz_vvBSVhsBPb1Hmorx_0-0IcdP4QGQKld0o3CKfFJDCSoA_qEIhSgZLV1kyNeJTyT_i/s72-c/fundamentalnaja-dilemma-zhizn-korotka-a-deneg-i_1.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5648764027290852710.post-5384826145248974014</id><published>2012-10-04T09:53:00.000-07:00</published><updated>2012-10-04T11:32:09.364-07:00</updated><title type='text'>Gravity Booster, Google Play и Я :)</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Сегодня я опубликовал мою игру: &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.standur_andrey.gravity_booster&quot;&gt;&lt;span style=&quot;color: lime;&quot;&gt;Gravity Booster&lt;/span&gt;&lt;/a&gt; (&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.standur_andrey.gravity_booster&quot;&gt;&lt;span style=&quot;color: orange;&quot;&gt;Ускоритель Гравитации&lt;/span&gt;&lt;/a&gt;), которую я сделал за 2 месяца (с очень большими перерывами:). Игра разрабатывалась как коммерческий&amp;nbsp;проект, но не судьба :(, украинцам нельзя продавать свои приложения на Google Play, поэтому игру размещаю совершенно бесплатно (с рекламой). Если проект себя хоть немного окупит, то будут выходить обновления и дополнения к нему (несколько новых уровней каждую неделю или месяц (все зависит от пользователей:) ).&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtlGuRG4noXO3Eltg3gyP65qeQJElqevrmqoGQgsTGdE1dMvNZZaL1Zn_eMiQJGvHFQpKNn8EnDcn2VVMxY8f9QZkgtSiM1-vr8mWRigX_0UvXM3dFmeON10JPh8i0TriCuEhuV2HM9mjK/s1600/1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtlGuRG4noXO3Eltg3gyP65qeQJElqevrmqoGQgsTGdE1dMvNZZaL1Zn_eMiQJGvHFQpKNn8EnDcn2VVMxY8f9QZkgtSiM1-vr8mWRigX_0UvXM3dFmeON10JPh8i0TriCuEhuV2HM9mjK/s1600/1.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Игра пока не в HD формате, но если будут просьбы, то это можно организовать. Можете писать &amp;nbsp;в комментариях или мне на почтовый ящик свои пожелания, просьбы и жалобы к игре. Присылайте свои эскизы уровней для &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.standur_andrey.gravity_booster&quot;&gt;&lt;span style=&quot;color: lime;&quot;&gt;Gravity Booster&lt;/span&gt;&lt;/a&gt; мне на почту &lt;span style=&quot;color: orange;&quot;&gt;standur.andrey@gmail.com &lt;/span&gt;(самые&amp;nbsp;интересные я обязательно сделаю и добавлю в ближайших обновлениях с указанием имени авторов уровней).&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
В следующих сообщениях я напишу о социальном проекте, который я планирую сделать в ближайшем будущем. &amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://saigame.blogspot.com/feeds/5384826145248974014/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://saigame.blogspot.com/2012/10/gravity-booster-google-play.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/5384826145248974014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/5384826145248974014'/><link rel='alternate' type='text/html' href='http://saigame.blogspot.com/2012/10/gravity-booster-google-play.html' title='Gravity Booster, Google Play и Я :)'/><author><name>SAI</name><uri>http://www.blogger.com/profile/08535786048263862897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtlGuRG4noXO3Eltg3gyP65qeQJElqevrmqoGQgsTGdE1dMvNZZaL1Zn_eMiQJGvHFQpKNn8EnDcn2VVMxY8f9QZkgtSiM1-vr8mWRigX_0UvXM3dFmeON10JPh8i0TriCuEhuV2HM9mjK/s72-c/1.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5648764027290852710.post-2248534986010563609</id><published>2012-08-31T05:08:00.000-07:00</published><updated>2013-10-10T01:39:55.599-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Созданные ИГРЫ!!!"/><title type='text'>Funny Numbers</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Итак, следующая игра сделана!!! Это был мой старый проект, который я возродил. Портирование (+ полная перерисовка графики) на платформу Android заняло приблизительно 1 день. Игра называется Funny Numbers и уже доступна на Google Play (&amp;nbsp;&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.standur_andrey.funny_numbers&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;Funny Numbers HD&lt;/span&gt;&lt;/a&gt;&amp;nbsp;) бесплатно.&amp;nbsp;Поддерживается,&amp;nbsp;пока что, только один язык: Английский, но там и так все интуитивно понятно. Сначала выбираем максимальный множитель (до 5, до 7 или до 10) затем выбираем количество заданий (5 или 10). Сама игра представляет собой обучающую игру, которая поможет изучить таблицу умножения детям (и взрослым). &amp;nbsp;Первая версия игры (1.0.0) не содержит рекламы.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Вот скрины игры:&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhriqYIH5OBNvThiBSG2oQ94JAo0kWX6t3UPciQtLeXzmeuH8nfcEqx52cvvnv-4LJG4ZRNYoo3JqtLjd4cSC4a5tlFGlZ6riM7pOB4dMvGfPEiWiTulq0IM4RGKCiVmSygTexNxPG0KxV-/s1600/promo2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;195&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhriqYIH5OBNvThiBSG2oQ94JAo0kWX6t3UPciQtLeXzmeuH8nfcEqx52cvvnv-4LJG4ZRNYoo3JqtLjd4cSC4a5tlFGlZ6riM7pOB4dMvGfPEiWiTulq0IM4RGKCiVmSygTexNxPG0KxV-/s400/promo2.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAm37A2_6kNFbrZ2neDatLW5GYsZ1UfKRg-MfWOfRRsOCw7sK8tpl9azhDs_Fz5X1-38Zxxt7ouJAi_QP6deO_ir3V3VuD6Bg_5qF51hTRtbWYDFCtrd4SZUOBBqe3rWGK-loiFnwye6Bm/s1600/screen2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;225&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAm37A2_6kNFbrZ2neDatLW5GYsZ1UfKRg-MfWOfRRsOCw7sK8tpl9azhDs_Fz5X1-38Zxxt7ouJAi_QP6deO_ir3V3VuD6Bg_5qF51hTRtbWYDFCtrd4SZUOBBqe3rWGK-loiFnwye6Bm/s400/screen2.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://saigame.blogspot.com/feeds/2248534986010563609/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://saigame.blogspot.com/2012/08/funny-numbers.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/2248534986010563609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/2248534986010563609'/><link rel='alternate' type='text/html' href='http://saigame.blogspot.com/2012/08/funny-numbers.html' title='Funny Numbers'/><author><name>SAI</name><uri>http://www.blogger.com/profile/08535786048263862897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhriqYIH5OBNvThiBSG2oQ94JAo0kWX6t3UPciQtLeXzmeuH8nfcEqx52cvvnv-4LJG4ZRNYoo3JqtLjd4cSC4a5tlFGlZ6riM7pOB4dMvGfPEiWiTulq0IM4RGKCiVmSygTexNxPG0KxV-/s72-c/promo2.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5648764027290852710.post-2399678819883266696</id><published>2012-08-27T07:17:00.000-07:00</published><updated>2012-08-27T07:24:39.903-07:00</updated><title type='text'>Интересные факты об Андроид</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Знаете ли вы что:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Первое устройство, которое использовало ОС Android, было создано компанией  HTC. Это был смартфон T-Mobile G1 (его презентация состоялась 23 сентября 2008 года).&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Первая стабильная версия системы Андроид называлась: Android 1.0 &quot;Apple Pie&quot;.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Android 4.0 Ice Cream Sandwich получила золото за лучшую платформу на 2012 User Experience Awards.&amp;nbsp;&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Специально для платформы Android было создано семейство шрифтов Droid и Roboto.&amp;nbsp;&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;По данным на февраль 2011 года устройства с ОС Android  лидировали в списке самых популярных смартфонов Великобритании, оставив позади iPhone 4 c iOS.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQXukPxiVoBqdpL8-f_K6qMRdCOt0xvJM1kEEZi4vmHiv8UpSyZEux4m06WsSPCT73r82yE5F3RqzgS57mYrbIR0tYygU49K3kN04kYlHDumzMksjQxbEu1VZwwVUeOx0HddLFKjVhKBvQ/s1600/123.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;250&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQXukPxiVoBqdpL8-f_K6qMRdCOt0xvJM1kEEZi4vmHiv8UpSyZEux4m06WsSPCT73r82yE5F3RqzgS57mYrbIR0tYygU49K3kN04kYlHDumzMksjQxbEu1VZwwVUeOx0HddLFKjVhKBvQ/s400/123.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://saigame.blogspot.com/feeds/2399678819883266696/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://saigame.blogspot.com/2012/08/blog-post_27.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/2399678819883266696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/2399678819883266696'/><link rel='alternate' type='text/html' href='http://saigame.blogspot.com/2012/08/blog-post_27.html' title='Интересные факты об Андроид'/><author><name>SAI</name><uri>http://www.blogger.com/profile/08535786048263862897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQXukPxiVoBqdpL8-f_K6qMRdCOt0xvJM1kEEZi4vmHiv8UpSyZEux4m06WsSPCT73r82yE5F3RqzgS57mYrbIR0tYygU49K3kN04kYlHDumzMksjQxbEu1VZwwVUeOx0HddLFKjVhKBvQ/s72-c/123.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5648764027290852710.post-7520039195968282044</id><published>2012-08-27T02:32:00.000-07:00</published><updated>2012-08-27T05:03:44.289-07:00</updated><title type='text'>Топ 3 лучших игр для Андроид</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Игры для мобильных телефонов отличаются выразительной графикой, занятным геймплеем и веселым музыкальным оформлением. Я предлагаю вашему вниманию лучшие 3 на мой взгляд игры для Андроид.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: lime;&quot;&gt;1. Angry Birds&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Замечательная игра о птичках и неоспоримый лидер среди мобильных игр (и не только). В которой нужно очистить уровень от зеленых свиней, используя суперспособности каждой&amp;nbsp;птицы.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3CjBxdSEXCM1GS2D0EIpCbdu-WK6BnlUFqCmSrVeOHvWOtlXbdj5PtesXDMfGB38DnmXdUp4uHvFxKAVbJ6QyBB4nWMBfIpX-Fnjm3mMaQOnIWuEc2XeKtrRXVtKQEcx1eStupVqjG0I3/s1600/angry.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3CjBxdSEXCM1GS2D0EIpCbdu-WK6BnlUFqCmSrVeOHvWOtlXbdj5PtesXDMfGB38DnmXdUp4uHvFxKAVbJ6QyBB4nWMBfIpX-Fnjm3mMaQOnIWuEc2XeKtrRXVtKQEcx1eStupVqjG0I3/s400/angry.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;color: lime;&quot;&gt;2. Minecraft&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Еще одна&amp;nbsp;гениально простая, которая на сегодняшний день уже заработала около 50$&amp;nbsp;миллионов&amp;nbsp;на Google Play. В игре нету ни супер современной графики, ни интригующего сюжета, но все-таки в ней есть то, что крайне необходимо всем мобильным играм: захватывающий геймплей. Казалось бы что ничего кардинально нового уже придумать невозможно, но Minecraft доказывает, что это не так.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGX9M71znz9OGcGn9O1usFIsbOKrdzQ7pZXbtJWMf87f3Qr6BolGO8QUGl1pCjSFHFf5-PDKV3JA0nK5flaH3iZxvZRL-bawQEvb9UGD9a5sC4Q-zdKjV270SPun-70Py9wuN42nIIphr_/s1600/11.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGX9M71znz9OGcGn9O1usFIsbOKrdzQ7pZXbtJWMf87f3Qr6BolGO8QUGl1pCjSFHFf5-PDKV3JA0nK5flaH3iZxvZRL-bawQEvb9UGD9a5sC4Q-zdKjV270SPun-70Py9wuN42nIIphr_/s1600/11.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;color: lime;&quot;&gt;3. Ninja Chicken&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Еще один яркий представитель игровой индустрии. Занятный геймплей, симпатичная графика и веселая музыка не позволят вам заскучать. А уровни которые генерируются случайным образом можно проходить по несколько раз.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBjaEBzczu8u8Mg36ZR1xcXzpeW0mtz0wbrLoYbKSKJArTKkuIuiU9XGtgmfVATmRN0jfNTZwqM45LNgBhFx-Qmp7mqGQJmWUQR77PxiO765pspRZJkjYxe_Bc3mDXLuyA7lijCo6GhtEG/s1600/12.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBjaEBzczu8u8Mg36ZR1xcXzpeW0mtz0wbrLoYbKSKJArTKkuIuiU9XGtgmfVATmRN0jfNTZwqM45LNgBhFx-Qmp7mqGQJmWUQR77PxiO765pspRZJkjYxe_Bc3mDXLuyA7lijCo6GhtEG/s1600/12.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://saigame.blogspot.com/feeds/7520039195968282044/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://saigame.blogspot.com/2012/08/3_27.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/7520039195968282044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/7520039195968282044'/><link rel='alternate' type='text/html' href='http://saigame.blogspot.com/2012/08/3_27.html' title='Топ 3 лучших игр для Андроид'/><author><name>SAI</name><uri>http://www.blogger.com/profile/08535786048263862897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3CjBxdSEXCM1GS2D0EIpCbdu-WK6BnlUFqCmSrVeOHvWOtlXbdj5PtesXDMfGB38DnmXdUp4uHvFxKAVbJ6QyBB4nWMBfIpX-Fnjm3mMaQOnIWuEc2XeKtrRXVtKQEcx1eStupVqjG0I3/s72-c/angry.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5648764027290852710.post-8116241298935804949</id><published>2012-08-27T01:44:00.000-07:00</published><updated>2012-08-27T06:43:32.361-07:00</updated><title type='text'>Теория и практика создания игр (часть 5)</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div&gt;
Итак мы на финишной прямой, сейчас мы рассмотрим последние этапы создания игры:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
9. Запись звука и музыки.&lt;br /&gt;
10. Устранение багов и лагов игры.&lt;br /&gt;
11. Создание релизной версии продукта.&lt;br /&gt;
&lt;ol&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;span style=&quot;color: lime;&quot;&gt;9. Запись звука и музыки.&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Как ни странно, но для меня этот этап стал самым сложным. Самое сложное это найти подходящие звуки для игры, у крупных фирм конечно есть уже готовые наборы звуков (или для них их записывают&amp;nbsp;коммерческие&amp;nbsp;студии), а вот простому программисту (или художнику) нужно постараться, чтобы записать все в домашних условиях. Для записи звуков нужно использовать качественный микрофон, чтобы&amp;nbsp;не было&amp;nbsp;шумов и щелчков. Формат звуков для Андроид - WAV. Насчет других не экспериментировал. С музыкой дела&amp;nbsp;обстоят проще&amp;nbsp;(хотя кому как), у меня есть небольшой опыт написания не очень сложных музыкальных композиций. У кого есть возможность (таких очень мало), лучше пишите все в живую (гитара, ударные , синтезатор, бас), у кого нету - используйте редакторы (например FL Studio), которых сейчас предостаточно. Конечно если у вас есть знакомый композитор, то попросите его написать музыку, которая будет передавать атмосферу игры (вспомните такие игры: FlatOut 2, PainKiller; какая там музыка!!! и как хорошо она&amp;nbsp;вписывается&amp;nbsp;в игру; хотя есть много игр в которых есть легкая незаметная мелодичная музыка, которая передает много эмоций).&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: lime;&quot;&gt;10. Устранение багов и лагов игры.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;text-align: left;&quot;&gt;Предпоследним этапом разработки игры есть этап окончательного устранения ошибок в коде (код и сама игра должны быть идеальными, ну или почти такими). Качественный продукт не вызывает у покупателей агрессию (претензии) &amp;nbsp;к разработчикам. Игра должна быть проходимой и не должна зависать. Частые ошибки которые могут возникать в игре из-за не обнуления констант или не присвоения им определенного значения. Также игра может не&amp;nbsp;корректно&amp;nbsp;работать, если вы не выгрузили из памяти предыдущий игровой уровень.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;color: lime;&quot;&gt;&lt;span style=&quot;text-align: left;&quot;&gt;11.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: left;&quot;&gt;Создание релизной версии продукта.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;text-align: left;&quot;&gt;Если вы все-таки решились писать на AGK, то разработчики этого интерпретатора выложили двухчасовое руководство по созданию полнофункционального приложения для Android.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;text-align: left;&quot;&gt;Вот оно:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;object class=&quot;BLOGGER-youtube-video&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0&quot; data-thumbnail-src=&quot;http://1.gvt0.com/vi/486_IkF-Al0/0.jpg&quot; height=&quot;266&quot; width=&quot;320&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/486_IkF-Al0&amp;fs=1&amp;source=uds&quot; /&gt;&lt;param name=&quot;bgcolor&quot; value=&quot;#FFFFFF&quot; /&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot; /&gt;&lt;embed width=&quot;320&quot; height=&quot;266&quot;  src=&quot;http://www.youtube.com/v/486_IkF-Al0&amp;fs=1&amp;source=uds&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
Более детальное описание технической стороны создания приложений (игр) я напишу в следующих сообщениях (или новом блоге).
&lt;br /&gt;
&lt;br /&gt;
Оставляйте комментарии, спрашивайте.&lt;br /&gt;
&lt;br /&gt;
По поводу других методов создания приложения я пока ничего сказать не могу, буду изучать и напишу о них в будущем (надеюсь недалеком и светлом:).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://saigame.blogspot.com/2012/08/1.html&quot;&gt;Теория и практика создания игр (часть 1)&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://saigame.blogspot.com/2012/08/2.html&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;Теория и практика создания игр (часть 2)&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://saigame.blogspot.com/2012/08/3.html&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;Теория и практика создания игр (часть 3)&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span style=&quot;color: #999999;&quot;&gt;&lt;a href=&quot;http://saigame.blogspot.com/2012/08/4.html&quot;&gt;Теория и практика создания игр (часть 4)&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://saigame.blogspot.com/2012/08/gravity-booster.html&quot;&gt;Gravity Booster&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://saigame.blogspot.com/feeds/8116241298935804949/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://saigame.blogspot.com/2012/08/5.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/8116241298935804949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/8116241298935804949'/><link rel='alternate' type='text/html' href='http://saigame.blogspot.com/2012/08/5.html' title='Теория и практика создания игр (часть 5)'/><author><name>SAI</name><uri>http://www.blogger.com/profile/08535786048263862897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5648764027290852710.post-6938315352123647775</id><published>2012-08-27T00:37:00.001-07:00</published><updated>2012-08-27T06:43:17.544-07:00</updated><title type='text'>Теория и практика создания игр (часть 4)</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div&gt;
Продолжим рассмотрение этапов создания игры:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
6. Программирование игровой логики (бета-версия).&lt;/div&gt;
7. Создание и подгонка уровней для игры.&lt;br /&gt;
8. Оптимизация программного кода игры.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: lime;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: lime;&quot;&gt;6. Программирование игровой логики (бета-версия).&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Допустим у нас уже есть&amp;nbsp;хотя бы&amp;nbsp;один игровой уровень определенного формата (желательно формат не менять на протяжении всей разработки, а продумать его сразу). Теперь нам нужно написать само ядро игры (движок), которое будет работать обрабатывать все элементы игры: логику, прорисовку, звуки и т.д.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Сейчас я вам приведу пример структуры ядра моей игры Gravity Booster:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
1) Установка параметров системы (разрешение экрана, скорость обновления игры, загрузка CPU, параметры очистки экрана, параметры связанные с качеством физики в игре).&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
2) Загрузка всех медиафайлов игры (картинки, музыка, звуки и возможно уровни).&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Если файлов очень много, то лучше всего этот процесс автоматизировать. Вот пример кода на App Game Kit (это моя основная среда разработки):&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;span style=&quot;color: #6fa8dc;&quot;&gt;for&lt;/span&gt; i=1 &lt;span style=&quot;color: #6fa8dc;&quot;&gt;to &lt;/span&gt;100&lt;br /&gt;
&amp;nbsp; &amp;nbsp; mediafile$=&lt;span style=&quot;color: red;&quot;&gt;&quot;image/objects/&quot;+str(i)+&quot;.png&quot;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #6fa8dc;&quot;&gt;if GetFileExists&lt;/span&gt;(mediafile$)=1&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #6fa8dc;&quot;&gt;LoadImage&lt;/span&gt;(i,mediafile$)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #6fa8dc;&quot;&gt;endif&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #6fa8dc;&quot;&gt;next&lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt; &lt;/span&gt;i&lt;br /&gt;
&lt;br /&gt;
Этот код можно еще упростить, если убрать проверку на существования файла.&lt;br /&gt;
Вот собственно и сама среда разработки (AGK):&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPrQCrnnDs932LhShTQxE3AlamwxwH_2Y21wNYeLvpgkF1XeJsqpBTmIUv34-HT-jNd9DH6JdovQPCTQU1j_9dGH6e-7SDbFzyCGsh5TEaBbUGJ1VKy6yJgFyLDpN9UnKJz0jK7QRGJpIj/s1600/5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;241&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPrQCrnnDs932LhShTQxE3AlamwxwH_2Y21wNYeLvpgkF1XeJsqpBTmIUv34-HT-jNd9DH6JdovQPCTQU1j_9dGH6e-7SDbFzyCGsh5TEaBbUGJ1VKy6yJgFyLDpN9UnKJz0jK7QRGJpIj/s400/5.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
3) Создание основного цикла игры. Он будет выглядеть примерно так:&lt;br /&gt;
&amp;nbsp; &amp;nbsp;а) проверка на прикосновение к экрану;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;б) обработка меню;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;в) загрузка и выгрузка уровней;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;г) сохранение настроек и игрового прогресса;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;д) обработка геймплея (проверка на выигрыш и&amp;nbsp;проигрыш);&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Желательно писать основной цикл не сплошным кодом, а разбить его на отдельные процедуры. Пример основного цикла с&amp;nbsp;Gravity Booster `a:&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: lime;&quot;&gt;DO&lt;/span&gt;&lt;br /&gt;
nowtime=&lt;span style=&quot;color: #6fa8dc;&quot;&gt;GetSeconds()&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
TouchX=&lt;span style=&quot;color: #6fa8dc;&quot;&gt;Round&lt;/span&gt;(GetPointerX())&lt;br /&gt;
TouchY=&lt;span style=&quot;color: #6fa8dc;&quot;&gt;Round&lt;/span&gt;(GetPointerY())&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;gosub &lt;/span&gt;_touch &amp;nbsp; &amp;nbsp;// процедура проверки прикосновений к экрану&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;gosub &lt;/span&gt;_check_menu &amp;nbsp; // &amp;nbsp;основная процедура игры которая управляет остальными процедурами&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #6fa8dc;&quot;&gt;if GetRawKeyState&lt;/span&gt;(27)=1 &lt;span style=&quot;color: #6fa8dc;&quot;&gt;then exit&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;if&lt;/span&gt; stop_game=1 &lt;span style=&quot;color: #6fa8dc;&quot;&gt;then exit&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #6fa8dc;&quot;&gt;&amp;nbsp;Sync()&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: lime;&quot;&gt;LOOP&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Хотя основной цикл игры очень маленький, но за процедурой&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;gosub&amp;nbsp;&lt;/span&gt;_check_menu &amp;nbsp;скрываются около 1000 строк программного кода. В свою очередь эта процедура разбита еще на 10 меньших процедур.&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
4) Тестирование кода (бета-версии) игры. Исправление явных ошибок в коде (частые вылеты с игры, зависания). Если вы писали исходный код очень аккуратно, то вам может и не понадобится исправлять ошибки, но тестировать игру нужно&amp;nbsp;по любому (чем чаще - тем лучше).&lt;/div&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: lime;&quot;&gt;&amp;nbsp;7.&amp;nbsp;&lt;span style=&quot;text-align: left;&quot;&gt;Создание и подгонка уровней для игры.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Я делал&amp;nbsp;&lt;span style=&quot;text-align: justify;&quot;&gt;Gravity Booster `a для разрешения экрана телефона &amp;nbsp;960х640 (чем больше разрешение тем четче будет изображение на экране), но оказалось что мой телефон не может загрузить много изображений в таком разрешении (родное разрешение экрана моего Андроид &amp;nbsp;телефона 480х320). Поэтому мне пришлось переделывать свой редактор и создавать уровни заново под разрешение 480х320. Если бы я делал это в блокноте, возможно я бы никогда не доделал игру:)&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;text-align: justify;&quot;&gt;Создание уровней это процесс творческий и здесь посоветовать мало что можно, но есть несколько рекомендаций:&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;text-align: justify;&quot;&gt;1) делайте уровни по принципу от простых к сложным,&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;text-align: justify;&quot;&gt;2) постарайтесь (но не в ущерб производительности) добавить красочные декорации,&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;text-align: justify;&quot;&gt;3) уровни должны быть уникальны и по своему&amp;nbsp;запоминающимися,&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;text-align: justify;&quot;&gt;4) старайтесь размещать динамические объекты так, чтобы они не пересекались.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;text-align: justify;&quot;&gt;5) по мере прохождения добавляйте новые элементы в игру (чтобы геймплей не надоедал).&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;color: lime;&quot;&gt;&lt;span style=&quot;text-align: justify;&quot;&gt;8.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: left;&quot;&gt;Оптимизация программного кода игры.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;text-align: left;&quot;&gt;После создания всех уровней, попробуйте пройти их все в своей игре (по несколько раз). Иногда баги выплывают именно во время прохождения уровней. Если у ваших родных или близких есть Андроид устройства, то попросите их стать вашими&amp;nbsp;тестерами&amp;nbsp;игры (чем больше людей протестирует вашу игру тем большей будет ваша уверенность в ее стабильности). Иногда во время тестирования уровней может оказаться, что некоторые из них очень &quot;тормозят&quot;. Причиной может быть два фактора:&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;text-align: left;&quot;&gt;1)&amp;nbsp;количество объектов на экране,&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;text-align: left;&quot;&gt;2) код не оптимизирован или использует много &quot;медленных&quot; команд.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;text-align: left;&quot;&gt;С первой причиной можно разобраться очень быстро, а вот решение второй может занять много времени. Особенно если нельзя упростить код или убрать команды, которые потребляют много ресурсов. Поэтому мой вам совет: постарайтесь еще на первом этапе создания игры продумать возможные программные реализации вашей игры. Также постарайтесь делать код максимально &quot;легким&quot;, чтобы за один такт выполнялось как можно меньше строк кода. Более &amp;nbsp;детально об оптимизации программного кода я буду писать в моих следующих сообщениях.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Вот так, например, выглядит проверка на прикосновение динамического объекта ко льду в моей игре (я думаю оптимизировать эту часть уже больше некуда:) &amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBIby1MuG5lnDL4pj70wfaUzenSI_B3VwLGMu35yzo_1oZo1Gxmijp08gqmSL7d1m37Qg7xIaWFJVi-_IBQZd63PIpkvfV4YElLY_tUjAmRCG61rCE40-z0ZPaB4hrnrNB7IraD83axhm2/s1600/6.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;137&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBIby1MuG5lnDL4pj70wfaUzenSI_B3VwLGMu35yzo_1oZo1Gxmijp08gqmSL7d1m37Qg7xIaWFJVi-_IBQZd63PIpkvfV4YElLY_tUjAmRCG61rCE40-z0ZPaB4hrnrNB7IraD83axhm2/s400/6.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://saigame.blogspot.com/2012/08/1.html&quot;&gt;Теория и практика создания игр (часть 1)&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://saigame.blogspot.com/2012/08/2.html&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;Теория и практика создания игр (часть 2)&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://saigame.blogspot.com/2012/08/3.html&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;Теория и практика создания игр (часть 3)&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://saigame.blogspot.com/2012/08/5.html&quot;&gt;Теория и практика создания игр (часть 5)&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://saigame.blogspot.com/feeds/6938315352123647775/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://saigame.blogspot.com/2012/08/4.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/6938315352123647775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/6938315352123647775'/><link rel='alternate' type='text/html' href='http://saigame.blogspot.com/2012/08/4.html' title='Теория и практика создания игр (часть 4)'/><author><name>SAI</name><uri>http://www.blogger.com/profile/08535786048263862897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPrQCrnnDs932LhShTQxE3AlamwxwH_2Y21wNYeLvpgkF1XeJsqpBTmIUv34-HT-jNd9DH6JdovQPCTQU1j_9dGH6e-7SDbFzyCGsh5TEaBbUGJ1VKy6yJgFyLDpN9UnKJz0jK7QRGJpIj/s72-c/5.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5648764027290852710.post-2390415237722905868</id><published>2012-08-26T22:53:00.000-07:00</published><updated>2012-08-27T06:43:06.173-07:00</updated><title type='text'>Теория и практика создания игр (часть 3)</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Продолжим рассмотрение этапов создания игры:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
4. Разработка редактора уровней.&lt;br /&gt;
5. Рисование всех графических элементов.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: lime;&quot;&gt;4. Разработка редактора уровней.&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
В принципе этот этап можно и вообще пропустить, если ваша игра будет генерировать сама уровни или будет состоять всего из одной локации (например стрельба из лука, футбольный симулятор). Конечно можно использовать и обычный Блокнот, но написание уровней (+ их редактирование) займет много времени, особенно если уровней 50 или 100+. Также можно использовать растровый графический редактор (суть метода в том, что мы рисуем уровень, где каждый пиксель обозначает определенный объект или его отсутствие на уровне), но это уже другая история, так как работа с данными графического объекта подразумевает использование низкоуровневого языка программирования (или использование готовых кодов для определенного формата рисунка).&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Дальше я приведу пример моего редактора уровней для Gravity Booster`a и самих уровней.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Вот так выглядит сам редактор уровней:&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnv-Wo21OOXrUgn41aZ5X3AcWDQnaeRA9vhKYKaRg__dbbsvjELLS1Cl-SV3AzEwOrqjei46FFZjQ2Zo5tvhL6c2nSZ3IzsAFnhS0qm0WZun4Bs7YmnDqF_9jNNf9xtP1llMoqom7FleD8/s1600/3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;252&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnv-Wo21OOXrUgn41aZ5X3AcWDQnaeRA9vhKYKaRg__dbbsvjELLS1Cl-SV3AzEwOrqjei46FFZjQ2Zo5tvhL6c2nSZ3IzsAFnhS0qm0WZun4Bs7YmnDqF_9jNNf9xtP1llMoqom7FleD8/s400/3.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Справа сверху сама игровая область на которую мы и размещаем наши объекты. Все объекты (рисунки) загружаются с папки и размещаются в правом верхнем углу экрана. Внизу находятся разные параметры игры и объектов (от номера уровня до типа гравитации на нем). Все очень просто, но реализация такого редактора требует времени и терпения.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Дальше я приведу пример самого уровня ( как он выглядит в файле):&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;///// Начало&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
1:1:1&lt;br /&gt;
100&lt;br /&gt;
0&lt;br /&gt;
100:309:20.000000:22.000000:0.000000:0.400000:15:2:3:2&lt;br /&gt;
101:319:52.000000:6.000000:0.000000:0.500000:15:1:2:2&lt;br /&gt;
102:310:373.000000:255.000000:0.000000:0.900000:16:1:2:4&lt;br /&gt;
103:319:36.000000:111.000000:90.000000:0.400000:15:1:2:2&lt;br /&gt;
104:319:106.000000:34.000000:0.000000:0.500000:15:1:2:2&lt;br /&gt;
105:318:86.000000:125.000000:45.000000:0.400000:15:1:2:2&lt;br /&gt;
106:319:219.000000:202.000000:0.000000:0.400000:15:1:2:2&lt;br /&gt;
107:319:106.000000:242.000000:90.000000:0.500000:15:1:2:2&lt;br /&gt;
108:320:360.000000:247.000015:0.000000:0.400000:15:1:2:2&lt;br /&gt;
109:320:415.000000:144.000000:90.000000:0.600000:15:1:2:2&lt;br /&gt;
110:318:150.000000:153.000000:0.000000:0.500000:15:1:2:2&lt;br /&gt;
111:319:152.000000:3.000000:90.000000:0.400000:15:1:2:2&lt;br /&gt;
112:319:51.000000:199.000000:0.000000:0.500000:15:1:2:2&lt;br /&gt;
113:319:292.000000:75.000000:21.000000:0.500000:15:1:2:2&lt;br /&gt;
114:319:195.000000:52.000000:45.000000:0.600000:15:1:2:2&lt;br /&gt;
115:318:320.000000:52.000000:0.000000:1.000000:15:1:2:2&lt;br /&gt;
116:317:238.000000:7.000000:0.000000:0.500000:15:1:2:2&lt;br /&gt;
117:319:106.000000:160.000000:90.000000:0.400000:15:1:2:2&lt;br /&gt;
118:318:208.000000:279.000000:0.000000:0.600000:15:1:2:2&lt;br /&gt;
119:317:247.000000:162.000000:45.000000:0.500000:15:1:2:2&lt;br /&gt;
120:319:166.000000:194.000000:-90.000000:0.500000:15:1:2:2&lt;br /&gt;
121:320:320.000000:173.000000:39.000000:0.600000:15:1:2:2&lt;br /&gt;
122:301:0.000000:6.000000:0.000000:0.700000:14:1:3:1&lt;br /&gt;
123:301:70.000000:204.000000:0.000000:1.000000:14:1:3:1&lt;br /&gt;
124:301:391.000000:11.000000:0.000000:1.000000:14:1:3:1&lt;br /&gt;
125:301:396.000000:95.000000:0.000000:1.000000:14:1:3:1&lt;br /&gt;
126:301:222.000000:79.000000:0.000000:1.000000:14:1:3:1&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: red;&quot;&gt;//// Конец&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
Первые три строки описывают общие параметры уровня. Все остальные - объекты на уровне и их параметры (положение, поворот, масштабирование, контур, картинку и т.д).
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
А вот так выглядит тот же уровень, но уже в игре:&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYDGQ9qu2_XmxSkr4uMrDOs2x2DXi9U961gkWoS9Qd6KAJ-u2Ob63KGkMmAuCQRiP9hN5h4EfTQRTo9xKy6Q_4e06DN6OVhFO3qXepWjBcSujvtCREpjUM9z6PudCmupOGykB94EIAc2lK/s1600/4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYDGQ9qu2_XmxSkr4uMrDOs2x2DXi9U961gkWoS9Qd6KAJ-u2Ob63KGkMmAuCQRiP9hN5h4EfTQRTo9xKy6Q_4e06DN6OVhFO3qXepWjBcSujvtCREpjUM9z6PudCmupOGykB94EIAc2lK/s1600/4.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;text-align: left;&quot;&gt;Представьте&lt;/span&gt;&amp;nbsp;сколько времени уйдет на подгонку каждого уровня и каждого объекта на нем без редактора уровней!!! Конечно нужно потратить много времени на создание редактора, но оно того стоит &amp;nbsp;+ &amp;nbsp;этот же редактор можно будет использовать в других играх (с небольшой модификацией).&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: lime;&quot;&gt;5.&amp;nbsp;Рисование всех графических элементов.&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
На этом этапе нужно будет много рисовать, а после еще и перерисовывать. Я всем рекомендую рисовать все объекты в векторном редакторе, а потом&amp;nbsp;конвертировать&amp;nbsp;(или экспортировать) в растр. Этот способ позволит вам быстро и без потери качества изображения изменять разрешение картинок. Желательно нарисовать все картинки, которые вы будете использовать в игре, так как у вас еще будет много работы по созданию самой игры ( я думаю, что переходить от программирования к рисованию и обратно (несколько раз) никому не хочется).&lt;br /&gt;
&lt;br /&gt;
Результат своей работы нужно оформить в файл размером 256х256, 512х512 или 1024х1024. Размеры изображения должны быть степенью 2. Так как некоторые Андроид устройства не смогут прочитать (и загрузить в память) изображения произвольного размера (напр. 135х422) (но на практике, сначала я все-таки делал рисунки произвольных размеров и все работала на моем телефоне, но&amp;nbsp;работоспособность&amp;nbsp;на остальных устройствах не гарантировалась и мне от этой затеи пришлось отказаться).&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizboMCOz1Y5AxeHPEYIXBc-nJieerVZFrAgxqh-XqHrNY5W9LpD84TAj0JHxNrXEERrSb-OK-udwc8rdEtdvpgtdzcHwy2i1KvuVjFR9javsu66pkuRpAossuh2FPsOtZKnHWpTvnFDYNj/s1600/Texture_obj.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizboMCOz1Y5AxeHPEYIXBc-nJieerVZFrAgxqh-XqHrNY5W9LpD84TAj0JHxNrXEERrSb-OK-udwc8rdEtdvpgtdzcHwy2i1KvuVjFR9javsu66pkuRpAossuh2FPsOtZKnHWpTvnFDYNj/s1600/Texture_obj.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Потом это изображение уже в самой игре разрезается на части и мы получаем готовые элементы.
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Об остальных этапах разработки читайте в следующих сообщениях.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://saigame.blogspot.com/2012/08/1.html&quot;&gt;Теория и практика создания игр (часть 1)&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://saigame.blogspot.com/2012/08/2.html&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;Теория и практика создания игр (часть 2)&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://saigame.blogspot.com/2012/08/4.html&quot;&gt;Теория и практика создания игр (часть 4)&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://saigame.blogspot.com/2012/08/5.html&quot;&gt;Теория и практика создания игр (часть 5)&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://saigame.blogspot.com/feeds/2390415237722905868/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://saigame.blogspot.com/2012/08/3.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/2390415237722905868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/2390415237722905868'/><link rel='alternate' type='text/html' href='http://saigame.blogspot.com/2012/08/3.html' title='Теория и практика создания игр (часть 3)'/><author><name>SAI</name><uri>http://www.blogger.com/profile/08535786048263862897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnv-Wo21OOXrUgn41aZ5X3AcWDQnaeRA9vhKYKaRg__dbbsvjELLS1Cl-SV3AzEwOrqjei46FFZjQ2Zo5tvhL6c2nSZ3IzsAFnhS0qm0WZun4Bs7YmnDqF_9jNNf9xtP1llMoqom7FleD8/s72-c/3.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5648764027290852710.post-5830433838361300105</id><published>2012-08-26T12:11:00.000-07:00</published><updated>2012-08-27T06:42:52.605-07:00</updated><title type='text'>Теория и практика создания игр (часть 2)</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Разделим&amp;nbsp;процесс создания игры на несколько этапов:&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Создание информационной модели игры.&lt;/li&gt;
&lt;li&gt;Прорисовка базовых графических элементов.
&lt;/li&gt;
&lt;li&gt;Написание альфа-геймплея игры.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Разработка редактора уровней.&lt;/li&gt;
&lt;li&gt;Рисование всех графических элементов.&lt;/li&gt;
&lt;li&gt;Программирование игровой логики (бета-версия).&lt;/li&gt;
&lt;li&gt;Создание и подгонка уровней для игры.&lt;/li&gt;
&lt;li&gt;Оптимизация программного кода игры.&lt;/li&gt;
&lt;li&gt;Запись звука и музыки.&lt;/li&gt;
&lt;li&gt;Устранение багов и лагов игры.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Создание релизной версии продукта.&lt;/li&gt;
&lt;/ol&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Порядок некоторых этапом может меняться (кому как удобно). Если работает группа разработчиков, то конечно они все эти этапы проходят одновременно. Так как я работаю один мне удобней использовать именно этот порядок.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;color: lime;&quot;&gt;1.&amp;nbsp;Создание информационной модели игры.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
На этом этапе нужно продумать все аспекты игры: от главного героя и декораций до геймплея и реализации на конкретном языке программирования. Лучшим (но не обязательным) решением для одного человека есть использование интерпретатора (языка программирования высокого уровня). Хотя если у вас много свободного времени, есть навыки в программировании и у вас есть желание написать очень качественную игру можете использовать любой доступный (мощный) язык программирования. Но подумайте вот над чем: сколько времени займет написание движка игры на низкоуровневом языке программирования ( в интерпретаторе 1 строка на С++ 10 строк), сколько вам нужно нарисовать картинок (10, 100 или 1000 картинок) и сколько у вас терпения и нервов? Конечно при этом (использование интерпретаторов) страдает производительность игры, но современные устройства становятся мощнее с каждым днем, и если вы не будете использовать 1000 спрайтов которые динамически изменяются, то все будет хорошо. Я сначала писал на Dark Basic Profesional, потом вышел AGK (мультиплатформенный) и я начал его активно использовать.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;color: lime;&quot;&gt;2.&amp;nbsp;&lt;span style=&quot;text-align: left;&quot;&gt;Прорисовка базовых графических элементов.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Итак вы придумали свою новую игру (все элементы, структуру и логику &amp;nbsp;игры), выбрали язык программирования и решили приступить к созданию игры. Первым делом нужно нарисовать хоть какие-то рисунки (не очень качественные) с которыми можно работать на начальной стадии разработки. Использовать можно как растровые так и векторные &amp;nbsp;графические редакторы. Я все же рекомендую использовать векторные редакторы (рисовать намного проще и быстрее). Хотя если вы планируете создать игру жанра поиски предметов, то тогда без растрового редактора (и талантливого художника) не обойтись. В моем случае, мне пришлось нарисовать один ящик и два квадрата красного и зеленого цвета.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;span style=&quot;color: lime;&quot;&gt;3.&amp;nbsp;&lt;span style=&quot;text-align: left;&quot;&gt;Написание альфа-геймплея игры.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Есть три вида версий игры: 1) Альфа-версия, 2) Бета-версия, 3) Релизная версия. Еще конечно есть и преальфа-версия, но я ее рассматривать не буду.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Альфа-версия представляет полурабочую версию игры, в которой может не быть миссий, части оружия и даже врагов. Тоисть это черновая версия игры, в которой можно опробовать геймплей. На этой стадии уже будет видно&amp;nbsp;интересная&amp;nbsp;игра или нет. Вот пример моей альфа-версии игры Gravity Booster (тогда еще она называлась BOXES, на скрине ошибка :) ):&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoNbZneRsU1xafevWoPZsWn3R2FeJx_-cfDleeoZQIQ_bKRu7dzSBX6g6DDWArxnYitWm_YEVZOMiLPTbGT25k4eFTCg0z264YeifDMqZkDiowSqzhxFa2bKEy37r-5Pwc_TOIpVVjHGjO/s1600/1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoNbZneRsU1xafevWoPZsWn3R2FeJx_-cfDleeoZQIQ_bKRu7dzSBX6g6DDWArxnYitWm_YEVZOMiLPTbGT25k4eFTCg0z264YeifDMqZkDiowSqzhxFa2bKEy37r-5Pwc_TOIpVVjHGjO/s1600/1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Ящики нужно было переместить в красную область (используя курсор на клавиатуре или&amp;nbsp;акселерометр&amp;nbsp;на телефоне), после чего она становилась зеленой и нужно было удержать их там 5 секунд.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Я написал эту версию приблизительно за полчаса. В принципе ничего сложного там не было, но уже тогда можно было понять каким будет геймплей и что нужно будет еще доделать.&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOwl2NusuIg-uAJUwEpS3hlach0AoIFDyhc-BNrcHNQBMjIjxCbaN81lPcLFvMlFPiK1cMZJ-qHdODI5uhr-ahAbXiU24Va4GxM-BX6lzQDp4cMKw0Ho868JhieJ2zNvrwQcQx_6E5h1LO/s1600/2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOwl2NusuIg-uAJUwEpS3hlach0AoIFDyhc-BNrcHNQBMjIjxCbaN81lPcLFvMlFPiK1cMZJ-qHdODI5uhr-ahAbXiU24Va4GxM-BX6lzQDp4cMKw0Ho868JhieJ2zNvrwQcQx_6E5h1LO/s1600/2.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Продолжение читайте в следующем сообщении.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;http://saigame.blogspot.com/2012/08/1.html&quot;&gt;Теория и практика создания игр (часть 1)&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;http://saigame.blogspot.com/2012/08/3.html&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;Теория и практика создания игр (часть 3)&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;color: #999999;&quot;&gt;&lt;a href=&quot;http://saigame.blogspot.com/2012/08/4.html&quot;&gt;Теория и практика создания игр (часть 4)&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;http://saigame.blogspot.com/2012/08/5.html&quot;&gt;Теория и практика создания игр (часть 5)&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://saigame.blogspot.com/feeds/5830433838361300105/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://saigame.blogspot.com/2012/08/2.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/5830433838361300105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/5830433838361300105'/><link rel='alternate' type='text/html' href='http://saigame.blogspot.com/2012/08/2.html' title='Теория и практика создания игр (часть 2)'/><author><name>SAI</name><uri>http://www.blogger.com/profile/08535786048263862897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoNbZneRsU1xafevWoPZsWn3R2FeJx_-cfDleeoZQIQ_bKRu7dzSBX6g6DDWArxnYitWm_YEVZOMiLPTbGT25k4eFTCg0z264YeifDMqZkDiowSqzhxFa2bKEy37r-5Pwc_TOIpVVjHGjO/s72-c/1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5648764027290852710.post-1748238040915663578</id><published>2012-08-26T11:00:00.003-07:00</published><updated>2012-08-27T04:34:14.665-07:00</updated><title type='text'>Теория и практика создания игр (часть 1)</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Создание игры - это процесс длинный, творческий и очень технический. Каждая игра начинает свою жизнь с мысли разработчика. Это можно сказать первый этап создания любой игры. Он является и самым важным этапом, так как для большинства проектов этот этап является и последним (молодым разработчикам не хватает терпения, мотивации, сил и практических умений). Я думаю много кто из вас (начинающих разработчиков компьютерных игр) читал огромное количество статей (возможно и книг), в которых красиво описано как сделать игру своей мечты. Я тоже читал такие статьи, но меня они не сильно радовали. Они имели громкие названия (например &quot;Создание игровых уровней в 3d Max&quot;, &quot;Создание шутера с нуля&quot; и т.д. ), но по сути не несли никакой полезной информации. В них просто было написано, что нужно придумать оригинальный дизайн, увлекательный игровой мир, харизматичных персонажей, убойное оружие (и этому было посвящено целую книгу), хотя это и так все понятно. А вот насчет технических и структурных аспектов игры там не упоминалось ни слова. Я предлагаю вам ознакомиться с группой моих&amp;nbsp;статей, в которых я опишу&amp;nbsp;процесс&amp;nbsp;создания&amp;nbsp;игры для ANDROID`а во всех его аспектах.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJ_MUmC1tTsJ45JTIbistWSEBaRDKM7SLxrOVa0ZdTOzHEL2nj7HZbQrfRbGu_n4r0UI7ZxrpP6O3NZBik6HX0dhxWv1mymNtoA1Y4Ocoj2B9Gv9Fc1cBrAOeqHukIesVgVWmmQAAHiyFi/s1600/450.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;355&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJ_MUmC1tTsJ45JTIbistWSEBaRDKM7SLxrOVa0ZdTOzHEL2nj7HZbQrfRbGu_n4r0UI7ZxrpP6O3NZBik6HX0dhxWv1mymNtoA1Y4Ocoj2B9Gv9Fc1cBrAOeqHukIesVgVWmmQAAHiyFi/s400/450.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a href=&quot;http://saigame.blogspot.com/2012/08/2.html&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;Теория и практика создания игр (часть 2)&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://saigame.blogspot.com/2012/08/3.html&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;Теория и практика создания игр (часть 3)&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span style=&quot;color: #999999;&quot;&gt;&lt;a href=&quot;http://saigame.blogspot.com/2012/08/4.html&quot;&gt;Теория и практика создания игр (часть 4)&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a href=&quot;http://saigame.blogspot.com/2012/08/5.html&quot;&gt;Теория и практика создания игр (часть 5)&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://saigame.blogspot.com/feeds/1748238040915663578/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://saigame.blogspot.com/2012/08/1.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/1748238040915663578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/1748238040915663578'/><link rel='alternate' type='text/html' href='http://saigame.blogspot.com/2012/08/1.html' title='Теория и практика создания игр (часть 1)'/><author><name>SAI</name><uri>http://www.blogger.com/profile/08535786048263862897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJ_MUmC1tTsJ45JTIbistWSEBaRDKM7SLxrOVa0ZdTOzHEL2nj7HZbQrfRbGu_n4r0UI7ZxrpP6O3NZBik6HX0dhxWv1mymNtoA1Y4Ocoj2B9Gv9Fc1cBrAOeqHukIesVgVWmmQAAHiyFi/s72-c/450.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5648764027290852710.post-4340740079278474933</id><published>2012-08-26T08:32:00.000-07:00</published><updated>2013-10-10T01:39:55.602-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Созданные ИГРЫ!!!"/><title type='text'>Gravity Booster</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSlmSHLm9DT72NkqwNsqg-FMReO0o3Lo9RltRRgnAi7vRL-vt9RlEqOFw8gH1rBvj3K34FO83LYqvfJtj2bMk-X46-Ge1FPqId0S4P8AkIok1M1aJSfWExVLv2amAlarBFJnu278_LLaMr/s1600/promo2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;195&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSlmSHLm9DT72NkqwNsqg-FMReO0o3Lo9RltRRgnAi7vRL-vt9RlEqOFw8gH1rBvj3K34FO83LYqvfJtj2bMk-X46-Ge1FPqId0S4P8AkIok1M1aJSfWExVLv2amAlarBFJnu278_LLaMr/s400/promo2.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;color: lime;&quot;&gt;Gravity Booster&lt;/span&gt; - это игра, в которой нужно с помощью гравитации перемещать объекты в определенную зону (или зоны), после чего нужно удержать их там &amp;nbsp;5 секунд (игровые зоны могут быть разной формы и цвета). Все &lt;span style=&quot;color: red;&quot;&gt;50 &lt;/span&gt;уровней делятся на 3 типа: 1) используется только устройство &quot;изменения полярности гравитации&quot;; 2) используется только &quot;взрыв гравитонов&quot;; 3) используются оба типа устройств. Отличить тип уровня можно по цвету &quot;игровой зоны&quot; (1-зеленая, 2-красная. 3-синяя). Сложность уровней постепенно нарастает от очень простых до очень сложных (рекомендуется использовать стилус). Также в игре есть два класса объектов: огонь и лед. Если игровой объект прикасается к огню, то вы проигрываете уровень (нужно начать сначала). Если игровой объект прикасается ко льду, то он замораживается, нужно будет переместить все остальные объекты в игровую зону (не замороженные). Если замерзнут все &amp;nbsp;объекты, то вы проигрываете уровень. Лед можно использовать &amp;nbsp;чтобы упростить прохождение сложных уровней!!!&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;object class=&quot;BLOGGER-youtube-video&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0&quot; data-thumbnail-src=&quot;http://i.ytimg.com/vi/cD_RHlA-7lA/0.jpg&quot; height=&quot;266&quot; width=&quot;320&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/cD_RHlA-7lA?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata&quot; /&gt;&lt;param name=&quot;bgcolor&quot; value=&quot;#FFFFFF&quot; /&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot; /&gt;&lt;embed width=&quot;320&quot; height=&quot;266&quot;  src=&quot;http://www.youtube.com/v/cD_RHlA-7lA?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Эта игра полностью готова к изданию на &lt;span style=&quot;color: #6fa8dc;&quot;&gt;Google Play&lt;/span&gt;. Но!!! Украина не является страной которая может &quot;продавать игры&quot; на &lt;span style=&quot;color: #6fa8dc;&quot;&gt;Google Play&lt;/span&gt;. Поэтому релиз игры я пока отложу на будущее (надеюсь недалекое и светлое). Есть вариант с рекламой, но не очень хочется отдавать такой проект за гроши. Поживем увидим. А пока буду размещать маленькую игру для детей на бесплатной основе, рабочее название &quot;Numbers&quot;. Читайте о ней в следующих сообщениях.&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://saigame.blogspot.com/feeds/4340740079278474933/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://saigame.blogspot.com/2012/08/gravity-booster.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/4340740079278474933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/4340740079278474933'/><link rel='alternate' type='text/html' href='http://saigame.blogspot.com/2012/08/gravity-booster.html' title='Gravity Booster'/><author><name>SAI</name><uri>http://www.blogger.com/profile/08535786048263862897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSlmSHLm9DT72NkqwNsqg-FMReO0o3Lo9RltRRgnAi7vRL-vt9RlEqOFw8gH1rBvj3K34FO83LYqvfJtj2bMk-X46-Ge1FPqId0S4P8AkIok1M1aJSfWExVLv2amAlarBFJnu278_LLaMr/s72-c/promo2.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5648764027290852710.post-8303701119467728266</id><published>2012-08-25T14:20:00.000-07:00</published><updated>2012-08-27T02:35:30.863-07:00</updated><title type='text'>Игры для Андроида!</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;text-align: justify;&quot;&gt;Этот блог полностью посвящен играм для устройств под управлением &lt;/span&gt;&lt;span style=&quot;color: lime; text-align: justify;&quot;&gt;ОС Android&lt;/span&gt;&lt;span style=&quot;text-align: justify;&quot;&gt; (Андроид), которые я буду создавать (или уже создал). Со временем я буду добавлять помимо описания игр и краткого руководства для них, еще и кусочки кода (или общие структуры), которые я использую в своих играх.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Первая сделанная мной игра называется &lt;span style=&quot;color: red;&quot;&gt;Gravity Booster&lt;/span&gt;:&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;object class=&quot;BLOGGER-youtube-video&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0&quot; data-thumbnail-src=&quot;http://i.ytimg.com/vi/cD_RHlA-7lA/0.jpg&quot; height=&quot;266&quot; width=&quot;320&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/cD_RHlA-7lA?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata&quot; /&gt;&lt;param name=&quot;bgcolor&quot; value=&quot;#FFFFFF&quot; /&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot; /&gt;&lt;embed width=&quot;320&quot; height=&quot;266&quot;  src=&quot;http://www.youtube.com/v/cD_RHlA-7lA?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&amp;nbsp;Более подробно о ней читайте в&amp;nbsp;следующем&amp;nbsp;сообщении.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #eeeeee;&quot;&gt;&lt;a href=&quot;http://saigame.blogspot.com/2012/08/gravity-booster.html&quot;&gt;Gravity Booster&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a href=&quot;http://saigame.blogspot.com/2012/08/3_27.html&quot;&gt;Топ 3 лучших игр для Андроид&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://saigame.blogspot.com/feeds/8303701119467728266/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://saigame.blogspot.com/2012/08/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/8303701119467728266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5648764027290852710/posts/default/8303701119467728266'/><link rel='alternate' type='text/html' href='http://saigame.blogspot.com/2012/08/blog-post.html' title='Игры для Андроида!'/><author><name>SAI</name><uri>http://www.blogger.com/profile/08535786048263862897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>