<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-3672420913092616782</atom:id><lastBuildDate>Fri, 13 Sep 2024 18:40:17 +0000</lastBuildDate><category>development</category><category>game</category><category>teknoloji</category><category>unity</category><category>mobile</category><category>yazilim</category><category>cloud</category><category>backup</category><category>belgrad</category><category>bulut</category><category>film</category><category>girisim</category><category>hizli hayat</category><category>i love my job</category><category>ios</category><category>is</category><category>muzik</category><category>oyun</category><category>peakgames</category><category>sarp</category><category>uygulama</category><category>voxxed days</category><category>zaman</category><category>2011</category><category>agile</category><category>aile</category><category>al pacino</category><category>alisveris</category><category>android</category><category>apple</category><category>arabesk</category><category>arastirma</category><category>banyo</category><category>bilkent</category><category>browser</category><category>christopher walken</category><category>cocos2dx</category><category>continuous delivery</category><category>continuous integration</category><category>coroutines</category><category>debug</category><category>debugging</category><category>denge</category><category>design patterns</category><category>developer</category><category>devoxx</category><category>dingin</category><category>dost</category><category>dostluk</category><category>drive</category><category>driver</category><category>dropbox</category><category>e-kitap</category><category>egg benedict</category><category>etohum</category><category>eyfel kulesi</category><category>fast life</category><category>fotograf</category><category>founder</category><category>girisimci</category><category>google</category><category>google drive</category><category>gta</category><category>hadise</category><category>haxe</category><category>hobi</category><category>ic hesaplasma</category><category>ifrat</category><category>ingiltere</category><category>insan</category><category>integration test</category><category>istanbul</category><category>james sallis</category><category>jazz</category><category>jenkins</category><category>karmasik</category><category>kitap</category><category>konser</category><category>kristal piksel</category><category>libgdx</category><category>london</category><category>london calling</category><category>londra</category><category>mac os</category><category>macbook</category><category>machine learning</category><category>madonna</category><category>mind the gap</category><category>motto</category><category>movie</category><category>mutluluk</category><category>optimization</category><category>para</category><category>park</category><category>pasaport</category><category>performance</category><category>photo stream</category><category>pizza express</category><category>prediction</category><category>principal software engineer</category><category>product owner</category><category>ptt</category><category>retrospektif</category><category>rovovm</category><category>ryan gosling</category><category>scrum</category><category>senkronizasyon</category><category>solution architect</category><category>sosyal medya</category><category>ssh</category><category>startup</category><category>strangeioc</category><category>su tesisati</category><category>sync</category><category>tahmin</category><category>tefrit</category><category>teknik yardim</category><category>the clash</category><category>tuketim</category><category>unit test</category><category>video game</category><category>vize</category><category>wwdc</category><title>Hayat / Life</title><description>Hayatimda olup biten (hemen) hersey / (Almost) Every single thing in my life</description><link>http://blog.hakansaglam.com/</link><managingEditor>noreply@blogger.com (Hakan Saglam)</managingEditor><generator>Blogger</generator><openSearch:totalResults>34</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3672420913092616782.post-4806990317982946664</guid><pubDate>Wed, 26 Oct 2016 10:52:00 +0000</pubDate><atom:updated>2016-10-26T13:52:18.079+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">belgrad</category><category domain="http://www.blogger.com/atom/ns#">development</category><category domain="http://www.blogger.com/atom/ns#">game</category><category domain="http://www.blogger.com/atom/ns#">mobile</category><category domain="http://www.blogger.com/atom/ns#">voxxed days</category><title>Voxxed Days Belgrade 2016</title><description>&lt;div style=&quot;text-align: justify;&quot;&gt;
Finally I have presented (almost) all my works. It was a great pleasure to be part of &lt;a href=&quot;https://belgrade.voxxeddays.com/&quot; target=&quot;_blank&quot;&gt;Voxxed Days Belgrade 2016&lt;/a&gt;. Search&amp;nbsp;#vdb16&amp;nbsp;in &lt;a href=&quot;https://twitter.com/search?q=%23vdb16&quot; target=&quot;_blank&quot;&gt;twitter&lt;/a&gt; and &lt;a href=&quot;https://www.instagram.com/explore/tags/vdb16/&quot; target=&quot;_blank&quot;&gt;instagram&lt;/a&gt; to see what happened there.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwdn6edVmg03tTxHTQ7g8eCdYhiBP-l-8DugcGatepJP4jvxc9xtyTHuF9j5Y-gDS7JyG28TxZBcBw4RXlcoDcMTPjbe0t4ZfqhQRuDp_FaamfrtHhNYQjpG5loQJMzvAShNkYgpPIYR4/s1600/IMG_0114.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;298&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwdn6edVmg03tTxHTQ7g8eCdYhiBP-l-8DugcGatepJP4jvxc9xtyTHuF9j5Y-gDS7JyG28TxZBcBw4RXlcoDcMTPjbe0t4ZfqhQRuDp_FaamfrtHhNYQjpG5loQJMzvAShNkYgpPIYR4/s400/IMG_0114.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;We went there 4 colleagues from Peak Games&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
It was started with arrival of our flight. &lt;a href=&quot;https://www.instagram.com/dimi3jeee/&quot; target=&quot;_blank&quot;&gt;Dimitri&lt;/a&gt;&amp;nbsp;was waiting for us, he is one of the actual organisers. He is so nice and funny guy, we had great times with him during the event. And actually he has been to Turkiye multiple times, and seen some of uncommon places for a tourist like Diyarbakir, Nemrut Mountain etc...&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgI6TIeKQSUCmGC-aR8LOKORCO3AGOYE3YWHaOGu4Kd00hxuGSAdQDpYZyUCwCVZ6r_1Yw_i_GGD995r4Z9usv08uPyv3Yvy5UR33yrrh9jOCXwlNokLVKPZlc37Z7jvRCPXsb0NK7kaxU/s1600/IMG_0150.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; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgI6TIeKQSUCmGC-aR8LOKORCO3AGOYE3YWHaOGu4Kd00hxuGSAdQDpYZyUCwCVZ6r_1Yw_i_GGD995r4Z9usv08uPyv3Yvy5UR33yrrh9jOCXwlNokLVKPZlc37Z7jvRCPXsb0NK7kaxU/s200/IMG_0150.jpg&quot; width=&quot;112&quot; /&gt;&lt;/a&gt;We had one day off before the event to have some sightseeing and to taste some traditional Serbian cuisine. I think one or two days are quite enough to know the Belgrade. Of course it is based on our performance on the first day. Thanks to &lt;a href=&quot;http://selim1377.github.io/&quot; target=&quot;_blank&quot;&gt;Selim&lt;/a&gt;, we have done 30K steps in total. And went almost every location by walk. Then we learnt that there is 5 days bus ticket (for 1040 Dinars around 10 Euros), use that ticket and public busses for the rest of the days.&lt;br /&gt;
&lt;br /&gt;
By the way, in general foods and drinks (with alcohol or not) is very very cheap, and the taste is quite similar to Turkish style. I strongly suggest to make a trip to Belgrade, especially if you consider that we (Turkish citizens) don&#39;t need visa for Serbia.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let&#39;s come to the event. The opening with the music of &lt;a href=&quot;https://www.youtube.com/watch?v=_wmXXR-XoH0&quot; target=&quot;_blank&quot;&gt;Tesla Coil&lt;/a&gt; and a very big Gong was fantastic. And also keynote was very successful by &lt;a href=&quot;https://twitter.com/amyxiot&quot; target=&quot;_blank&quot;&gt;Scott&lt;/a&gt;. Organisation was flawless. Overall talks were fine I guess, and sponsors prepared some great games, presents and stands. So overall it was a fantastic event. I have tried to attend as much talks as I can in the first day. For the first night, we went to &lt;a href=&quot;http://www.spottedbylocals.com/belgrade/historical-museum-of-serbia/&quot; target=&quot;_blank&quot;&gt;Historical Museum of Serbia&lt;/a&gt;&amp;nbsp;as speakers. Which was also very inspiring, I strongly suggest for the ones who visits Belgrade.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOhPpvT3Fd2tjarCTFxuM7CjXkwR7GcXU-oUObULMnCJBzLw2ZzZXb3le61EYbOo7dQKgRzAEzvqAEnKaD2ze0kNBmQCE8euzlPmL-ciqRUW1Pb9qh2xLaLGq2T9XhzPjujQjIsd5kOMQ/s1600/29975998076_831d6935b1_c.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;133&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOhPpvT3Fd2tjarCTFxuM7CjXkwR7GcXU-oUObULMnCJBzLw2ZzZXb3le61EYbOo7dQKgRzAEzvqAEnKaD2ze0kNBmQCE8euzlPmL-ciqRUW1Pb9qh2xLaLGq2T9XhzPjujQjIsd5kOMQ/s200/29975998076_831d6935b1_c.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;Second day my mind was full of my talk, so I have spend most of the time in the speakers room to get prepared on my talk. I could attend only some of the talks, but of course I didn&#39;t miss any of these delicious food :)&amp;nbsp;&amp;nbsp;Second night we went to &lt;a href=&quot;https://en.wikipedia.org/wiki/Nikola_Tesla_Museum&quot; target=&quot;_blank&quot;&gt;Nikola Tesla Museum&lt;/a&gt;&amp;nbsp;as speakers. It was nice, but not like the Historical Museum. If you have one choice between these two museums I would suggest the former one.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
After museum, I spent all night to get prepared for my talk. So finally the time had came and I did it. Here it is my talk, I didn&#39;t watch yet but I think I am happy with the result. It could have been better of course. But I think, I am getting better with every new presentation/talk :)&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/Sexx4ESAbc0&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;

&lt;/div&gt;
&lt;br /&gt;
So as you might know, the talk was about Unity in general, specifically about these topics. You can find all the subjects and more here inside of this blog:&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.hakansaglam.com/2016/09/why-do-we-move-to-unity3d.html&quot;&gt;Why do we move to Unity3D?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.hakansaglam.com/2016/09/power-of-unity3d-editor.html&quot;&gt;Power of Unity3D Editor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.hakansaglam.com/2016/09/coding-in-unity3d.html&quot; target=&quot;_blank&quot;&gt;Coding in Unity3D&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.hakansaglam.com/2016/09/testing-in-unity3d.html&quot;&gt;Testing in Unity3D&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.hakansaglam.com/2016/09/debugging-in-unity3d.html&quot;&gt;Debugging in Unity3D&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.hakansaglam.com/2016/09/performance-optimization-in-unity3d-for.html&quot;&gt;Performance Optimization in Unity3D&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.hakansaglam.com/2016/09/continuous-integration-and-delivery.html&quot;&gt;Continuous Integration and Delivery with Unity3D&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.hakansaglam.com/2016/09/unity-services.html&quot;&gt;Unity Services&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
And this is my presentation stack, please take a look and leave your questions/comments.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;320&quot; marginheight=&quot;0&quot; marginwidth=&quot;0&quot; scrolling=&quot;no&quot; src=&quot;//www.slideshare.net/slideshow/embed_code/key/1AgbJkruA55uWF&quot; style=&quot;border-width: 1px; border: 1px solid #ccc; margin-bottom: 5px; max-width: 100%;&quot; width=&quot;560&quot;&gt; &lt;/iframe&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
Finally, I admit that it was not a big deal, but still it was not that easy for me. Especially from the language point of view, it is quite challenging to have a talk in a non-native language. So as a result I am happy about what I have done. I want to thank to my colleagues at Peak Games and also to my wife and my little ones Sarp and Atlas for their supports.&lt;br /&gt;
&lt;br /&gt;
Please feel free to contact me about anything you wonder. Hope to be around with this blog couple of times in a month. Let&#39;s see...&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</description><link>http://blog.hakansaglam.com/2016/10/voxxed-days-belgrade-2016.html</link><author>noreply@blogger.com (Hakan Saglam)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwdn6edVmg03tTxHTQ7g8eCdYhiBP-l-8DugcGatepJP4jvxc9xtyTHuF9j5Y-gDS7JyG28TxZBcBw4RXlcoDcMTPjbe0t4ZfqhQRuDp_FaamfrtHhNYQjpG5loQJMzvAShNkYgpPIYR4/s72-c/IMG_0114.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3672420913092616782.post-7707917991713867136</guid><pubDate>Fri, 23 Sep 2016 08:40:00 +0000</pubDate><atom:updated>2016-09-24T14:31:06.205+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">development</category><category domain="http://www.blogger.com/atom/ns#">game</category><category domain="http://www.blogger.com/atom/ns#">mobile</category><category domain="http://www.blogger.com/atom/ns#">unity</category><title>Unity Services</title><description>&lt;div style=&quot;text-align: justify;&quot;&gt;
This is the last post about Unity3D, if you wonder what I have said before, please take a look:&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;
1.&amp;nbsp;&lt;a href=&quot;http://blog.hakansaglam.com/2016/09/why-do-we-move-to-unity3d.html&quot;&gt;Why do we move to Unity3D?&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
2.&amp;nbsp;&lt;a href=&quot;http://blog.hakansaglam.com/2016/09/power-of-unity3d-editor.html&quot;&gt;Power of Unity3D Editor&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
3.&amp;nbsp;&lt;a href=&quot;http://blog.hakansaglam.com/2016/09/coding-in-unity3d.html&quot; target=&quot;_blank&quot;&gt;Coding in Unity3D&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
4. &lt;a href=&quot;http://blog.hakansaglam.com/2016/09/testing-in-unity3d.html&quot;&gt;Testing in Unity3D&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
5. &lt;a href=&quot;http://blog.hakansaglam.com/2016/09/debugging-in-unity3d.html&quot;&gt;Debugging in Unity3D&lt;/a&gt;&lt;br /&gt;
6. &lt;a href=&quot;http://blog.hakansaglam.com/2016/09/performance-optimization-in-unity3d-for.html&quot;&gt;Performance Optimization in Unity3D&lt;/a&gt;&lt;br /&gt;
7. &lt;span id=&quot;goog_581815017&quot;&gt;&lt;/span&gt;&lt;a href=&quot;http://blog.hakansaglam.com/2016/09/continuous-integration-and-delivery.html&quot;&gt;Continuous Integration and Delivery with Unity3D&lt;/a&gt;&lt;span id=&quot;goog_581815018&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this last post I planning to explain Unity Services and Tools. Unity provides a range of services to help developers make games and engage, retain and monetize audiences. Unity Ads, Unity Analytics, Unity Cloud Build and Unity Multiplayer are fully integrated with the Unity Editor to make creating and managing games as smooth, simple and rewarding an experience as possible.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9GRpdI71QkE5jHWaL1G8AlO57eNc6r3ym_N2pQ_qhBLLh2A_lNiPoJI27m3wSMacw5wyYLaOCjkIVkKp5tMJjLAy7pvF57-dA6pDIihjAsZL8Lfy6VnhE4pvGyv2xBjZL0QRKaAtCU7E/s1600/unity-services-ad-logo.png&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; height=&quot;61&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9GRpdI71QkE5jHWaL1G8AlO57eNc6r3ym_N2pQ_qhBLLh2A_lNiPoJI27m3wSMacw5wyYLaOCjkIVkKp5tMJjLAy7pvF57-dA6pDIihjAsZL8Lfy6VnhE4pvGyv2xBjZL0QRKaAtCU7E/s200/unity-services-ad-logo.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Unity Ads&lt;/b&gt; is Unity&#39;s video ads tool. It is designed to become a natural part of the game that actually enhances the players’ experience. &lt;b&gt;We are already using Unity Ads to monetize some of our native games with rewarded video ads. But we didn&#39;t experience any Unity game yet.&lt;/b&gt; It is not that difficult to integrate on native platforms, I guess it will be much more easier on Unity games here it is the &lt;a href=&quot;https://unity3d.com/services/ads/quick-start-guide&quot; target=&quot;_blank&quot;&gt;documentation&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
Whether you offer your gamers a chance to earn more currency, extra life, or double their score in exchange for watching a short video, the power is in their hands. Your players can choose to watch the ad at the right place and time in their game experience - putting more money in your pocket over the gamer’s lifetime with the highest ARPU of any global rewarded video ad network.&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJVNxjEKwvocx575r7Ix65c8Iaz3HuFelytVdOOCDB7BVMuGgh39-ZQ9BVHIp86kebge9Xh4ev0D0Z2-q3dpgCFStM-IQyyH5cfjiXVThLclD4cRkBZV2141k-IYQl3t0ySKjOmrbTV7U/s1600/unity-services-analytics-logo.png&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; height=&quot;47&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJVNxjEKwvocx575r7Ix65c8Iaz3HuFelytVdOOCDB7BVMuGgh39-ZQ9BVHIp86kebge9Xh4ev0D0Z2-q3dpgCFStM-IQyyH5cfjiXVThLclD4cRkBZV2141k-IYQl3t0ySKjOmrbTV7U/s200/unity-services-analytics-logo.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;







&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Unity Analytics&lt;/b&gt; gives you an easy access to important information that helps you improve your in-game economy and the player experience. It has a dashboard to visualize your game data. In this data you will have&amp;nbsp;&lt;/span&gt;high-level overview of how your game is being used. Players&#39; progress (and where they get stuck). Address different audiences by creating player groups and segments based on unique game scenarios and behavioral patterns. &lt;b&gt;We are not using Unity Analytics because we have our own custom analytics solution.&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Another thing is, you can enable in-app purchases across multiple stores (iOS, Mac, Google Play, Windows and Amazon App Stores) with single API called &lt;b&gt;Unity IAP&lt;/b&gt;. And it enables you to monitor and act on trends in your revenue and purchase data across multiple platforms. Learn how to &lt;a href=&quot;http://docs.unity3d.com/Manual/UnityIAPSettingUp.html&quot;&gt;&lt;span class=&quot;s2&quot;&gt;set up Unity IAP&lt;/span&gt;&lt;/a&gt; for multiple stores.&amp;nbsp;&lt;b&gt;We are not using Unity IAP also. Because we have our existing custom native solutions optimized and working specific to our needs. We just created &lt;a href=&quot;http://blog.hakansaglam.com/2016/09/continuous-integration-and-delivery.html&quot;&gt;native plugin&lt;/a&gt;&amp;nbsp;for these solutions and started to use in our Unity games.&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
One last thing is &lt;b&gt;Unity Heatmaps.&amp;nbsp;&lt;/b&gt;It provides a visualization of spatial events that occur in your game. Where do players clicks? Where do they scores? Which roads are most travelled in your game? By collecting the data from hundreds or even thousands of plays, you begin to assemble a large-scale picture of how your players experience your game. The patterns that emerge can help you tune your game. So you can improve your game economy, reduce the gameplay difficulty curve and increase the level of player enjoyment. &lt;b&gt;This is something that we are planning to use sometime in the future, but right now we didn&#39;t try it.&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOClpFzse76UUeGUkBWJ0tL_2CZYZcM4hlITa463X0ZJu47Wn_6FG3VR1lI0UeQDHUi5SFzHxJc4c9Fa6A1o_LPp4U2R_8iu8-Fs_3irJTKq6t-218BAiT6K05e0Ahn4qeH5SurUl2sYY/s1600/unity-services-cloud-build-logo.png&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; height=&quot;44&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOClpFzse76UUeGUkBWJ0tL_2CZYZcM4hlITa463X0ZJu47Wn_6FG3VR1lI0UeQDHUi5SFzHxJc4c9Fa6A1o_LPp4U2R_8iu8-Fs_3irJTKq6t-218BAiT6K05e0Ahn4qeH5SurUl2sYY/s200/unity-services-cloud-build-logo.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;b&gt;Unity Cloud Build&lt;/b&gt;&amp;nbsp;helps you to automate your pipeline of compile, build, deploy and test.&amp;nbsp;Simultaneously build for multiple platforms and app stores.&amp;nbsp;And also distribute and share your builds that your team can easily download and install from anywhere. So it is yet another continuous integration and delivery tool specific to unity games by Unity. &lt;b&gt;Since we &lt;a href=&quot;http://blog.hakansaglam.com/2016/09/continuous-integration-and-delivery.html&quot;&gt;have our own CI solution&lt;/a&gt;,&amp;nbsp;we are not using this one either.&lt;/b&gt; Actually there is also other issues like being queued among all Unity Cloud Build customers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhP4fR590oKGN8X0hbBzpUScLQCJ-Y0-r1_xMUg4u-R8ijIYacHd0aNxOPFj5jDnWHGHki9waojeKpfhNfAAQycNILs0_46w0cwSmwSDH1I2JB3LBcPRbnklcmrUp02TrufT8muw3Zt7fA/s1600/unity-services-collaborate-logo.png&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; height=&quot;41&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhP4fR590oKGN8X0hbBzpUScLQCJ-Y0-r1_xMUg4u-R8ijIYacHd0aNxOPFj5jDnWHGHki9waojeKpfhNfAAQycNILs0_46w0cwSmwSDH1I2JB3LBcPRbnklcmrUp02TrufT8muw3Zt7fA/s200/unity-services-collaborate-logo.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;b&gt;Unity Collaborate&lt;/b&gt; is there for small teams to save, share, and sync their Unity project. It’s cloud hosted and easy to use so the entire team can contribute to the Project, regardless of location or role. Your project is cloud hosted so you’re always up to date with &lt;b&gt;your team&lt;/b&gt;, no matter where you are. You can invite collaborators right in editor and start working together. It can be used by the entire team artists, QA, everyone (15 members max). It is in beta right now, and requires &lt;a href=&quot;https://unity3d.com/get-unity/download/archive&quot; target=&quot;_blank&quot;&gt;5.4+ version of Unity3D&lt;/a&gt;. &amp;nbsp;&lt;b&gt;It is something we are planning to use (after beta) because right now it is impossible to work together on the same scene or prefab concurrently. I hope it will resolve these issues.&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
































&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdsvLmTVNzQ4ODuoys8AsVx7C7FYsVWIRM9w1EtSfk1Ainc0rxmrXlbeybnX0C8Ac4CeLwbuAlCFVUcwzZugYBc8AMhxj8AIVzcoK_1Z715xKTFpLU67GuKpp2PjKUt5EO9X0F21ntnBs/s1600/unity-services-everyplay-logo.png&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; height=&quot;40&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdsvLmTVNzQ4ODuoys8AsVx7C7FYsVWIRM9w1EtSfk1Ainc0rxmrXlbeybnX0C8Ac4CeLwbuAlCFVUcwzZugYBc8AMhxj8AIVzcoK_1Z715xKTFpLU67GuKpp2PjKUt5EO9X0F21ntnBs/s200/unity-services-everyplay-logo.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;b&gt;Everyplay&lt;/b&gt; is a SDK for recording game play of user. Recording is done in the background with virtually no impact on performance for users. According to Unity, players love replays. A user that watches game video typically plays more often and plays for longer than the average user. And it helps to market your game as your players share your game&#39;s replays, their friends will try it out too. &lt;b&gt;We are not using it, and I am not sure if we even think it in the future. Once we tried built-in iOS Game Recording mechanism but it didn&#39;t work for our game genre.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCjwUXQgHE8o8y_VOc6JD25mY6-sSVWzkdkUAToERu-Y9Csb0RZC-EN57KNs0LMp0JjooWYreszKAY92yB4dCG1NmlJPvZs3uU67qqV92ga47OpNCTvxo9SdSFIRm367R_m2jcms_NPD0/s1600/unity-services-multiplayer-logo.png&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; height=&quot;44&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCjwUXQgHE8o8y_VOc6JD25mY6-sSVWzkdkUAToERu-Y9Csb0RZC-EN57KNs0LMp0JjooWYreszKAY92yB4dCG1NmlJPvZs3uU67qqV92ga47OpNCTvxo9SdSFIRm367R_m2jcms_NPD0/s200/unity-services-multiplayer-logo.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;The purpose of&amp;nbsp;&lt;b&gt;Unity Multiplayer &lt;/b&gt;is to create real time, networked games for Unity. It’s fast to implement and highly customizable. Unity-provided servers ensure that your players can find and play with each other. It can be used from turn based games to real time fast action games. &lt;b&gt;Unity Matchmaker Servers&lt;/b&gt; makes it easy to connect your players. &lt;b&gt;Unity Relay Servers&lt;/b&gt; brokers network traffic to ensure quality sessions between your players no matter where they are. See more on &lt;a href=&quot;http://docs.unity3d.com/Manual/UNet.html&quot; target=&quot;_blank&quot;&gt;this documentation&lt;/a&gt;. &lt;b&gt;We are not using this service also, because we have our own dedicated, robust, highly scalable and performant servers (some of our games have more than 100K concurrent users). And they are not generalized servers, &amp;nbsp;they have been developed and being maintained specific to our games. We are not planning to use this in our board games, may be we can think some experimental games in the future.&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;








&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEig1Q9db6rnbxXFYoYve58rbNI6BxIIT3CRzX7VLnpVeGly0-EAWTwPQ6lsGYTsmH_wEjX12PyQ-WvIOZTTkTaAQS-ZdtGL3h0pfiSUALAvAMKEjiU8t8oCCYktcqRACz_f_VGH_F8xFs4/s1600/unity-services-performance-logo.png&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; height=&quot;32&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEig1Q9db6rnbxXFYoYve58rbNI6BxIIT3CRzX7VLnpVeGly0-EAWTwPQ6lsGYTsmH_wEjX12PyQ-WvIOZTTkTaAQS-ZdtGL3h0pfiSUALAvAMKEjiU8t8oCCYktcqRACz_f_VGH_F8xFs4/s200/unity-services-performance-logo.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Unity Performance Reporting&lt;/b&gt; automatically collects application errors, across devices and platforms, so you can find and address issues in real time. It c&lt;/span&gt;onsolidates errors across platforms, devices, and builds. Automatically collects and views errors as they are generated by app users. And best part is it requires no sdk. &lt;b&gt;We are not using this one either. We are using &lt;a href=&quot;https://get.fabric.io/&quot; target=&quot;_blank&quot;&gt;Fabric/Crashlytics&lt;/a&gt;&amp;nbsp;for tracking our crash reports. Actually we are very happy with it on native games. But on Unity games it is not as good as the others. We didn&#39;t discuss or investigate yet, but if Unity&#39;s solution is better than Fabric, we can think to move this one.&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&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/AVvXsEieFj3xzQs5xa-V_Pd1Zh8yGMZYaj6QgDWpxX0K1yvMcUImQ9XJ5g1VmFsn7lBoQoXYJyZZdjp7hS8bg7s7d84lEZeC6vxt82YoCpXMaFCLfB0rVRYMHLlYvpNSfMpKRLVG5-SuwdGmiF8/s1600/unity-asset-store-logo.png&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; height=&quot;121&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieFj3xzQs5xa-V_Pd1Zh8yGMZYaj6QgDWpxX0K1yvMcUImQ9XJ5g1VmFsn7lBoQoXYJyZZdjp7hS8bg7s7d84lEZeC6vxt82YoCpXMaFCLfB0rVRYMHLlYvpNSfMpKRLVG5-SuwdGmiF8/s200/unity-asset-store-logo.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Unity&lt;/b&gt; &lt;b&gt;Asset Store&lt;/b&gt; is home to a growing library of free and commercial assets created both by Unity Technologies and also members of the community. A wide variety of assets is available, covering everything from textures, models and animations to whole project examples, tutorials and Editor extensions. The assets are accessed from a simple interface built into the Unity Editor and are downloaded and imported directly into your project.&amp;nbsp;&lt;/span&gt;Unity users can become publishers on Asset Store, and sell content they have created. To find out more, see &lt;a href=&quot;https://docs.unity3d.com/Manual/AssetStorePublishing.html&quot;&gt;&lt;span class=&quot;s2&quot;&gt;Asset Store Publishing&lt;/span&gt;&lt;/a&gt;.&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;b&gt;We are definitely using Asset Store actively (as a customer, not as a publisher yet). We have downloaded both free and paid assets. We are using some of them directly in our games and some of them to just investigate or to get inspired.&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
Here it is some of the assets that we are using directly (or in-directly):&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.assetstore.unity3d.com/en/#!/content/27676&quot; target=&quot;_blank&quot;&gt;DOTween&lt;/a&gt; is a fast, efficient, fully type-safe object-oriented &lt;a href=&quot;http://blog.demigiant.com/?p=344&quot;&gt;&lt;span class=&quot;s2&quot;&gt;animation engine&lt;/span&gt;&lt;/a&gt;, optimized for C#.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.assetstore.unity3d.com/en/#!/content/32461&quot; target=&quot;_blank&quot;&gt;UniWebView&lt;/a&gt; is an easy solution for integrating WebView to your mobile games. You can set up a web view and embed web content in your game.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.assetstore.unity3d.com/en/#!/content/12047&quot; target=&quot;_blank&quot;&gt;Log Viewer&lt;/a&gt;&amp;nbsp;helps you to check your editor console logs inside the game itself even on mobile.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.assetstore.unity3d.com/en/#!/content/11347&quot; target=&quot;_blank&quot;&gt;JSON .NET&lt;/a&gt; brings the power of Json and Bson serialization to Unity with support for 4.7.2 and up and is compatible with both .NET and IL2CPP backends.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.assetstore.unity3d.com/en/#!/content/17662&quot; target=&quot;_blank&quot;&gt;TextMesh Pro&lt;/a&gt; is the ultimate text solution for Unity. It&#39;s the perfect replacement for Unity&#39;s New UI Text &amp;amp; Text Mesh.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.assetstore.unity3d.com/en/#!/content/10872&quot; target=&quot;_blank&quot;&gt;Best HTTP&lt;/a&gt; is a plugin that supports request customization for REST, WebSocket, Socket.IO, SignalR, Server-Sent Events (and much more) out of the box.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.assetstore.unity3d.com/en/#!/content/11521&quot; target=&quot;_blank&quot;&gt;Console Enhanced&lt;/a&gt; is a vastly improved editor console for Unity.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.assetstore.unity3d.com/en/#!/content/16345&quot; target=&quot;_blank&quot;&gt;Realistic Effects Pack&lt;/a&gt; The package includes effects&amp;nbsp;with particle systems, uv-animated textures&amp;nbsp;and distortion for mobile.&amp;nbsp;Dimensions are approximate to reality.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.assetstore.unity3d.com/en/#!/content/36378&quot; target=&quot;_blank&quot;&gt;Enhanced Scroller&lt;/a&gt; virtualizes your data, showing only the elements it needs to. Take thousands of rows and display them in a handful of UI elements, speeding up processing and saving memory.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.assetstore.unity3d.com/en/#!/content/44870&quot; target=&quot;_blank&quot;&gt;Stats Monitor&lt;/a&gt; is a customizable FPS counter and performance measuring tool.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&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/AVvXsEhpXulSDQONVHfUFYtyqTcXW3U-O35Z2C-lZM3nH08taQFs9-9beDq45XqAF6qVmLtJTtJFiV48gBEEUbAo5nv0o56RgeXsvC7yQTG2aoYUcwfjwMN1_q2TWJijABrsAwjWpvAE6W9jhzE/s1600/unity-services-lab-logo.png&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; height=&quot;54&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpXulSDQONVHfUFYtyqTcXW3U-O35Z2C-lZM3nH08taQFs9-9beDq45XqAF6qVmLtJTtJFiV48gBEEUbAo5nv0o56RgeXsvC7yQTG2aoYUcwfjwMN1_q2TWJijABrsAwjWpvAE6W9jhzE/s200/unity-services-lab-logo.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;b&gt;Unity Labs&lt;/b&gt; is Unity&#39;s experimental projects, research, and explorations into the future of game design, VR, AR and development. Some of the current services started inside the Unity Labs like Heatmaps. Most probably you will not find anything that you can use directly in your game. But it can inspire you or helps you create new ideas. And articles gives you some deep knowledge of Unity Ecosystem.&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1ZRNwX3Z7EXfNPF_vYCM5HrAT3QaaWMcPp_esGY_Rc_c25JlEFPw_xu56qbG_VJwjiCTNcGo7VwP_7BF1nV6NNMtAxYdZQmhltMFVxiHy2-SvPZG0JtvohQSkknFrXe_7kXjy_AJzPAc/s1600/unity-logo.png&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; height=&quot;72&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1ZRNwX3Z7EXfNPF_vYCM5HrAT3QaaWMcPp_esGY_Rc_c25JlEFPw_xu56qbG_VJwjiCTNcGo7VwP_7BF1nV6NNMtAxYdZQmhltMFVxiHy2-SvPZG0JtvohQSkknFrXe_7kXjy_AJzPAc/s200/unity-logo.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;There are very useful &lt;b&gt;Open Source&lt;/b&gt; Libraries / Projects / Demos by Unity. As you might know Unity Game Engine is not open source. It can only be accessible for certain enterprise deals. But some important parts apart from game engine is open sourced in the account of &lt;a href=&quot;https://bitbucket.org/Unity-Technologies/&quot; target=&quot;_blank&quot;&gt;Unity Technologies&lt;/a&gt; on &lt;a href=&quot;https://bitbucket.org/&quot; target=&quot;_blank&quot;&gt;bitbucket&lt;/a&gt;. It is always good to keep an eye on these projects to have better understanding of how Unity is working under the hood. And also it can give you some insights about the development style and practices of Unity Team.&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
Some of the very commonly used open sourced libraries by Unity:&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Entire&amp;nbsp;&lt;a href=&quot;https://bitbucket.org/Unity-Technologies/ui&quot; target=&quot;_blank&quot;&gt;Unity UI&lt;/a&gt; system is open sourced.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bitbucket.org/Unity-Technologies/heatmaps&quot; target=&quot;_blank&quot;&gt;Heatmaps&lt;/a&gt; that I have mentioned above is open sourced.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bitbucket.org/Unity-Technologies/memoryprofiler&quot; target=&quot;_blank&quot;&gt;Memory Profiler&lt;/a&gt; that I have &lt;a href=&quot;http://blog.hakansaglam.com/2016/09/performance-optimization-in-unity3d-for.html&quot;&gt;mentioned&lt;/a&gt; before is open sourced.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bitbucket.org/Unity-Technologies/unitytesttools&quot; target=&quot;_blank&quot;&gt;Unity Test Tools&lt;/a&gt; that &lt;a href=&quot;http://blog.hakansaglam.com/2016/09/testing-in-unity3d.html&quot;&gt;our testing approaches&lt;/a&gt; based on is open sourced.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bitbucket.org/Unity-Technologies/xcodeapi&quot; target=&quot;_blank&quot;&gt;XcodeAPI&lt;/a&gt;&amp;nbsp;is for the post process that we are using to &lt;a href=&quot;http://blog.hakansaglam.com/2016/09/continuous-integration-and-delivery.html&quot;&gt;configure intermediate Xcode project&lt;/a&gt; is open sourced.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1ZRNwX3Z7EXfNPF_vYCM5HrAT3QaaWMcPp_esGY_Rc_c25JlEFPw_xu56qbG_VJwjiCTNcGo7VwP_7BF1nV6NNMtAxYdZQmhltMFVxiHy2-SvPZG0JtvohQSkknFrXe_7kXjy_AJzPAc/s1600/unity-logo.png&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; height=&quot;72&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1ZRNwX3Z7EXfNPF_vYCM5HrAT3QaaWMcPp_esGY_Rc_c25JlEFPw_xu56qbG_VJwjiCTNcGo7VwP_7BF1nV6NNMtAxYdZQmhltMFVxiHy2-SvPZG0JtvohQSkknFrXe_7kXjy_AJzPAc/s200/unity-logo.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
Unity collects very useful statistics about the specs of mobile devices running Unity games. They share these stats on&amp;nbsp;&lt;a href=&quot;http://hwstats.unity3d.com/&quot; style=&quot;font-weight: bold;&quot; target=&quot;_blank&quot;&gt;Unity Hardware Stats&lt;/a&gt;&amp;nbsp;page.&lt;b&gt;&amp;nbsp;&lt;/b&gt;I strongly recommend to check this page frequently, it can show the characteristic of devices based on different dimensions and also platforms. The hardware data comes from users who installed some sort of Unity game, so it represents combined statistics of all Unity game players. Please be aware that, your particular game might be targeted at different type of users with different hardware.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2 style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-size: x-large;&quot;&gt;The End&lt;/span&gt;&lt;/h2&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
So I have posted eight blog posts including this one. I have written more or less everything that I have planned in the beginning. Thanks for reading.&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
Now I will make a presentation from these posts to present on &lt;span class=&quot;s2&quot;&gt;&lt;a href=&quot;https://belgrade.voxxeddays.com/talk/255/&quot;&gt;voxxed days belgrade&lt;/a&gt;. I don&#39;t promise but most probably I will tell you about the event and also share my slides here.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;</description><link>http://blog.hakansaglam.com/2016/09/unity-services.html</link><author>noreply@blogger.com (Hakan Saglam)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9GRpdI71QkE5jHWaL1G8AlO57eNc6r3ym_N2pQ_qhBLLh2A_lNiPoJI27m3wSMacw5wyYLaOCjkIVkKp5tMJjLAy7pvF57-dA6pDIihjAsZL8Lfy6VnhE4pvGyv2xBjZL0QRKaAtCU7E/s72-c/unity-services-ad-logo.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3672420913092616782.post-7399826586522370309</guid><pubDate>Mon, 19 Sep 2016 12:16:00 +0000</pubDate><atom:updated>2016-09-19T15:16:37.605+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">continuous delivery</category><category domain="http://www.blogger.com/atom/ns#">continuous integration</category><category domain="http://www.blogger.com/atom/ns#">development</category><category domain="http://www.blogger.com/atom/ns#">game</category><category domain="http://www.blogger.com/atom/ns#">jenkins</category><category domain="http://www.blogger.com/atom/ns#">mobile</category><category domain="http://www.blogger.com/atom/ns#">unity</category><title>Continuous Integration and Delivery with Unity3D</title><description>&lt;div style=&quot;text-align: justify;&quot;&gt;
This is the seventh post about Unity3D so far, if you wonder what I have said before, please take a look:&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;
1.&amp;nbsp;&lt;a href=&quot;http://blog.hakansaglam.com/2016/09/why-do-we-move-to-unity3d.html&quot;&gt;Why do we move to Unity3D?&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
2.&amp;nbsp;&lt;a href=&quot;http://blog.hakansaglam.com/2016/09/power-of-unity3d-editor.html&quot;&gt;Power of Unity3D Editor&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
3.&amp;nbsp;&lt;a href=&quot;http://blog.hakansaglam.com/2016/09/coding-in-unity3d.html&quot; target=&quot;_blank&quot;&gt;Coding in Unity3D&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
4. &lt;a href=&quot;http://blog.hakansaglam.com/2016/09/testing-in-unity3d.html&quot;&gt;Testing in Unity3D&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
5. &lt;a href=&quot;http://blog.hakansaglam.com/2016/09/debugging-in-unity3d.html&quot;&gt;Debugging in Unity3D&lt;/a&gt;&lt;br /&gt;
6. &lt;a href=&quot;http://blog.hakansaglam.com/2016/09/performance-optimization-in-unity3d-for.html&quot;&gt;Performance Optimization in Unity3D&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLp28VhL6QtooCPlrsB9Zi_V-hTufzftyoTpMKjc1cJxHUenasm30lGJ1pZKdpcK6GK_nftTtqsjeeeI5EWXtlQpodY_C97EhxexiArD2OeRVfZwHOpZdPbbMxVjghq_HWPjlWIsO1TIU/s1600/gin-jenkins-jobs.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;118&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLp28VhL6QtooCPlrsB9Zi_V-hTufzftyoTpMKjc1cJxHUenasm30lGJ1pZKdpcK6GK_nftTtqsjeeeI5EWXtlQpodY_C97EhxexiArD2OeRVfZwHOpZdPbbMxVjghq_HWPjlWIsO1TIU/s640/gin-jenkins-jobs.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;font-size: medium; text-align: justify;&quot;&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;font-size: 12.8px;&quot;&gt;All jobs should be green&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;div style=&quot;font-size: medium; text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
We are already using &lt;a href=&quot;https://jenkins.io/&quot; target=&quot;_blank&quot;&gt;Jenkins&lt;/a&gt; as our Continuous Integration (CI) platform. CI is a development practice that requires developers to &lt;b&gt;integrate&lt;/b&gt; code into a shared repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
We are using Jenkins as CI platform at &lt;a href=&quot;http://peakgames.net/&quot; target=&quot;_blank&quot;&gt;Peak Games&lt;/a&gt;&amp;nbsp;including server side, CRM, mobile, web... So obviously we decided to use Jenkins for Unity projects also. We have &lt;b&gt;seven Jenkins jobs&lt;/b&gt; for a single Unity game. Let me tell you about what these jobs are doing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: center;&quot;&gt;
Common Gaming Libraries&lt;/h3&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
Since we are planning to use Unity for at least 2-3 board/card games, we started creating common libraries that will be used by all Unity games. Before Unity, we have done similar work for iOS and Android native. That is why we have the knowledge to decide what functions would be common and re-usable across all games.&lt;br /&gt;
&lt;br /&gt;
Right now we have 18 common libraries written in C# and 2 native plugins written in Java and Objective-C. To be able to integrate these libraries to actual game code we didn&#39;t use any dependency management framework, we just use two different custom approaches. When we are building these integrations we couldn&#39;t find a well known, mature enough dependency management framework that is why we created our own custom solutions.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5dAmUSFJYQXF9jaxUbLU7fvzJzNdjh4Va36jPDuJUPRbBswATvIax-ed4lZswOeiR6t7n03-rTAZZO7qGrfW7Jm5R656c0rELrOiJWDRgSBB9llUtkbDhtgnEjZ3i3-6KhcjHcFdmwKo/s1600/common-plugins.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;181&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5dAmUSFJYQXF9jaxUbLU7fvzJzNdjh4Va36jPDuJUPRbBswATvIax-ed4lZswOeiR6t7n03-rTAZZO7qGrfW7Jm5R656c0rELrOiJWDRgSBB9llUtkbDhtgnEjZ3i3-6KhcjHcFdmwKo/s200/common-plugins.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;b&gt;For native plugins&lt;/b&gt; (Peak CRM API Client, Native IAP Client). We have created one project for each. Each of them has similar approach inside the project. Actually each project includes four separate projects inside. One for iOS in Objective-C, one for Android in Java, one for creating a dll in C#, one for reference sample Unity application. And of course one &lt;a href=&quot;https://8thlight.com/blog/dariusz-pasciak/2016/08/22/refactor-and-source-control-your-ci.html&quot; target=&quot;_blank&quot;&gt;build script&lt;/a&gt; to build all native codes and create a dll file. Creating native plugins for iOS and Android is quite different, for more information please refer to these documentations (&lt;a href=&quot;https://docs.unity3d.com/Manual/PluginsForIOS.html&quot; target=&quot;_blank&quot;&gt;iOS&lt;/a&gt; and &lt;a href=&quot;https://docs.unity3d.com/Manual/PluginsForAndroid.html&quot; target=&quot;_blank&quot;&gt;Android&lt;/a&gt;).&lt;br /&gt;
&lt;br /&gt;
So we have &lt;b&gt;two Jenkins jobs&lt;/b&gt; to create these plugins and generate available links to download. Once these plugins developed, they will not change a lot. So to integrate them, there is a manual operation. Actually just copy and paste after downloading from given URL.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgu5qXhgNg91URq2SxK-2tq50-qbbTMu8A1hnSzWkos3wZQmeWEyw-77Cus0UMf-ZmleqEhCn_CPO-KdC9I6rUqXnWoYIZi8n1IZI3hUSncBnL-MrYMlS9EPI-2Jw97qIc4W1PlzdgWw7s/s1600/common-librarires.png&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; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgu5qXhgNg91URq2SxK-2tq50-qbbTMu8A1hnSzWkos3wZQmeWEyw-77Cus0UMf-ZmleqEhCn_CPO-KdC9I6rUqXnWoYIZi8n1IZI3hUSncBnL-MrYMlS9EPI-2Jw97qIc4W1PlzdgWw7s/s320/common-librarires.png&quot; width=&quot;163&quot; /&gt;&lt;/a&gt;&lt;b&gt;For C# common libraries &lt;/b&gt;we have created one single Unity project called GamingLibrary.&lt;b&gt;&amp;nbsp;&lt;/b&gt;Unlike native plugins we don&#39;t want to create one or more dll files. Because these common libraries might change (with additions, changes, removals) a lot during the game development. We want to see the actual code of these libraries while we are developing.&lt;br /&gt;
&lt;br /&gt;
So we tried to generate Unity Package from this project and import it into actual game project. It was working like a charm in Editor. You could import any package even your code has some compile issues. It would not compile because there were dependencies to our gaming lib package. But after the import it will compile and work successfully.&lt;br /&gt;
&lt;br /&gt;
We were happy till to see that importing &lt;a href=&quot;https://docs.unity3d.com/Manual/CommandLineArguments.html&quot; target=&quot;_blank&quot;&gt;in batch mode&lt;/a&gt; (via command line) has a very subtle difference according to Editor. In batch mode, Unity needs to compile the project to be able to import any package before the import action. Which would not work for us because as I said our game code is not compiling before the gaming lib package import. We try to find a work around for this, but couldn&#39;t find. &lt;br /&gt;
&lt;br /&gt;
Then we write a script file to copy gaming libraries into actual game code base. Basically we just use&amp;nbsp;&lt;b&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Rsync&quot; target=&quot;_blank&quot;&gt;rsync&lt;/a&gt;&lt;/b&gt;&amp;nbsp;to make&amp;nbsp;synchronization. &amp;nbsp;So we have &lt;b&gt;one Jenkins job&lt;/b&gt; to compile and run unit tests on each commit to gaming library.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;h3 style=&quot;text-align: center;&quot;&gt;
Game Code Base&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpzkyMD4029z0cHfbpKfMdJ23klS9zmTDLpRA7eG0VK_tEJrfRmb9tuJPpof5l_EQL9y1pryTiahTxUV4-w-jNeZsFETuRCZTpBU_s7NUHfphqM6Z1ym_ww02ApT0QptISRAt_-VswQT0/s1600/gin-promo.jpeg&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; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpzkyMD4029z0cHfbpKfMdJ23klS9zmTDLpRA7eG0VK_tEJrfRmb9tuJPpof5l_EQL9y1pryTiahTxUV4-w-jNeZsFETuRCZTpBU_s7NUHfphqM6Z1ym_ww02ApT0QptISRAt_-VswQT0/s320/gin-promo.jpeg&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;So the rest of &lt;b&gt;four Jenkins jobs&lt;/b&gt; are there for each Unity game. I will use&amp;nbsp;&lt;a href=&quot;https://www.facebook.com/GinRummyPlus/&quot; target=&quot;_blank&quot;&gt;Gin Rummy Plus&lt;/a&gt;&amp;nbsp;as an example.&lt;br /&gt;
&lt;br /&gt;
First one is there for actual CI purposes, it is compiling and running unit tests for each commit to main branch. Before compiling, it is using the above script file to integrate gaming libraries into code base and then using Unity&#39;s batch mode mechanism to compile it. For &lt;a href=&quot;https://www.facebook.com/GinRummyPlus/&quot; target=&quot;_blank&quot;&gt;Gin Rummy Plus&lt;/a&gt; it has been &lt;b&gt;2187 run&lt;/b&gt; so far and it takes &lt;b&gt;40 seconds&lt;/b&gt;&amp;nbsp;one individual run.&lt;br /&gt;
&lt;br /&gt;
Second one is for running integration tests, it is working twice a day and manually when required. I have already mentioned about &lt;a href=&quot;http://blog.hakansaglam.com/2016/09/testing-in-unity3d.html&quot;&gt;integration tests in more detail&lt;/a&gt;. And for&lt;a href=&quot;https://www.facebook.com/GinRummyPlus/&quot; target=&quot;_blank&quot;&gt; Gin Rummy Plus&lt;/a&gt; it has been &lt;b&gt;462 run&lt;/b&gt; so far and it takes &lt;b&gt;18 minutes&lt;/b&gt; one individual run.&lt;br /&gt;
&lt;br /&gt;
Third and forth ones are there for creating binary files for iOS and Android. Actually each of them is creating two binaries one is to send &lt;a href=&quot;https://hockeyapp.net/&quot; target=&quot;_blank&quot;&gt;HockeyApp&lt;/a&gt; for testing purposes, one is to send App Stores for publishing. The jobs are not just creating binaries but also sending them to HockeyApp and App Stores. These binaries have some differences, for instance the ones for HockeyApp includes some extra debug features like cheat buttons to be able to test some scenarios, or some extra information to be able to understand a/b test groups for instance.&lt;br /&gt;
&lt;br /&gt;
We are running these jobs manually, when we think that a new version of the game needs to be published.&amp;nbsp;After job uploads the binaries it is informing our product managers and testers automatically. After that it is up to them to publish the binary or open tickets about the issues they have discovered in this version.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
To differentiate the builds inside the code base we are using &lt;b&gt;Scripting Define Symbols&lt;/b&gt;.&amp;nbsp;I mean custom compilation flags (see &lt;a href=&quot;https://docs.unity3d.com/Manual/PlatformDependentCompilation.html&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;s2&quot;&gt;Unity&#39;s platform dependent compilation&lt;/span&gt;&lt;/a&gt;&amp;nbsp;page for details). We have two extra flags (DEBUG and ADHOC) a long with build-in PRODUCTION flag. DEBUG is there for development purposes it has more logs, more extra functions. ADHOC is there for testing purposes, and PRODUCTION is for stores.&lt;br /&gt;
&lt;br /&gt;
Let me give more details about these binary build jobs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: center;&quot;&gt;
Binary Builds&lt;/h3&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjp7pjsnGt0wweV5ig8A7AhyphenhyphenmDlcOcKOBdUocF1t_B1MbYQj74iZMDd1zMZ_DT8NBKqIJnPEAq9tqiNiONCn-4jusVHhhY20LVzbuMpYOVedI1LaJzNLiMWHV8gUyODqpe_nT8bIuQyw78/s1600/apple-logo-blue.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; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjp7pjsnGt0wweV5ig8A7AhyphenhyphenmDlcOcKOBdUocF1t_B1MbYQj74iZMDd1zMZ_DT8NBKqIJnPEAq9tqiNiONCn-4jusVHhhY20LVzbuMpYOVedI1LaJzNLiMWHV8gUyODqpe_nT8bIuQyw78/s200/apple-logo-blue.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;b&gt;For iOS, &lt;/b&gt;when you build a&amp;nbsp;Unity project it creates an intermediate Xcode project, from that project you can create the actual binary &lt;b&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/.ipa&quot; target=&quot;_blank&quot;&gt;ipa file&lt;/a&gt;&lt;/b&gt; (you have to run it on MacOS system). And this job is doing it twice in a single run, to create two binaries as I mentioned above. That is why iOS jobs is taking &lt;b&gt;17 minutes&lt;/b&gt; on average.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
After creation of intermediate Xcode project, most of the cases you have to make configuration on this intermediate project to be able configure some native iOS settings like compile flags, like &lt;a href=&quot;https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/AboutInformationPropertyListFiles.html&quot; target=&quot;_blank&quot;&gt;info.plist&lt;/a&gt;&amp;nbsp;updates, like &lt;a href=&quot;https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html&quot; target=&quot;_blank&quot;&gt;url schemes&lt;/a&gt; updates. So we are using &lt;a href=&quot;https://docs.unity3d.com/ScriptReference/Callbacks.PostProcessBuildAttribute.html&quot; target=&quot;_blank&quot;&gt;Unity&#39;s post process build attribute&lt;/a&gt; frequently to make this custom configuration programatically.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
To create the binary from the Xcode project, and upload to HockeyApp and App Store (&lt;a href=&quot;https://developer.apple.com/testflight/&quot; target=&quot;_blank&quot;&gt;TestFlight&lt;/a&gt;) we are using our custom iOS Build Library which is already being used for our native iOS games. I will not give any details of native builds and all confusing provisioning profile configurations. That is another post&#39;s topic.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The last binary that we have sent to App Store is 56 MB. It is almost two times bigger than our native iOS games. It is mainly because of splash screen. Yes, you read it correctly, just because of splash screen your binary is increased at least 10 MB. I hope &lt;a href=&quot;https://www.youtube.com/watch?v=5SJ562A7V-E&quot; target=&quot;_blank&quot;&gt;there will be a solution in the next versions of Unity.&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaha0vr6cueYIFIH0exZ-jCX2kYzwP95feGyzzVvTsuloDK_iZnRfqOX33JGojFj6CSTRVDs_DECuMtSA30rPWX623JYiVMh9XTyxXOmrXObkTWgm1dKVUklGHVs00PJTgXIU_8deBfOg/s1600/android-green-logo.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; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaha0vr6cueYIFIH0exZ-jCX2kYzwP95feGyzzVvTsuloDK_iZnRfqOX33JGojFj6CSTRVDs_DECuMtSA30rPWX623JYiVMh9XTyxXOmrXObkTWgm1dKVUklGHVs00PJTgXIU_8deBfOg/s200/android-green-logo.jpg&quot; width=&quot;193&quot; /&gt;&lt;/a&gt;&lt;b&gt;For Android, &lt;/b&gt;it is much more easier process. Because Unity can create binary&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Android_application_package&quot; target=&quot;_blank&quot;&gt;apk file&lt;/a&gt; &lt;/b&gt;without creating an intermediate project. So it takes way too quick to create two binaries according to iOS build. It takes around &lt;b&gt;7 minutes&lt;/b&gt; to create two binaries and upload one to HockeyApp and other to Play Store. We are using Jenkins plugins to make these uploads.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Unlike iOS builds, to make the native configurations we don&#39;t need to use post process build attribute. We just use the &lt;a href=&quot;https://developer.android.com/guide/topics/manifest/manifest-intro.html&quot; target=&quot;_blank&quot;&gt;Manifest&lt;/a&gt;&amp;nbsp;files to make the configurations.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The last binary that we have sent Play Store is 36 MB. It is also higher than our native Android games, but not like iOS. It is just 5-6 MB bigger. I can give more information about how to decrease the size of binaries on iOS and Android in another post (may be).&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
So as a conclusion our CI system for Unity games is consist of&amp;nbsp;&lt;a href=&quot;https://jenkins.io/&quot; target=&quot;_blank&quot;&gt;Jenkins&lt;/a&gt;, &lt;a href=&quot;https://docs.unity3d.com/Manual/CommandLineArguments.html&quot; target=&quot;_blank&quot;&gt;Unity&#39;s command line tools&lt;/a&gt; and a little bit of &lt;a href=&quot;https://developer.apple.com/library/content/documentation/OpenSource/Conceptual/ShellScripting/shell_scripts/shell_scripts.html&quot; target=&quot;_blank&quot;&gt;shell scripting&lt;/a&gt;, that is all.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
We are very close to end of this Unity3D series, just one more :)&amp;nbsp;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</description><link>http://blog.hakansaglam.com/2016/09/continuous-integration-and-delivery.html</link><author>noreply@blogger.com (Hakan Saglam)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLp28VhL6QtooCPlrsB9Zi_V-hTufzftyoTpMKjc1cJxHUenasm30lGJ1pZKdpcK6GK_nftTtqsjeeeI5EWXtlQpodY_C97EhxexiArD2OeRVfZwHOpZdPbbMxVjghq_HWPjlWIsO1TIU/s72-c/gin-jenkins-jobs.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3672420913092616782.post-620524470378461557</guid><pubDate>Sun, 18 Sep 2016 13:44:00 +0000</pubDate><atom:updated>2016-09-29T22:37:54.849+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">development</category><category domain="http://www.blogger.com/atom/ns#">game</category><category domain="http://www.blogger.com/atom/ns#">mobile</category><category domain="http://www.blogger.com/atom/ns#">optimization</category><category domain="http://www.blogger.com/atom/ns#">performance</category><category domain="http://www.blogger.com/atom/ns#">unity</category><title>Performance Optimization in Unity3D for Mobile Games</title><description>&lt;div style=&quot;text-align: justify;&quot;&gt;
This is the sixth post on Unity3D so far, if you wonder what I have said before, please take a look:&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;
1.&amp;nbsp;&lt;a href=&quot;http://blog.hakansaglam.com/2016/09/why-do-we-move-to-unity3d.html&quot;&gt;Why do we move to Unity3D?&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
2.&amp;nbsp;&lt;a href=&quot;http://blog.hakansaglam.com/2016/09/power-of-unity3d-editor.html&quot;&gt;Power of Unity3D Editor&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
3. &lt;a href=&quot;http://blog.hakansaglam.com/2016/09/coding-in-unity3d.html&quot; target=&quot;_blank&quot;&gt;Coding in Unity3D&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
4. &lt;a href=&quot;http://blog.hakansaglam.com/2016/09/testing-in-unity3d.html&quot;&gt;Testing in Unity3D&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
5. &lt;a href=&quot;http://blog.hakansaglam.com/2016/09/debugging-in-unity3d.html&quot;&gt;Debugging in Unity3D&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Performance is important. Nobody argues with that, it is important on every software projects backend, web, mobile it doesn&#39;t matter. Whatever technology it is, whomever using it, everyone wants that product to be fast, smooth and responsive.&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;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjm_HoQ3L5XgGEzpHlU0IEaani7w-MyMT70Qt1TVRLXGJjl90RNs72dINq5sDLk1sC-SrDED0oPxSTFXLzA506-9m80qdmASs9pJilzcNpUZ7Sh-hq_VTTJ6B53sHso-FXyDWO9wH3fDg/s1600/commit-strip.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; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjm_HoQ3L5XgGEzpHlU0IEaani7w-MyMT70Qt1TVRLXGJjl90RNs72dINq5sDLk1sC-SrDED0oPxSTFXLzA506-9m80qdmASs9pJilzcNpUZ7Sh-hq_VTTJ6B53sHso-FXyDWO9wH3fDg/s320/commit-strip.jpg&quot; width=&quot;291&quot; /&gt;&lt;/a&gt;In casual games, may be &amp;nbsp;it is a little bit more important. Since it is casual game, it should open very quickly because you just want to play the game for 5 minutes, you should not wait for minutes to open. And more importantly it should work on any kind of device not just high end devices, because you don&#39;t expect anyone to have that device only for game purposes.&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;
When you consider all of these, performance is not something you should leave behind. You have to consider it in the very beginning of the project and also keep in mind while you are developing any feature.&amp;nbsp;&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;
With Unity it is harder I guess. Because it is a black box engine that support multiple devices from mobile ones to game consoles. It is easy to create a game project and develop a playable version. But it is really hard to polish it in means of performance. It has a lot of adjustment points, some of them makes console games much better, but makes mobile game suffer. So it is important to have good knowledge and experience on Unity to optimise your game.&amp;nbsp;&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;
There is a talk in &lt;a href=&quot;https://unite.unity.com/2016/europe&quot; target=&quot;_blank&quot;&gt;Unite 2016 Europe&lt;/a&gt; about &lt;a href=&quot;https://www.youtube.com/watch?v=j4YAY36xjwE&amp;amp;list=PLX2vGYjWbI0RtPoeDoBUPnwY8USGra-pD&amp;amp;index=27&quot; target=&quot;_blank&quot;&gt;Optimizing Mobile Applications&lt;/a&gt;, I strongly advice this talk.&amp;nbsp;&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;
The main things you&#39;ll want to consider are the size of your game, how much memory your game uses, and how much computing power your game needs. When targeting mobile devices, remember that a large portion of the market has phones that are a few years old. To reach the widest possible audience, you should optimize your game for low-spec devices. Unity releases very useful statistics about the&amp;nbsp;&lt;a href=&quot;http://hwstats.unity3d.com/&quot; target=&quot;_blank&quot;&gt;specs of mobile devices&lt;/a&gt;&amp;nbsp;running Unity games.&amp;nbsp;&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;
I will mention three practical points about what we have done in our card games to improve performance.&amp;nbsp;&lt;/div&gt;
&lt;h3 style=&quot;text-align: center;&quot;&gt;
Sprite Sheets&lt;/h3&gt;
&lt;div&gt;
&lt;span style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;text-align: justify;&quot;&gt;In computer graphics, a sprite is a two-dimensional bitmap that is integrated into a scene. To render / draw that sprite into scene,&lt;/span&gt;&amp;nbsp;game engine has to issue a draw call to the GPU.&amp;nbsp;&lt;span style=&quot;text-align: justify;&quot;&gt;All the purpose is reduce Draw Calls and increase Total&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;s1&quot; style=&quot;text-align: justify;&quot;&gt;Batched Calls. A draw call is one pass from a GPU. The goal is that we want to have everything batched because batching is what happens when we actually talk to the GPU, so the more draw calls we have batched into a single pass means that the performance will be better inside of the rendering of our game.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhc7wJLhjWuQ4JIZZeVsdWpz9vfUiHkdDZaZD_-5oBef6fo_CDwnWjovwDHwOEfk2Tq7SEqIVdjo1oi62-z-Oh8jZB_UPBVbkJyLLX6tRw-HvpUpMuXNLbusiWgynSdzQgmzxvM6KA36tY/s1600/frame-debugger.gif&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; height=&quot;203&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhc7wJLhjWuQ4JIZZeVsdWpz9vfUiHkdDZaZD_-5oBef6fo_CDwnWjovwDHwOEfk2Tq7SEqIVdjo1oi62-z-Oh8jZB_UPBVbkJyLLX6tRw-HvpUpMuXNLbusiWgynSdzQgmzxvM6KA36tY/s320/frame-debugger.gif&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;To see how these objects rendered into screen we are using &lt;a href=&quot;http://blog.hakansaglam.com/2016/09/debugging-in-unity3d.html&quot;&gt;Frame Debugger&lt;/a&gt;. And it shows that how sprites rendered in which order. When you look at the gif image in the left, you can see some sprites rendered only single call, some are rendered together with other sprites, which means they rendered in batch. No matter how many sprites exists while they are in batch it is count one draw call means one call to GPU. To be able to batch all sprites we are using sprite sheets to load every sprite into one big &lt;a href=&quot;https://developer.apple.com/library/ios/recipes/xcode_help-texture_atlas/AboutTextureAtlases/AboutTextureAtlases.html&quot; target=&quot;_blank&quot;&gt;atlas file&lt;/a&gt; and load to GPU and increase the Bathced Calls and reduce the Draw Calls.&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
A sprite sheet (atlas file) is a bitmap image file that contains several smaller graphics in a tiled grid arrangement. By compiling several graphics into a single file, you enable Animate and other applications to use the graphics while only needing to load a single file. Unity has built-in&amp;nbsp;&lt;a href=&quot;https://docs.unity3d.com/Manual/SpritePacker.html&quot; target=&quot;_blank&quot;&gt;Sprite Packer&lt;/a&gt;&amp;nbsp;to create sprite sheets from your sprites. We are using&amp;nbsp;&lt;a href=&quot;https://www.codeandweb.com/texturepacker&quot; target=&quot;_blank&quot;&gt;TexturePacker&lt;/a&gt;&amp;nbsp;which is a better packer according to Unity&#39;s built-in one.&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
One other key point is the scene hierarchy. Unfortunately it is also impacting the draw calls count especially if you have multiple sprite sheets. Let&#39;s say you have two sprite sheets and you need to render some sprites from one, and some from other in the same scene. Try to organize your hierarchy to gather all your sprites that comes from same sprite sheet, so that they will be rendered in batch with one draw call. And then put others that comes from second sprite sheet.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: center;&quot;&gt;
Unity Profiler&lt;/h3&gt;
&lt;div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;In the editor there are two types of profile tools.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj33B7Ypmoy62zYkMQz05lHKmZ3XifD_2zuy1TWHKaPXC74ngnYvAuxRvX80LMeNx31Q9jOln6ZUpTxG1KBNc0w14t8mUFzarx5YnDhE3mQ_voFtAAO_Y9SQ-b783lkbiDX7aCENwpKXmQ/s1600/gin-stats-window.png&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; height=&quot;219&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj33B7Ypmoy62zYkMQz05lHKmZ3XifD_2zuy1TWHKaPXC74ngnYvAuxRvX80LMeNx31Q9jOln6ZUpTxG1KBNc0w14t8mUFzarx5YnDhE3mQ_voFtAAO_Y9SQ-b783lkbiDX7aCENwpKXmQ/s320/gin-stats-window.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;One is called Stats Window.&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;While your game is running, click on the Stats button at&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; the top right of the game window to open the Stats window. Here you can see some basic stats about your game. At the top is your frames per second, which is not that useful since it will be different when running on a mobile device.&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;But things like the number of draw calls, triangles, and&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; textures should be consistent with what you&#39;ll get on mobile. The more draw calls and triangles you have, the more processing power your game will require to render your scene. There&#39;s no hard and fast rule as to many draw calls you should have, since it depends a lot on what shaders you use. Under 50 draw calls should run quickly on most devices although newer devices and tablets can handle more. If your game is running slowly, and you see that you have hundreds or thousands draw calls, that&#39;s probably one of the reasons.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;







&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;The number of textures being used is another good metric to consider.&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; If you&#39;re loading and unloading textures at run time, like we did when switching atlases, the number of textures in the stat window will let you check if they are being de-allocated properly or if they&#39;re still in memory. You can also see how much memory is being used by textures at any given time.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;







&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;Staying under 30% of the available memory on the device is a good idea. But remember that there are other things in the scene that also use memory, besides the textures. &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;Even without the pro version of Unity, you can get some useful information&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt; about the performance and memory usage of your game using the Stats window.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlWck7Tp3yI8-THFYTbdCCxnOTs9xRcTQozHYYhkw-_PO1GE5qsJpMrzoVYEmla8uwlI-h56OSuCOxMxg9TvkvxOlrluQCkOz7wzOPcvZum5_t5uBXL__WI6ryCbU41DYm3qJ_by6YJOs/s1600/unity-profiler-window.png&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; height=&quot;262&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlWck7Tp3yI8-THFYTbdCCxnOTs9xRcTQozHYYhkw-_PO1GE5qsJpMrzoVYEmla8uwlI-h56OSuCOxMxg9TvkvxOlrluQCkOz7wzOPcvZum5_t5uBXL__WI6ryCbU41DYm3qJ_by6YJOs/s320/unity-profiler-window.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;b&gt;Second one is Profiler Window.&lt;/b&gt; The Unity Profiler Window helps you to optimize your game. It reports for you how much time is spent in the various areas of your game. For example, it can report the percentage of time spent rendering, animating or in your game logic. You can play your game in the Editor with Profiling on, and it will record performance data. The Profiler window then displays the data in a timeline, so you can see the frames or areas that spike (take more time) than others. By clicking anywhere in the timeline, the bottom section of the Profiler window will display detailed information for the selected frame. Let me tell you what you can measure with profiler. Before moving that part, you already might know that profilers also add some overhead on the performance. So when using profiling it is typical to consider only the ratio (or percentage) of time spent in certain areas.&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;The CPU Usage Profiler&lt;/b&gt; displays where time is spent in your game. When it is selected, the lower pane displays hierarchical time data for the selected frame. See documentation on the &lt;a href=&quot;https://docs.unity3d.com/Manual/ProfilerWindow.html&quot;&gt;&lt;span class=&quot;s2&quot;&gt;Profiler Window&lt;/span&gt;&lt;/a&gt; to learn more about the information on the Profiler timeline.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;







&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;The Rendering Profiler&lt;/b&gt; displays rendering statistics. The timeline displays the number of Batches, SetPass Calls, Triangles and Vertices rendered. The lower pane displays more rendering statistics, which closely match the ones shown in the Stats&amp;nbsp;Window.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;







&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;b&gt;The Memory Profiler&lt;/b&gt; shows a simple overview how memory is used throughout Unity in real-time on a per-frame basis. And also allows you take a snapshot of the current state.&amp;nbsp;After taking a sample, the Profiler window is updated with a tree view where you can explore memory usage.&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;The Audio Profiler&lt;/b&gt; monitors significant performance meters about the audio system, such as total load and voice counts. When you highlight the pane, the lower part of the window changes into a detailed view about various parts of the audio system not covered by the graphs.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;b&gt;The Physics Profiler&lt;/b&gt; shows the following statistics like the numbers of Active and Sleeping Rigidbodies, Static and Dynamic Colliders.&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;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;The GPU Profiler&lt;/b&gt; is similar to the CPU Profiler, with various contributions to rendering time shown as a hierarchy in the lower panel. Select an item from the hierarchy to see a break-down of contributions in the right-hand panel.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
For more information about Unity Profiler please refer to official Unity &lt;a href=&quot;https://docs.unity3d.com/Manual/Profiler.html&quot; target=&quot;_blank&quot;&gt;documentation&lt;/a&gt;.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
One last thing is there is a new very low level memory profiler API. It can tell you which objects got blamed for how much c++ memory allocations. It will also give you a dump of the entire c# heap, as well as c# type descriptions. This API is too low level for most people to benefit from. The intention is to write a much nicer UI window on the top of this API that will actually be readily useful for many users, in helping them figure out which objects are loaded, which objects take a lot of memory, and most important, &lt;i&gt;why&lt;/i&gt; that object is in memory. This repository is that nicer UI window, very much in progress of being built. Actually it is &lt;a href=&quot;https://bitbucket.org/Unity-Technologies/memoryprofiler&quot; target=&quot;_blank&quot;&gt;an open source project&lt;/a&gt; by Unity.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: center;&quot;&gt;
Xcode Instruments&lt;/h3&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;
There is an official Unity post about &lt;a href=&quot;http://blogs.unity3d.com/2016/02/01/profiling-with-%20instruments/&quot; target=&quot;_blank&quot;&gt;how to use Xcode as profiler&lt;/a&gt;. &lt;a href=&quot;https://www.youtube.com/watch?v=j4YAY36xjwE#t=3m5s&quot; target=&quot;_blank&quot;&gt;Officially Unity team also suggesting to use Xcode Instruments&lt;/a&gt;. Even if you don&#39;t have any performance problem, still it would give you a lot of details about how Unity is working under the hood. Because profiler will not just profile and show your code, but also internal codes of Unity.&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;
Xcode Instruments can see the things that Unity Profiler can&#39;t see such as application startup time. In the Time Profiler you can see what makes your app waits while showing splash screen. Most of the time spent in the internal Unity codes, but there are two points that your code impacts this time.&amp;nbsp;&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;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjEjyaiF1bKu5JNKiK7dWLX02zq-YvICNZtUMlrJjXKtxNDvByx369U3mUPNuORB91D_eJOiISxSm8gvsafP6JZehQT56GJujFmyVqCGtqmV_2WTHJtvQQqB80A4gA3clJWOFXLHFLOXY/s1600/xcode-instrumnets-startup.png&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; height=&quot;91&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjEjyaiF1bKu5JNKiK7dWLX02zq-YvICNZtUMlrJjXKtxNDvByx369U3mUPNuORB91D_eJOiISxSm8gvsafP6JZehQT56GJujFmyVqCGtqmV_2WTHJtvQQqB80A4gA3clJWOFXLHFLOXY/s200/xcode-instrumnets-startup.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;If you look at the image you will see &lt;b&gt;PlayerLoadGlobalManagers &lt;/b&gt;which is responsible to index your &lt;a href=&quot;https://docs.unity3d.com/Manual/LoadingResourcesatRuntime.html&quot; target=&quot;_blank&quot;&gt;Resources&lt;/a&gt;.&amp;nbsp;So if you have too many items in this folder it will directly impact your apps startup time. In the beginning we were putting all our resources into this folder even it is not needed to load it dynamically. After learning this fact, we just leave only the dynamic images in the folder and gain around 5.4% startup time decrease.&amp;nbsp;&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;
Second item is the &lt;b&gt;Awake&lt;/b&gt; functions of game object attached in the first scene (&lt;a href=&quot;http://blog.hakansaglam.com/2016/09/coding-in-unity3d.html&quot;&gt;consider that we have only one scene&lt;/a&gt;). All Awake functions will be called during the splash screen. We have calculated that 19.2% of startup time is because of these functions. When we investigate deeply we understand that almost all of this time is being spent while calculated dependency graph by &lt;a href=&quot;http://strangeioc.github.io/strangeioc/&quot; target=&quot;_blank&quot;&gt;StrangeIoC&lt;/a&gt;. We didn&#39;t do anything to reduce this time yet.&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;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0_BYJf-QnccpImbDAxzSfL6d1VisH-WwXZY2DrADUFeGq6k2xu1QgQ7Wz4zmHNq5mqEMAFpxl-d5lF-NNEjkr7zKGGZxbZ48h1xij2u423IZSsTqw5mK-Fgt6Yc35n570nQFmUT609kU/s1600/xcode-instruments-runtime.png&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; height=&quot;83&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0_BYJf-QnccpImbDAxzSfL6d1VisH-WwXZY2DrADUFeGq6k2xu1QgQ7Wz4zmHNq5mqEMAFpxl-d5lF-NNEjkr7zKGGZxbZ48h1xij2u423IZSsTqw5mK-Fgt6Yc35n570nQFmUT609kU/s200/xcode-instruments-runtime.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;On the other hand while running game, you can profile the update loop of UnityEngine. And you can see the internal code on each frame as well as your code executed on &lt;b&gt;Update, FixedUpdate &lt;/b&gt;and&lt;b&gt; LateUpdate&lt;/b&gt; functions. And again your code executed on &lt;b&gt;DelayedCallManager &lt;/b&gt;which is there for your &lt;b&gt;Coroutines.&amp;nbsp;&lt;/b&gt;And you may also see some extra time on &lt;b&gt;CanvasManager &lt;/b&gt;which is responsible for all Unity&#39;s UI system like calculations of text sizes and rendering of texts etc..&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;
Another very handy instruments of Xcode is &lt;b&gt;Memory Leaks&lt;/b&gt;, Xcode will show you the memory leaks of your code (sometimes it is internal code), but sometimes it gives you a good idea to handle or get rid of this leak.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&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/AVvXsEjSsACj15TGZojm6MBtgYB0dG-vO9IZeBVwohh8zQ2agMXpoutsk-38DBp51WpmWkmhE_ID3I9hYugqtKyPs0aLg1Nv1gwsuOgiBuC6IFbq_voTbicBDFHKLk8EMizK6o58UYkYhWCOs1k/s1600/xcode-instruments-memory.png&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; height=&quot;94&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSsACj15TGZojm6MBtgYB0dG-vO9IZeBVwohh8zQ2agMXpoutsk-38DBp51WpmWkmhE_ID3I9hYugqtKyPs0aLg1Nv1gwsuOgiBuC6IFbq_voTbicBDFHKLk8EMizK6o58UYkYhWCOs1k/s200/xcode-instruments-memory.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Actually other than memory leaks, you might still have memory issues. Especially the most common one is &lt;b&gt;Memory Fragmentation&lt;/b&gt;. Unity has &lt;a href=&quot;https://docs.unity3d.com/Manual/UnderstandingAutomaticMemoryManagement.html&quot; target=&quot;_blank&quot;&gt;automatic memory management&lt;/a&gt;&amp;nbsp;which is cool. But if your game creates a lot of temporary object while executing your code, this automatic memory allocations by Unity will end up memory fragmentation. Don&#39;t forget in Unity, the heap only expands, never shrinks. So it is very very important to avoid temporary objects. To avoid them you have to know when they are created by Unity. Here it is the most commonly used ones:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Use simple &lt;b&gt;for&lt;/b&gt; loops instead of &lt;b&gt;foreach&lt;/b&gt; loops. The reason is that a foreach loop internally creates a new enumerator instance.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Boxing&lt;/b&gt; is the process of converting a value type to the type object or to any interface type implemented by this value type.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;String Concatenation &lt;/b&gt;also creates temporary string objects, instead String Builder can be used.&amp;nbsp;&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;All Unity APIs that return arrays (&lt;b&gt;CreateScriptingArray&lt;/b&gt;) will allocate new copies of arrays. Minimize calls to these methods.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Linq&lt;/b&gt; usage will create extreme amount of temporary objects so examine the time lost to creating and discarding Linq queries; consider replacing hotspots with manually optimized methods.&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
So I think this is all I want to mention about optimizing the mobile Unity game. Actually I was planning write a few lines about optimizing the size of the binaries (on iOS and Android) but I guess it is part of another topic let&#39;s see.&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;
I am almost done with this Unity related blog posts. &lt;a href=&quot;http://blog.hakansaglam.com/2016/09/continuous-integration-and-delivery.html&quot;&gt;A few of them left.&lt;/a&gt; Just hang in there :)&lt;/div&gt;
</description><link>http://blog.hakansaglam.com/2016/09/performance-optimization-in-unity3d-for.html</link><author>noreply@blogger.com (Hakan Saglam)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjm_HoQ3L5XgGEzpHlU0IEaani7w-MyMT70Qt1TVRLXGJjl90RNs72dINq5sDLk1sC-SrDED0oPxSTFXLzA506-9m80qdmASs9pJilzcNpUZ7Sh-hq_VTTJ6B53sHso-FXyDWO9wH3fDg/s72-c/commit-strip.jpg" height="72" width="72"/><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3672420913092616782.post-1887827912061342813</guid><pubDate>Fri, 16 Sep 2016 12:38:00 +0000</pubDate><atom:updated>2016-09-29T14:27:23.291+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">debug</category><category domain="http://www.blogger.com/atom/ns#">debugging</category><category domain="http://www.blogger.com/atom/ns#">development</category><category domain="http://www.blogger.com/atom/ns#">game</category><category domain="http://www.blogger.com/atom/ns#">mobile</category><category domain="http://www.blogger.com/atom/ns#">unity</category><title>Debugging in Unity3D</title><description>&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: right; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8XXnb4YSwwCxak2_NnDPOMwsGkM8D9esn-pxjSm8z7Z9F2umI6n6JpU2B4Q2t0ESAP_SUU92sUJxGYZ9yyzmXvST5Iz-v3XkI3rbRuJDctQR1py7awpu2jRKl7UKI_Whi8SjhUJFlXzg/s1600/debugging.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8XXnb4YSwwCxak2_NnDPOMwsGkM8D9esn-pxjSm8z7Z9F2umI6n6JpU2B4Q2t0ESAP_SUU92sUJxGYZ9yyzmXvST5Iz-v3XkI3rbRuJDctQR1py7awpu2jRKl7UKI_Whi8SjhUJFlXzg/s320/debugging.gif&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Now it is time to Debug&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
It has been four posts so far.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.&amp;nbsp;&lt;a href=&quot;http://blog.hakansaglam.com/2016/09/why-do-we-move-to-unity3d.html&quot;&gt;Why do we move to Unity3D?&lt;/a&gt;&lt;br /&gt;
2.&amp;nbsp;&lt;a href=&quot;http://blog.hakansaglam.com/2016/09/power-of-unity3d-editor.html&quot;&gt;Power of Unity3D Editor&lt;/a&gt;&lt;br /&gt;
3. &lt;a href=&quot;http://blog.hakansaglam.com/2016/09/coding-in-unity3d.html&quot;&gt;Coding in Unity3D&lt;/a&gt;&lt;br /&gt;
4. &lt;a href=&quot;http://blog.hakansaglam.com/2016/09/testing-in-unity3d.html&quot;&gt;Testing in Unity3D&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another important topic is debugging, which is an essential point in software engineering. As a developer we read codes, even more than we write code. While reading the code, having good debugging skills and tools is quite important. It makes your life much easier. With Unity you have different kinds of debugging tools as well as very basic debugging approaches.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: center;&quot;&gt;
MonoDevelop&lt;/h3&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
I have already write about Mono Develop, the default IDE of Unity. It has built-in debugger, which is integrated with Unity. So you can attach to Unity process inside the IDE, and put a breakpoint in the code base and run the editor. You will see that it will stop on the selected line, and you will have the usual actions like pause, continue, run step by step, step inside etc... And also you can see the usual information like stack trace, value of local and global variables etc...&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;
It sounds like a proper debugger, right?&amp;nbsp;&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;
Yes in theory, it is a proper debugger which has almost every expected feature from a regular debugger.&amp;nbsp;&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;
But unfortunately in practice it is not like that. It is almost certain that it will crash either Unity or MonoDevelop in each one of two debug try. So it is literally useless, unless you want to live some kind of excitement and believe me it is not that pleasant to restart Unity (or MonoDevelop) in the middle of coding.&amp;nbsp;&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;
So the old way is the best way. Plain old regular logging. That is it. Put &lt;b&gt;Debug.Log()&lt;/b&gt; in every corner of the code base and learn how it is running. And find what you are looking for. Yes it is not that fancy but it is some how enough, and it is the only way of debugging your scripts. So I suggest you to get used to it.&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/AVvXsEi8CkC87fiMd8wRVPSuCviuglcZFo-qxvXP-6a-wcMoEVeDtM2dmMBYbrVgpyf2lIHQ0eH17G8Sv6hiX0LeIZhnoJhCGc2yDvu0WWiM04phjWy2Q9dfw4NUssVeST95sTi2dnxNLvA2PKI/s1600/card-throw-path.gif&quot; imageanchor=&quot;1&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;305&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8CkC87fiMd8wRVPSuCviuglcZFo-qxvXP-6a-wcMoEVeDtM2dmMBYbrVgpyf2lIHQ0eH17G8Sv6hiX0LeIZhnoJhCGc2yDvu0WWiM04phjWy2Q9dfw4NUssVeST95sTi2dnxNLvA2PKI/s400/card-throw-path.gif&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h3 style=&quot;text-align: center;&quot;&gt;
Editor Debugging&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
In one of previous posts, I have mentioned about &lt;a href=&quot;http://blog.hakansaglam.com/2016/09/power-of-unity3d-editor.html&quot;&gt;Unity Editor&lt;/a&gt;. Here it is another very handy feature. Unity will actually let you change the value of a script’s variables on inspector window while the game is running. This is very useful for seeing the effects of changes directly without having to stop and restart. When gameplay ends, the values of the variables will be reset to whatever they were before you pressed Play. This ensures that you are free to tweak your object’s settings without fear of doing any permanent damage.&lt;br /&gt;
&lt;br /&gt;
When you pause the game you can see all your game objects&#39; properties and states. It is a kind of debugger right, even it has step by step option :) actually it is a little different of course. Each step is not a new line in your code, each step is the next frame. That is why it is called &quot;frame by frame&quot; :)&lt;br /&gt;
&lt;br /&gt;
You can see the scene and also all the state of the scene when you pause the game or when you go frame by frame. Actually there is even better option that you can change everything in the scene. Enable / Disable game objects, change their location or scale or color. What ever you change, you will see the change instantly. Then when you hit play again it will resume with this new states. Actually you can do this without pausing the game at all.&lt;br /&gt;
&lt;br /&gt;
This is very powerful feature that you can leverage to debug the scene and game objects, and also you can use this feature to tweak some fine adjustment on the scene like 1 pixel left, 1 pixel right :)&lt;br /&gt;
&lt;br /&gt;
To make it clear, let me give you an example from our games. As you already know we have a card game &lt;a href=&quot;https://itunes.apple.com/us/app/gin-rummy-plus-free-online/id1068095192&quot; target=&quot;_blank&quot;&gt;Gin Rummy Plus&lt;/a&gt;. According to rules of this card game you can finish the round when all your cards sorted for certain rules. And to finish the round you have to throw one last card to pile. And it should not be same as throwing a regular card, it should be more impressive and it should give the feeling that you won the round.&lt;br /&gt;
&lt;br /&gt;
To be able to give that feeling we should have try different options. We have created three different &lt;a href=&quot;https://en.wikipedia.org/wiki/B%C3%A9zier_curve&quot; target=&quot;_blank&quot;&gt;bezier path&lt;/a&gt;. One for player&#39;s last card throw, one for opponent&#39;s last card throw and one for regular card throw. And instead of hard coding these bezier paths, we just use editor window to tweak and find the best way of these throw paths.&lt;br /&gt;
&lt;br /&gt;
And one more tip is you can also pause the game programatically. Just type&amp;nbsp;&lt;b&gt;Debug.Break()&lt;/b&gt;&amp;nbsp;in your code and stop the world according to a condition. And you don&#39;t need to worry about it later, because it will do nothing in production. It&amp;nbsp;has one more significant advantage over manual pausing and stepping forward. It can pause your game in the middle of an execution frame. This means that part of your object may be still waiting for the Update() call and the other part has already been updated. This is really useful for situations when you’re dealing with a bug that appears randomly.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&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/AVvXsEh09ctMwCLukiHgVS9yzQucUGECd8IUajsgmQXtmSMSJ2xEbGk3rtB5adpl-0r8oDqEYPoIkt3OCCU8-3J08IcEsJGOMklOJrvVPwnGpO8Y3T3ciHjFhQ_7NJETlVxT19VcpASX3PHX-dU/s1600/frame-debugger.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;253&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh09ctMwCLukiHgVS9yzQucUGECd8IUajsgmQXtmSMSJ2xEbGk3rtB5adpl-0r8oDqEYPoIkt3OCCU8-3J08IcEsJGOMklOJrvVPwnGpO8Y3T3ciHjFhQ_7NJETlVxT19VcpASX3PHX-dU/s400/frame-debugger.gif&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: center;&quot;&gt;
Frame Debugger&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;The &lt;b&gt;Frame Debugger&lt;/b&gt; lets you freeze playback for a running game on a particular frame and view the individual &lt;i&gt;draw calls&lt;/i&gt; that are used to render that frame. As well as listing the drawcalls, the debugger also lets you step through them one-by-one so you can see in great detail how the Scene is constructed from its graphical elements.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;







&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;The Frame Debugger window&amp;nbsp;shows the drawcall information and lets you control the “playback” of the frame under construction.&amp;nbsp;&lt;/span&gt;The main list shows the sequence of drawcalls in the form of a hierarchy that identifies where they originated from. The panel to the right of the list gives further information about the drawcall such as the geometry details and the shader used for rendering.&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;Clicking on an item from the list will show the Scene (in the Game view) as it appears up to and including that drawcall. The left and right arrow buttons in the toolbar move forward and backward in the list by a single step and you can also use the arrow keys to the same effect. Additionally, the slider at the top of the window lets you “scrub” rapidly through the drawcalls to locate an item of interest quickly. Where a drawcall corresponds to the geometry of a GameObject, that object will be highlighted in the main Hierarchy panel to assist identification.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;To reduce the drawcalls, frame debugger is the key tool that we are using in our games. As you can see in the screenshots above, we still have some work to do. Our game&#39;s lobby screen has 55 drawcalls which is not a problem mid and high end devices, but might be a problem for some low end devices. That is why our target is to reduce it to at least less then 50 drawcalls.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&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/AVvXsEhCzfyig_apPiCxF1lZToRD0aef2TmMiagtZDLo3kaurdUjBVkyu78qqikyGTIfqxEGT-LE6NF4ta0sOw8qmH0QSqZSK3d9U2bfSQHomjq1_TrwnCd41UmuepQlSQzybq6sLH1tRbcmbSo/s1600/android-and-ios-logo.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;213&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCzfyig_apPiCxF1lZToRD0aef2TmMiagtZDLo3kaurdUjBVkyu78qqikyGTIfqxEGT-LE6NF4ta0sOw8qmH0QSqZSK3d9U2bfSQHomjq1_TrwnCd41UmuepQlSQzybq6sLH1tRbcmbSo/s320/android-and-ios-logo.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: center;&quot;&gt;
Debug on Device&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;div style=&quot;-webkit-text-stroke-width: 0px; color: black; font-family: Times; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;-webkit-text-stroke-width: 0px; color: black; font-family: Times; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt;
&lt;div style=&quot;margin: 0px; text-align: justify;&quot;&gt;
In general you will not need to make a lot of debugging on devices. According to our experience with Unity, most of the time you will see actual device behaviour inside the editor. And most of the time it is not changing according to device type. But for some rare cases and also for some native calls you might need to debug on device.&lt;/div&gt;
&lt;div style=&quot;margin: 0px; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
Debugging on device is more difficult and primitive. In theory you can have breakpoints in the code especially on iOS environment, but you cannot see the actual code, because it will be converted to native binary files. That means it is not useful at all. So only option is to put logs in your code and tail this logs to see how your code is behaving. Adding logs is not different than the one that I have already mentioned. But to see that log while running on device is a little different.&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;
To see the logs while playing game on device you are going to have different ways on iOS and Android.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;First iOS.&lt;/b&gt;&amp;nbsp;Before everything make sure that you are on a MacOS system, and Xcode has been successfully installed.&lt;br /&gt;
&lt;br /&gt;
The iOS application build process is a two step process.&amp;nbsp;When you build the Unity iOS game an Xcode project is generated.&amp;nbsp;It is generated with all the required libraries, precompiled .NET code and serialized assets. This project is required to sign, compile and prepare your game for distribution and/or run on the actual device.&lt;br /&gt;
&lt;br /&gt;
When you first run the game on device via Xcode project you are going to notice that it will take minutes to start running. After that you will see the logs in the console view of Xcode. Unfortunately it takes ages to see the logs on device.&lt;br /&gt;
&lt;br /&gt;
One tip, if you want to see the logs on an iOS device without running the application via Xcode.&amp;nbsp;Choose Window -&amp;gt; Devices from the Xcode menu. Then choose the device in the left column.&amp;nbsp;Click the up-triangle at the bottom left of the right hand panel to show the device console.&lt;br /&gt;
&lt;br /&gt;
Another tip, use incremental build when you build iOS app from Unity to quicken to run on Xcode. The C++ code generated by the IL2CPP scripting backend can be updated incrementally, allowing incremental C++ build systems to compile only the changes source files. This can significantly lower iteration times with the IL2CPP scripting backend. To use incremental builds, choose the “Append” option after selecting “Build” from the “Build Settings” dialog. The “Replace” option will perform a clean build.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&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;b&gt;Second Android.&amp;nbsp;&lt;/b&gt;&lt;span style=&quot;text-align: justify;&quot;&gt;Before everything make sure that Android SDK has been successfully installed. And integrated with Unity.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
You can build an Android application and install it to device is just one step. And it is much more faster according to iOS build. After installing and running the app on device you just need to open command line tool and type &quot;&lt;b&gt;adb logcat -s Unity&lt;/b&gt;&quot; you will see all the logs related with Unity and your game.&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;br /&gt;
Thanks for reading :) please go on with this &lt;a href=&quot;http://blog.hakansaglam.com/2016/09/performance-optimization-in-unity3d-for.html&quot;&gt;post&lt;/a&gt; if you wonder how to &lt;a href=&quot;http://blog.hakansaglam.com/2016/09/performance-optimization-in-unity3d-for.html&quot;&gt;make performance optimization in Unity3d for mobile games.&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</description><link>http://blog.hakansaglam.com/2016/09/debugging-in-unity3d.html</link><author>noreply@blogger.com (Hakan Saglam)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8XXnb4YSwwCxak2_NnDPOMwsGkM8D9esn-pxjSm8z7Z9F2umI6n6JpU2B4Q2t0ESAP_SUU92sUJxGYZ9yyzmXvST5Iz-v3XkI3rbRuJDctQR1py7awpu2jRKl7UKI_Whi8SjhUJFlXzg/s72-c/debugging.gif" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3672420913092616782.post-6164574734610199724</guid><pubDate>Wed, 14 Sep 2016 10:11:00 +0000</pubDate><atom:updated>2016-09-29T12:49:59.456+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">development</category><category domain="http://www.blogger.com/atom/ns#">game</category><category domain="http://www.blogger.com/atom/ns#">integration test</category><category domain="http://www.blogger.com/atom/ns#">unit test</category><category domain="http://www.blogger.com/atom/ns#">unity</category><title>Testing in Unity3D</title><description>&lt;div style=&quot;text-align: justify;&quot;&gt;
We have &lt;a href=&quot;http://blog.hakansaglam.com/2016/09/why-do-we-move-to-unity3d.html&quot; target=&quot;_blank&quot;&gt;chosen Unity for cross platform mobile game development&lt;/a&gt;,&lt;br /&gt;
we see &lt;a href=&quot;http://blog.hakansaglam.com/2016/09/power-of-unity3d-editor.html&quot;&gt;how powerful Unity Editor is&lt;/a&gt;,&lt;br /&gt;
&lt;linkkkk&gt;we learn &lt;a href=&quot;http://blog.hakansaglam.com/2016/09/coding-in-unity3d.html&quot;&gt;how to attach scripts to our game scene&lt;/a&gt;,&amp;nbsp;&lt;/linkkkk&gt;&lt;br /&gt;
now it is time to test our code and scene.&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;
I am not talking about QA testing or user acceptance testing. I am talking about the tests that we as software engineers are responsible while development is on going. I am talking about automated tests. There are different kinds of automated tests like Unit Tests, Integration Tests, Functional Tests etc...&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;
I will not discuss these concepts, their scope or why they are needed. Instead I will tell you what we are doing in our Unity games.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-size: x-large;&quot;&gt;
Unit Tests&lt;/span&gt;&lt;/h3&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5qtxC45R29JQ0jZXl6Gw1WCknHRe7zhdT3pUUMILvNTyllR0kBm6sTR-7igOHoaM3NfxpwJ1cHCo78pufhqFfk0fIpWu1Dhyr7j7ybxBvs4Ixd6kpzaosf_c76lBhyoIKXX6QHrO3s6A/s1600/unity-unit-tests.png&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; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5qtxC45R29JQ0jZXl6Gw1WCknHRe7zhdT3pUUMILvNTyllR0kBm6sTR-7igOHoaM3NfxpwJ1cHCo78pufhqFfk0fIpWu1Dhyr7j7ybxBvs4Ixd6kpzaosf_c76lBhyoIKXX6QHrO3s6A/s320/unity-unit-tests.png&quot; width=&quot;208&quot; /&gt;&lt;/a&gt;Unity does not have build-in support for unit testing. But there is a package in Unity Asset Store called &lt;a href=&quot;https://www.assetstore.unity3d.com/en/#!/content/13802&quot; target=&quot;_blank&quot;&gt;Unity Test Tools&lt;/a&gt; created by Unity itself. Actually it is an &lt;a href=&quot;https://bitbucket.org/Unity-Technologies/unitytesttools/&quot; target=&quot;_blank&quot;&gt;open source project&lt;/a&gt; that you can also contribute. If you integrate that tools into your project, you would have the ability to write unit tests in your project. These tools are based on NUnit library, a well-known unit testing library for .Net languages. More information about NUnit can be found on&amp;nbsp;&lt;a href=&quot;http://www.nunit.org/&quot;&gt;&lt;span class=&quot;s2&quot;&gt;http://www.nunit.org/&lt;/span&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;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;Your unit tests should be placed under Editor folder (it is a s&lt;span class=&quot;s2&quot;&gt;&lt;a href=&quot;https://docs.unity3d.com/Manual/SpecialFolders.html&quot;&gt;pecial folder&lt;/a&gt;&amp;nbsp;in Unity projects&lt;/span&gt;). The runner will scan the assemblies (including external assemblies included in the project that reference &lt;i&gt;nunit.framework&lt;/i&gt; library) and generate a list with tests that were located.&lt;/span&gt;&amp;nbsp;The tests are executed in the editor, in non-play mode, all in one frame. It is not possible to skip a frame and/or execute an API that requires skipping frames.&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;The code you execute via the test runner will directly affect your currently opened scene. For example, if you instantiate a &lt;a href=&quot;https://docs.unity3d.com/Manual/class-GameObject.html&quot; target=&quot;_blank&quot;&gt;GameObject&lt;/a&gt;, it will be persisted on the scene. Most of the times such behaviour is undesired.&amp;nbsp;&lt;/span&gt;Unity prevents to have unit tests on attached scripts (&lt;a href=&quot;https://docs.unity3d.com/ScriptReference/MonoBehaviour.html&quot; target=&quot;_blank&quot;&gt;MonoBehaviour&lt;/a&gt; scripts). That is why having a &lt;a href=&quot;http://blog.hakansaglam.com/2016/09/coding-in-unity3d.html&quot; target=&quot;&quot;&gt;Dependency Injection (DI) or Inversion of Control (IoC) framework&lt;/a&gt; makes our code decoupled and testable. Having clear separation on game logic and game scene (views) is helping us a lot to have enough test coverage. Our unit testing strategy is try to cover all game logic, and complex logic calculations, not the views and screens.&lt;/div&gt;
&lt;div class=&quot;p1&quot;&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/AVvXsEhYumNGaQxfpjjOCDAJ1_0VKlAAvtp6ZxHfzYKzz5yYaUJb3UqxhdWSNb8hLRCMEFyrzRGJ2sLXsgE7jgzNCEjS6SFet9lYLy2-_BUcnz-PttZL4LxpTVEcrXDhl3Cwm7y9SIoXONPjB38/s1600/no_integration_test.gif&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/AVvXsEhYumNGaQxfpjjOCDAJ1_0VKlAAvtp6ZxHfzYKzz5yYaUJb3UqxhdWSNb8hLRCMEFyrzRGJ2sLXsgE7jgzNCEjS6SFet9lYLy2-_BUcnz-PttZL4LxpTVEcrXDhl3Cwm7y9SIoXONPjB38/s400/no_integration_test.gif&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-size: x-large;&quot;&gt;
Integration Tests&lt;/span&gt;&lt;/h3&gt;
&lt;div&gt;
Unit Tests are there to check your individual units are working correctly. But you still have to test if these individually tested units can work together. Unfortunately you can not just test your custom units together, you have to involve internal UnityEngine functions. So we are using &lt;a href=&quot;https://bitbucket.org/Unity-Technologies/unitytesttools/wiki/IntegrationTestsRunner&quot; target=&quot;_blank&quot;&gt;Integration Test Framework&lt;/a&gt; inside the Unity Test Tools.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi96Hs8cOIMH7Ps_odm2mVIJE8UyeLChJkxnUb7hLG_EcpZSYrwGsYIjqxraf4jjtR4YYZyBzT-wQdynAJz5B7f_PJkTP3xtS_D2I14m6Q62T4ScAbWtfF-Uz1PE8lvuTGP6h4JfEL7u-k/s1600/unity-integration-tests.png&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; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi96Hs8cOIMH7Ps_odm2mVIJE8UyeLChJkxnUb7hLG_EcpZSYrwGsYIjqxraf4jjtR4YYZyBzT-wQdynAJz5B7f_PJkTP3xtS_D2I14m6Q62T4ScAbWtfF-Uz1PE8lvuTGP6h4JfEL7u-k/s320/unity-integration-tests.png&quot; width=&quot;183&quot; /&gt;&lt;/a&gt;The Integration&amp;nbsp;Tests are designed to run on a separate scene. You can consider the scene where you place your tests as a test suite. One test scene can contain multiple tests. Unity suggests not to put your tests on your production scenes. Instead, create a separate scene for them.&lt;br /&gt;
&lt;br /&gt;
There are two ways of creating integration tests. &lt;b&gt;Manually&lt;/b&gt; by creating a test scene and adding some assertion script on this scene. Or &lt;b&gt;dynamically (from code)&amp;nbsp;&lt;/b&gt;by marking a MonoBehaviour with an attribute that make it loaded by the test runner. For more information please refer to &lt;a href=&quot;https://bitbucket.org/Unity-Technologies/unitytesttools/wiki/IntegrationTestsRunner&quot; target=&quot;_blank&quot;&gt;official documentation&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
We are using dynamic approach to be able to create our integration tests programatically. Because we don&#39;t want to create a separate scene for testing purposes. It is very important to be able to test actual production scene with actual user behaviours. We just want to simulate a user playing the game and make assertions while the real play is ongoing in the real game scene.&lt;br /&gt;
&lt;br /&gt;
Although this framework is not designed to use actual game scene, we could manage to make it happen. And we could manage to simulate user actions like button touches or card throws etc... &amp;nbsp;It opens us whole new possibilities. And we gradually improve our integration test suite, here it is the evolution steps:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;First we started to write integration test for critical user scenarios like login process, or playing a regular game play. In the beginning it was not easy to create one integration test.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;So to be able to make it easier we started to create the integration tests based on log files. What I mean is, we just play the scenario in the editor and record every action and every package exchange between client and server in a log file. And give that log file to our integration tests to parse and simulate all the recorded actions and server messages. And we added other important scenarios like reconnect, or some edge cases on the game play.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Afterwards we wanted to create integration tests from real users&#39; play records. We just improved our log system and adapt integration tests to parse the real user actions from log files. To be able to get the log files we attached them to user feedbacks and also crash reports. So that we could re-produce the real scenarios of real players. And add some of them to our integration test suite.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Instead of running this integration tests in the editor we started to use &lt;a href=&quot;https://docs.unity3d.com/Manual/CommandLineArguments.html&quot; target=&quot;_blank&quot;&gt;batch mode&amp;nbsp;(unity command line tools)&lt;/a&gt;&amp;nbsp;to be able integrate it to our continuous integration (CI) system (don&#39;t worry I will have one separate post about CI). And schedule it to run twice a day to inform us everything is good and working as expected with all changes.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/f6Zsx9kofeQ/0.jpg&quot; frameborder=&quot;0&quot; height=&quot;266&quot; src=&quot;https://www.youtube.com/embed/f6Zsx9kofeQ?feature=player_embedded&quot; width=&quot;480&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Since these integration tests are real play scenarios, to run all of them took around 20 minutes on average. It might be fine for CI, because it is running automatically and informing us when it is finished. But it is not fine, if you want to run these tests in your local environment. It is not acceptable to wait 20 minutes while you are coding. So we tried to find a way. And end up using &lt;a href=&quot;https://docs.unity3d.com/Manual/class-TimeManager.html&quot; target=&quot;_blank&quot;&gt;Time Manager&lt;/a&gt; feature of Unity. We just make the time scale 10 times faster, while running the integration tests, and decrease the total amount of time to 2 minutes. Which is fairly acceptable time for entire integration test suite.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-size: x-large;&quot;&gt;Editor Tests&lt;/span&gt;&lt;/h3&gt;
&lt;div&gt;
There is another test a developer should do after (or during) every development. Actually this is not an automated test. Yes, I am talking about manual testing. You should not just rely on automated tests especially during the development. You should absolutely, without any doubt, test what you are coding. I think we all agree on that.&lt;br /&gt;
&lt;br /&gt;
Manual testing is testing what you are doing like you are the user of that feature. And sometimes you are developing something (implementing a feature or fixing a bug) deep inside the the game. Let&#39;s say your are developing the result popup that is presented at the end of a card game. And there isn&#39;t one single mode of that result popup. It can change according to game type (solo or regular), game result (win or lost) etc...&lt;br /&gt;
&lt;br /&gt;
According to my experience you have to play the actual game and see the result for every main scenario especially after you are certain that development is finished. But during the development you should not always play the game, you have to find a better way. Because you are an engineer, you have to find a more practical way of testing.&lt;br /&gt;
&lt;br /&gt;
The first thing that came to mind is, just write a temporary test code to create that popup with given result model. And try it over and over again. And change the model and run it again to see how it is behaving with this model. It is not a bad approach. You can see some commented code pieces just for testing purposes (most of the case they are out dated) in almost all software projects.&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/AVvXsEgOAkZl5P4ole1sVk3iIM09YGoKDFjNeXxjLCLUMRmNn1ulrUwvYlS0D3W3rWY0JKZVj1EuFPFGm_p4bFLYwe-WSMMqtmEdPiIR3sS55kdx6rF9k43J8CrAghXGybeSrINMHeSpXrS84lk/s1600/unity-editor-test.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;253&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOAkZl5P4ole1sVk3iIM09YGoKDFjNeXxjLCLUMRmNn1ulrUwvYlS0D3W3rWY0JKZVj1EuFPFGm_p4bFLYwe-WSMMqtmEdPiIR3sS55kdx6rF9k43J8CrAghXGybeSrINMHeSpXrS84lk/s400/unity-editor-test.gif&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
But with Unity Editor there is a better way. You can create a&amp;nbsp;&lt;a href=&quot;https://docs.unity3d.com/Manual/editor-CustomEditors.html&quot; target=&quot;_blank&quot;&gt;custom editor&lt;/a&gt; specific to your needs. By doing that you can test all cases with a single run, and also you don&#39;t need to change the real production code with temporary codes. So you don&#39;t need to comment out that test code, which means it will live with the project and always up to date. So it can be usable whenever you needed.&lt;/div&gt;
&lt;br /&gt;
So these are the main testing practices that we are using during Unity game development. If you have any comments or additions do not hesitate to comment on this post. Because now I am moving to &lt;a href=&quot;http://blog.hakansaglam.com/2016/09/debugging-in-unity3d.html&quot;&gt;debugging in Unity&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</description><link>http://blog.hakansaglam.com/2016/09/testing-in-unity3d.html</link><author>noreply@blogger.com (Hakan Saglam)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5qtxC45R29JQ0jZXl6Gw1WCknHRe7zhdT3pUUMILvNTyllR0kBm6sTR-7igOHoaM3NfxpwJ1cHCo78pufhqFfk0fIpWu1Dhyr7j7ybxBvs4Ixd6kpzaosf_c76lBhyoIKXX6QHrO3s6A/s72-c/unity-unit-tests.png" height="72" width="72"/><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3672420913092616782.post-7654416684348982989</guid><pubDate>Sun, 11 Sep 2016 08:06:00 +0000</pubDate><atom:updated>2016-09-14T13:17:19.863+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">coroutines</category><category domain="http://www.blogger.com/atom/ns#">development</category><category domain="http://www.blogger.com/atom/ns#">strangeioc</category><category domain="http://www.blogger.com/atom/ns#">unity</category><title>Coding in Unity3D</title><description>&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Now it is time to write some real code :)&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
I have mentioned &lt;a href=&quot;http://blog.hakansaglam.com/2016/09/why-do-we-move-to-unity3d.html&quot;&gt;why do we move to Unity&lt;/a&gt;&amp;nbsp;and &lt;a href=&quot;http://blog.hakansaglam.com/2016/09/power-of-unity3d-editor.html&quot;&gt;how we use the power of Unity Editor&lt;/a&gt;&amp;nbsp;so far. And in this section I will explain how to write code in Unity3D.&amp;nbsp;&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;
By default&amp;nbsp;&lt;b&gt;&lt;a href=&quot;http://www.monodevelop.com/&quot; target=&quot;_blank&quot;&gt;MonoDevelop&lt;/a&gt;&lt;/b&gt; is the integrated development environment (IDE) supplied with Unity. An IDE combines the familiar operation of a text editor with additional features for debugging and other project management tasks.&amp;nbsp;&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;
If you are using Unity on Windows, &lt;a href=&quot;https://www.visualstudio.com/&quot; target=&quot;_blank&quot;&gt;Visual Studio&lt;/a&gt;&amp;nbsp;(with &lt;a href=&quot;https://www.jetbrains.com/resharper/&quot; target=&quot;_blank&quot;&gt;ReSharper&lt;/a&gt;) might be a better choice instead of MonoDevelop. If you are working on MacOS like me, &amp;nbsp;then for now MonoDevelop is the best option. I have tried other simple editors like &lt;a href=&quot;http://www.sublimetext.com/&quot; target=&quot;_blank&quot;&gt;Sublime Text&lt;/a&gt; or &lt;a href=&quot;https://code.visualstudio.com/&quot; target=&quot;_blank&quot;&gt;Visual Studio Code&lt;/a&gt;&amp;nbsp;but unfortunately just editor is not enough for long time development, you need a real IDE. I am looking forward to use &lt;a href=&quot;https://www.jetbrains.com/rider/&quot; target=&quot;_blank&quot;&gt;Rider&lt;/a&gt;&amp;nbsp;(A cross-platform C# IDE based on the IntelliJ platform and ReSharper)&amp;nbsp;soon. &amp;nbsp;It is still in beta. So for now MonoDevelop is the answer.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgls2qCFluj4PGgOQTtwFcQ4EChuzbBzsct5dl-mCEEevEk63YbDuyC1_tOBogXkg-U3YQPhnPu4ISDlrltxQW5cMxTMpDQBXy_8hosI6fMyIdczsXbFzMV4ZuWWe_vv8uXLQHvyJKrM5I/s1600/coding.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;192&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgls2qCFluj4PGgOQTtwFcQ4EChuzbBzsct5dl-mCEEevEk63YbDuyC1_tOBogXkg-U3YQPhnPu4ISDlrltxQW5cMxTMpDQBXy_8hosI6fMyIdczsXbFzMV4ZuWWe_vv8uXLQHvyJKrM5I/s320/coding.gif&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;font-size: 12.8px;&quot;&gt;Me when I code&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Coding part is called&amp;nbsp;&lt;a href=&quot;https://docs.unity3d.com/Manual/ScriptingSection.html&quot; target=&quot;_blank&quot;&gt;Scripting&lt;/a&gt;&amp;nbsp;in Unity documentation. It is an essential part of a game, &amp;nbsp;even the simplest game needs scripts to respond to input from&amp;nbsp;the player and arrange for events in the gameplay to happen when they should. Beyond that, scripts can be used to create graphical effects, control the physical behaviour of objects or even implement a custom AI system for characters in the game.&lt;br /&gt;
&lt;br /&gt;
I will mention a few key points of scripting in Unity.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-size: x-large;&quot;&gt;
Event Functions&lt;/span&gt;&lt;/h3&gt;
&lt;div style=&quot;text-align: justify;&quot;&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/AVvXsEgopowqv_Njr2xusY8prrNM6pOjc29eou-u697u9SRd6kZZ1R3RgHQEY34JheL_DjVre_xgMID0FCjvCTS6x2OSoa4Ju9B4Ve5RmljJgMS7G3iwd8_58Tia6qb-VnYYLMuxweVeIt_fK20/s1600/unity-mono-behaviour-flow.png&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; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgopowqv_Njr2xusY8prrNM6pOjc29eou-u697u9SRd6kZZ1R3RgHQEY34JheL_DjVre_xgMID0FCjvCTS6x2OSoa4Ju9B4Ve5RmljJgMS7G3iwd8_58Tia6qb-VnYYLMuxweVeIt_fK20/s400/unity-mono-behaviour-flow.png&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Although Unity uses an implementation of the standard&amp;nbsp;&lt;a href=&quot;http://www.mono-project.com/docs/advanced/embedding/scripting/&quot; target=&quot;_blank&quot;&gt;Mono runtime for scripting&lt;/a&gt;, it still has its own practices and techniques for accessing the Unity game engine from scripts.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;A script in Unity is not like the traditional idea of a program where the code runs continuously in a loop until it completes its task. Instead, Unity passes control to a script intermittently by calling certain functions that are declared within it. Once a function has finished executing, control is passed back to Unity. These functions are known as event functions since they are activated by Unity in response to events that occur during gameplay. Unity uses a naming scheme to identify which function to call for a particular event. For example, the &lt;b&gt;Update&lt;/b&gt; function (called before a frame update occurs) and the &lt;b&gt;Start&lt;/b&gt; function (called just before the object’s first frame update). Many more event functions are available in Unity; the full list can be found in the &lt;a href=&quot;https://docs.unity3d.com/Manual/ScriptingSection.html&quot; target=&quot;_blank&quot;&gt;script reference page&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&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/AVvXsEjBTkES-YiL3BCJSKZcKAhwj7LBRwZPfDt3OpC8GktwgQ0fUPHHKESGvdp83u6_txiQtSmoSVstgTpo3oW79PDQurFLwfFizt58_Fmtv26wzX0iMSwcdijtRKKXUEG8JGU9KRFSB4kQXSU/s1600/strange-ioc.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;247&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBTkES-YiL3BCJSKZcKAhwj7LBRwZPfDt3OpC8GktwgQ0fUPHHKESGvdp83u6_txiQtSmoSVstgTpo3oW79PDQurFLwfFizt58_Fmtv26wzX0iMSwcdijtRKKXUEG8JGU9KRFSB4kQXSU/s400/strange-ioc.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-size: x-large;&quot;&gt;
Strange IoC&lt;/span&gt;&lt;/h3&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;
These scripts are special kind of code pieces to integrate your code with UnityEngine. That doesn&#39;t mean that all of your code should consist of these kind of scripts. You can have your own software architecture behind the scene and use these special script codes to connect to game objects in the game scene. Actually I strongly recommend to do so, by doing that you could have testable clean code apart from scripts.&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
We move a step further in our games and create our own architecture based on DI (&lt;a href=&quot;https://en.wikipedia.org/wiki/Dependency_injection&quot; target=&quot;_blank&quot;&gt;Dependency Injection&lt;/a&gt;). I think I don&#39;t need to explain what is DI and why it is needed. It is one of the key patterns of software engineering. We are using &lt;a href=&quot;http://strangeioc.github.io/strangeioc/&quot; target=&quot;_blank&quot;&gt;StrangeIoC&lt;/a&gt; as our DI framework. StrangeIoC is a super-lightweight and highly extensible Inversion-of-Control framework, written specifically for C# and Unity.&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
Actually we are not using StrangeIoC just for DI, and also to have consistent, modular and clear software design in our code base.&amp;nbsp;Main idea is decouple all our class dependencies and write cleaner, modular code with a highly optimized Reflection/Injection system. Additionally it helps us to have&amp;nbsp;&lt;span class=&quot;s2&quot;&gt;&lt;b&gt;&lt;a href=&quot;http://qt-project.org/doc/qt-5.0/qtcore/signalsandslots.html&quot;&gt;Signals-and-Slots&lt;/a&gt;&lt;/b&gt;&lt;/span&gt; style Signals dispatcher for type-safe communication. &lt;b&gt;View mediation &lt;/b&gt;allows us to have clean separation of Views from Controllers and Models with no loss of capability.&amp;nbsp;Strange&#39;s architecture is based on the popular &lt;a href=&quot;http://www.robotlegs.org/&quot; target=&quot;_blank&quot;&gt;Robotlegs micro-framework&lt;/a&gt;. This architecture is well founded, highly proven, and lightly urges responsible development that works great for individuals or teams.&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-size: x-large;&quot;&gt;
Component Driven Architecture&lt;/span&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
There are plenty of discussion on what is Component Driven Architecture and how should be implemented. If you are coming strong background of OOP development like me you will need quite amount of time to adapt and fully leverage this concept. &lt;b&gt;I know they are not opposite to each other, on the contrary they can be used together very smoothly.&amp;nbsp;&lt;/b&gt;OOP is a way to build a logical hierarchy of classes, while components is a way of aggregating the different behaviour of an objects.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Unity is by design a component driven product. And it forces you to use it even if you are not comfortable with this concept. Every functionality (or behaviour in Unity jargon) that you will add to your game objects is already a component.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Let me give you an example from our games. We have quite amount of popups in our games. Not directly the board/main area of the game, but other parts like rooms, lobby, inbox, campaigns have a lot of popups, and the coordination of these popups is not an easy problem to solve. Sometimes you have to queue them and show them one by one, sometimes you need to show them immediately, sometimes you have to clear them, sometimes you have to convert them from popup to inbox message etc...&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Instead of creating a popup class hierarchy, and having popup functions and fields in various types of classes. We choose to define popup functions as a set of behaviours. If a game object needs to have popup functions (in whole life cycle or for a certain period of time) it can attach and enable this component and can be treated as a popup by the rest of the code. Besides we define popup functions with an &lt;b&gt;IPopup&lt;/b&gt; protocol to be able to give all the management to a manager object that will deal with different implementations of this interface.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidPpSiwAhJAWVjPQ2tvBaztUZsfOrVw7eAlpoEVmb3wgsdcmHep_3vlZcWtazRr8KIsYlX8D1mSlJeEYhe0i3JanPLBv4NvTjc5C-gpBQx6T-QEnW_MAF8CNflNIJLYxzTFfFE8gdC2Fg/s1600/kitty-panel-popup.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;253&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidPpSiwAhJAWVjPQ2tvBaztUZsfOrVw7eAlpoEVmb3wgsdcmHep_3vlZcWtazRr8KIsYlX8D1mSlJeEYhe0i3JanPLBv4NvTjc5C-gpBQx6T-QEnW_MAF8CNflNIJLYxzTFfFE8gdC2Fg/s400/kitty-panel-popup.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Everything can be a popup&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
By doing that we can enrich popup definitions with different implementations (and believe me we are going to need various types of popups in our games) and also we make sure that any game object what ever it&#39;s original purpose is, can be treated and behave like a popup.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-size: x-large;&quot;&gt;
Coroutines&lt;/span&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;
One important most used technic in Unity is &lt;a href=&quot;https://docs.unity3d.com/Manual/Coroutines.html&quot; target=&quot;_blank&quot;&gt;coroutines&lt;/a&gt;. Let&#39;s go with an example; when you call a function, it runs to completion before returning. This effectively means that any action taking place in a function must happen within a single frame update; a function call can’t be used to contain a procedural animation or a sequence of events over time. As an example, consider the task of gradually reducing an object’s alpha (opacity) value until it becomes completely invisible.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&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/AVvXsEjlat6J9if1rpxnFcnSghUnAkInaAp2-BzAjCxg8zXLIfjeImLU2gxWvCC3f4ar-g0qLZsitLnW-b6ASVs92K2tR17_NZ9OlRQftpRvc7OgNKbulwbXAhH28ySyJdoQuBHwUjbZkAnAGYI/s1600/coroutines-fade-1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;134&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlat6J9if1rpxnFcnSghUnAkInaAp2-BzAjCxg8zXLIfjeImLU2gxWvCC3f4ar-g0qLZsitLnW-b6ASVs92K2tR17_NZ9OlRQftpRvc7OgNKbulwbXAhH28ySyJdoQuBHwUjbZkAnAGYI/s320/coroutines-fade-1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
As it stands, the Fade function will not have the effect you might expect. In order for the fading to be visible, the alpha must be reduced over a sequence of frames to show the intermediate values being rendered. However, the function will execute in its entirety within a single frame update. The intermediate values will never be seen and the object will disappear instantly.&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;







&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;It is possible to handle situations like this by adding code to the Update function that executes the fade on a frame-by-frame basis. However, it is often more convenient to use a coroutine for this kind of task.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;







&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&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/AVvXsEhMnonrVFmlhjFGkoz3CtbUH_2YrMiLQP-cQ8dYfamXRHB2hxYc-80d1UGbnaXFbF0OW7-Phh2ErnkPeZFOtCRahylVzIH_DCgZk5gdArP77iJl3whoJXntPFfCDrYSSw4T_RJnXFaPGp8/s1600/coroutines-fade-2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;143&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMnonrVFmlhjFGkoz3CtbUH_2YrMiLQP-cQ8dYfamXRHB2hxYc-80d1UGbnaXFbF0OW7-Phh2ErnkPeZFOtCRahylVzIH_DCgZk5gdArP77iJl3whoJXntPFfCDrYSSw4T_RJnXFaPGp8/s320/coroutines-fade-2.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span class=&quot;s1&quot;&gt;A coroutine is like a function that has the ability to pause execution and return control to Unity but then to continue where it left off on the following frame.&amp;nbsp;&lt;/span&gt;It is essentially a function declared with a return type of IEnumerator and with the yield return statement included somewhere in the body. The yield return line is the point at which execution will pause and be resumed the following frame.&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-size: x-large;&quot;&gt;
Screen Management&lt;/span&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;
One last topic I want to share is screen management. Unity has game scenes, and transition from one scene to other is not a trivial thing from performance point of view. It needs to load everything inside the scene and then show the scene and this takes a lot of time in most of the cases.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
While loading the scene game freezes, there might be some Unity games without these scene loading glitches but as a producer or as a consumer I didn&#39;t see so far.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
We do not want to face these glitches in our games. So decided use one giant scene. It has different drawbacks of course, but so far so good. We could manage to handle all the drawbacks and create a smooth screen transitions between the different sections of the game.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Board games like us does not need levels or very different atmospheres in the game area, focus is different. And we change this difference as an advantage. As I say our entire game is in one big scene, but from player point of view, we still need to create a navigation / transition from one section to other. It is a very basic problem (not a problem actually) in a native iOS or Android mobile game/app. They have build-in mechanism and solutions. But here we need to find a way to make that simple transition.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/gPbCjm0kLoo/0.jpg&quot; frameborder=&quot;0&quot; height=&quot;266&quot; src=&quot;https://www.youtube.com/embed/gPbCjm0kLoo?feature=player_embedded&quot; width=&quot;480&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
So we use similar concept of iOS ViewController transition states like ViewWillAppear, ViewDidAppear, ViewWillDisappear, ViewDidDisappear. And in addition to that we add some camera moves on screen transitions. In above movie, please give attention inside the scene view and camera moves.&lt;br /&gt;
&lt;br /&gt;
There are much more things that we can talk about, but may be in future posts. Now we are going to concentrate&amp;nbsp;on &lt;a href=&quot;http://blog.hakansaglam.com/2016/09/testing-in-unity3d.html&quot;&gt;testing our code&lt;/a&gt;.&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
</description><link>http://blog.hakansaglam.com/2016/09/coding-in-unity3d.html</link><author>noreply@blogger.com (Hakan Saglam)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgls2qCFluj4PGgOQTtwFcQ4EChuzbBzsct5dl-mCEEevEk63YbDuyC1_tOBogXkg-U3YQPhnPu4ISDlrltxQW5cMxTMpDQBXy_8hosI6fMyIdczsXbFzMV4ZuWWe_vv8uXLQHvyJKrM5I/s72-c/coding.gif" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3672420913092616782.post-3304802855658038575</guid><pubDate>Thu, 08 Sep 2016 11:08:00 +0000</pubDate><atom:updated>2016-09-11T11:14:44.774+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">development</category><category domain="http://www.blogger.com/atom/ns#">game</category><category domain="http://www.blogger.com/atom/ns#">unity</category><title>Power of Unity3D Editor</title><description>&lt;div style=&quot;text-align: justify;&quot;&gt;
I have already written about the decision on moving to Unity3D in this &lt;a href=&quot;http://blog.hakansaglam.com/2016/09/why-do-we-move-to-unity3d.html&quot;&gt;post&lt;/a&gt;. Now it is time to go over all the main items of mobile game development with Unity. There are plenty of &lt;a href=&quot;https://docs.unity3d.com/&quot; target=&quot;_blank&quot;&gt;documentation&lt;/a&gt;, &lt;a href=&quot;https://www.youtube.com/channel/UCG08EqOAXJk_YXPDsAvReSg&quot; target=&quot;_blank&quot;&gt;tutorials&lt;/a&gt; on how to make game development, I strongly recommend to take a look if you want to learn details of this beast. &amp;nbsp;Here I am going to summarise our experience on creating &lt;a href=&quot;https://www.facebook.com/GinRummyPlus/&quot; target=&quot;_blank&quot;&gt;real-time multiplayer board games&lt;/a&gt; on Unity.&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;
As you can understand from the title, first point will be the Editor of Unity. It is very powerful by default and highly customizable. Which means it can even be more powerful in your hands.&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 class=&quot;s1&quot;&gt;I will not tell you about the details of the editor’s &lt;a href=&quot;https://docs.unity3d.com/Manual/LearningtheInterface.html&quot; target=&quot;_blank&quot;&gt;basic features&lt;/a&gt;.&amp;nbsp;But I can easily say that, y&lt;/span&gt;ou will do almost everything (except coding) inside the editor. Configuring the game scene(s), attaching your codebase to game objects (characters, items, ui elements etc...), creating animations and setting input triggers, choosing preferences, integrating with version control system, preparing your project for a build. As I said almost everything :)&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKtW_FBqHlgBatVaZHN3IWDUHAzvz9NbmfvSTjxd8gpM7fjDT3RwqQtLLLPlZ8wlcgsDFf6v2PoaqhBduwkiFNDVi4kzTD76QaoVV7A0Ms2q2FcmeCwRb-lrW4u_DQ7_FSqXuTScBL0Zo/s1600/unity-editor.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;227&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKtW_FBqHlgBatVaZHN3IWDUHAzvz9NbmfvSTjxd8gpM7fjDT3RwqQtLLLPlZ8wlcgsDFf6v2PoaqhBduwkiFNDVi4kzTD76QaoVV7A0Ms2q2FcmeCwRb-lrW4u_DQ7_FSqXuTScBL0Zo/s400/unity-editor.jpeg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small; text-align: justify;&quot;&gt;Gin Rummy Plus under the hood :)&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
The most common and useful windows are shown in my custom (not the default) positions above. This is the arrangement that I am using, it gives me practical access to the the most common windows. Actually I am not sure if there is a best practice on this, because even in our team almost each one of us using different arrangements. I guess we are going to find sweet spots soon :)&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;







&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;The Scene View&lt;/b&gt; allows you to visually navigate and edit your scene. The scene view can show a 3D or 2D perspective, depending on the type of project you are working on. Find out more about the &lt;a href=&quot;https://docs.unity3d.com/Manual/UsingTheSceneView.html&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;s2&quot;&gt;Scene View&lt;/span&gt;&lt;/a&gt;. Actually I am using this section with &lt;a href=&quot;https://docs.unity3d.com/Manual/Console.html&quot; target=&quot;_blank&quot;&gt;The Console Window&lt;/a&gt;, because while running the game, I am looking either the scene or the logs.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;







&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;The Game View&lt;/b&gt; is rendered from the Camera(s) in your game. It is representative of your final, published game. You will need to use one or more &lt;b&gt;Cameras&lt;/b&gt; to control what the player actually sees when they are playing your game.&amp;nbsp;&lt;/span&gt;Find out more about the&amp;nbsp;&lt;a href=&quot;https://docs.unity3d.com/Manual/GameView.html&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;s2&quot;&gt;Game View&lt;/span&gt;&lt;/a&gt;. Similarly I am sharing this section with &lt;a href=&quot;https://docs.unity3d.com/Manual/AnimatorWindow.html&quot; target=&quot;_blank&quot;&gt;The Animator&amp;nbsp;Window&lt;/a&gt;.&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;







&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;The Hierarchy Window&lt;/b&gt; is a hierarchical text representation of every object in the scene. Each item in the scene has an entry in the hierarchy, so the two windows are inherently linked. The hierarchy reveals the structure of how objects are attached to one another. Find out more about the &lt;a href=&quot;https://docs.unity3d.com/Manual/Hierarchy.html&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;s2&quot;&gt;Hierarchy Window&lt;/span&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;







&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;The Inspector Window&lt;/b&gt; allows you to view and edit all the properties of the currently selected object. Because different types of objects have different sets of properties, the layout and contents of the inspector window will vary. Find out more about the &lt;a href=&quot;https://docs.unity3d.com/Manual/UsingTheInspector.html&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;s2&quot;&gt;Inspector Window&lt;/span&gt;&lt;/a&gt;. I have another custom window (MockMessenger) here to replicate server socket messages to the game on runtime. I will tell more about custom windows soon.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;The Project Window&lt;/b&gt;&amp;nbsp;displays your library of assets that are available to use in your project. When you import assets into your project, they appear here. Find out more about the&amp;nbsp;&lt;a href=&quot;https://docs.unity3d.com/Manual/ProjectView.html&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;s2&quot;&gt;Project Window&lt;/span&gt;&lt;/a&gt;. And of course I am sharing this section with &lt;a href=&quot;https://docs.unity3d.com/Manual/testing-editortestsrunner.html&quot; target=&quot;_blank&quot;&gt;Unit Test Runner Window&lt;/a&gt;. (I will have a separate test section / post.)&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: justify;&quot;&gt;
The other very important thing about Editor is extending the editor. It is quite easy to customize the editor, and can be very useful. Unity lets you extend the editor with your own custom inspectors and editor windows&amp;nbsp;and you can define how properties are displayed in the inspector. There are various types of customization that we have used in our games. I will give you a few simple ones:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&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/AVvXsEifVMOa1J_nJ4OXBo_8JgNkdGxSx8K3Mztffsz5lpNg00ObhphwiuRdYcrjpPNDAAwGNzwSo4qRK5i_zU8IPKTosTum-UItuqrvrPnY2MZ0v_CEnYzalb8WVgZXd8E4R5ta1T65bPOjNjE/s1600/unity-editor-custom-menu.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;112&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifVMOa1J_nJ4OXBo_8JgNkdGxSx8K3Mztffsz5lpNg00ObhphwiuRdYcrjpPNDAAwGNzwSo4qRK5i_zU8IPKTosTum-UItuqrvrPnY2MZ0v_CEnYzalb8WVgZXd8E4R5ta1T65bPOjNjE/s400/unity-editor-custom-menu.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h3 style=&quot;text-align: center;&quot;&gt;
Custom Menu Items&amp;nbsp;&lt;/h3&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
We have created a few functionality and put them under custom Peak Games menu item. That enables us to run those functionalities during runtime and/or development time. To show you how useful they are, let me tell you about three of them:&amp;nbsp;&lt;b&gt;Reconnect&lt;/b&gt;,&amp;nbsp;&lt;b&gt;Disconnect, Send To Background&lt;/b&gt; functions.&amp;nbsp;&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;
Since we are making realtime synchronous mobile games, it is very frequent to have connection drops, very quick reconnections or sending game to background because of a phone call or something. So it is inevitable to face these issues during the game play. Like other games, we have our own solutions, catch mechanism in different situations like this. But having the solution is not enough, it should be consistent and available on every part of the game. With these custom menu items we can simulate these issues on our games whenever we want on different scenarios and different parts of the game during the runtime (kind of a monkey test).&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&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/AVvXsEhxZP_c9EzfP_V_MwRtUxlA7K4-pJ8eZjHJMOYdPXe_RXQ79nEhsVQvDwAiHQlTdfC2nsTWkkFVUmjNh3G125Qtj2o5mH84dZQIcDP-igP6RMGl_WFtOqxH5_0LXEnYrJwFK1uTMFzMiUc/s1600/unity-editor-custom-window.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;198&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxZP_c9EzfP_V_MwRtUxlA7K4-pJ8eZjHJMOYdPXe_RXQ79nEhsVQvDwAiHQlTdfC2nsTWkkFVUmjNh3G125Qtj2o5mH84dZQIcDP-igP6RMGl_WFtOqxH5_0LXEnYrJwFK1uTMFzMiUc/s400/unity-editor-custom-window.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: center;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;
Custom Windows&lt;/span&gt;&lt;/h3&gt;
&lt;span class=&quot;s1&quot;&gt;
&lt;/span&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span class=&quot;s1&quot;&gt;
&lt;/span&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;Next is custom windows, you can create any number of custom editor windows for your game. These behave just like the Inspector, Scene or any other built-in ones. This is a great way to add a user interface to a sub-system for your game.&lt;/span&gt;&lt;/div&gt;
&lt;span class=&quot;s1&quot;&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;
Again I will give a real example from our games. We have created a custom window MockMessenger, it is not that sophisticated but to the point. The purpose is replicate server socket messages to the game on runtime.&lt;br /&gt;
&lt;br /&gt;
Like any other software project, we divide the projects into smaller features, and even more smaller tiny tasks. So while we are developing a feature or fixing a bug, we are working on a specific part of the game. And in our case, most of the time that part is highly integrated with server side. Instead of configuring a specific development server or a local server, we are using this window to send server messages to our game. With this window and the function underneath we can send a single message to our game like it is coming from the connected server.&amp;nbsp;&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;
Like sending a single message, we can send multiple messages at once and save that scenario to a file and replay it over and over again. Even we can configure the exact receive times of those messages , so that we can mimic weird socket packages&#39; receive times. As you know sometimes you can get multiple packages in a few milliseconds and wait for the next ones more than ten seconds.&amp;nbsp;&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;
Since socket connection is the fundamental part of our games, it is very crucial for us to replicate these situations very quickly and without big efforts. As you can guess we are using this window very frequently not just developing a new feature, but also simulating or reproducing a real issue. So with this simple window we gain a lot of time and effort.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&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;/div&gt;
&lt;h3 style=&quot;text-align: center;&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/AVvXsEj4bD9sQ2nLPuVot9qh7cJuJs2IRAM8DAgXoUvIndCEQp8W-B3vsN0Z3uPX9wQ2rXBFAdHoANzd5keB06xle5ie9neHBmsOdZFlrFqHob4xSWKf0op7lvAplAJ4XJW3rZoA2ylSiJnTfSM/s1600/unity-editor-hierarchy.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;321&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4bD9sQ2nLPuVot9qh7cJuJs2IRAM8DAgXoUvIndCEQp8W-B3vsN0Z3uPX9wQ2rXBFAdHoANzd5keB06xle5ie9neHBmsOdZFlrFqHob4xSWKf0op7lvAplAJ4XJW3rZoA2ylSiJnTfSM/s400/unity-editor-hierarchy.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Customize Hierarchy Window&lt;/h3&gt;
&lt;div style=&quot;text-align: start;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Other customization that we have done is to show additional information in the hierarchy window. It makes things easier to track during the game play. I guess you already got that we really love card games :)&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
In a card game, Card (class) is the main character of the game along with Hand, Deck and Pile of course. And it is very important for us to track a card object is enabled or disabled in the game play scene or the conceptual and physical location of the card like is it in the Hand, or is it in the Deck or Pile.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;While playing the game, cards are moving between Deck, Hand and Pile. It would be very useful tracking the cards in the editor hierarchy window. For example, by looking at the hierarchy window I want to see the number of active cards which are children of deck or pile or hand. Actually my colleague has already &lt;a href=&quot;http://ilkinulas.github.io/unity/2016/07/20/customize-unity-hierarchy-window.html&quot; target=&quot;_blank&quot;&gt;explained this customization&lt;/a&gt; in detail.&lt;/span&gt;&lt;/div&gt;
&lt;/div&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;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
These are very simple examples just to show you the main idea. You can create much more sophisticated customizations, for instance once we had developed a level editor inside the Unity for an experimental endless runner game.&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;
As last word, it is your imagination and needs that would lead you to make editor customizations. &lt;b&gt;The main idea is to ease and quicken the development of a Unity game.&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;a href=&quot;http://blog.hakansaglam.com/2016/09/coding-in-unity3d.html&quot;&gt;Now let&#39;s write some code...&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/span&gt;







&lt;/div&gt;
</description><link>http://blog.hakansaglam.com/2016/09/power-of-unity3d-editor.html</link><author>noreply@blogger.com (Hakan Saglam)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKtW_FBqHlgBatVaZHN3IWDUHAzvz9NbmfvSTjxd8gpM7fjDT3RwqQtLLLPlZ8wlcgsDFf6v2PoaqhBduwkiFNDVi4kzTD76QaoVV7A0Ms2q2FcmeCwRb-lrW4u_DQ7_FSqXuTScBL0Zo/s72-c/unity-editor.jpeg" height="72" width="72"/><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3672420913092616782.post-7852690537643774454</guid><pubDate>Tue, 06 Sep 2016 11:47:00 +0000</pubDate><atom:updated>2016-09-19T16:13:27.672+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cocos2dx</category><category domain="http://www.blogger.com/atom/ns#">development</category><category domain="http://www.blogger.com/atom/ns#">game</category><category domain="http://www.blogger.com/atom/ns#">haxe</category><category domain="http://www.blogger.com/atom/ns#">libgdx</category><category domain="http://www.blogger.com/atom/ns#">mobile</category><category domain="http://www.blogger.com/atom/ns#">peakgames</category><category domain="http://www.blogger.com/atom/ns#">rovovm</category><category domain="http://www.blogger.com/atom/ns#">unity</category><title>Why do we move to Unity3D?</title><description>&lt;div style=&quot;text-align: justify;&quot;&gt;
As I explained in &lt;a href=&quot;http://blog.hakansaglam.com/2016/07/voxxed-days-istanbul-belgrad.html&quot;&gt;my previous post&lt;/a&gt;, I am starting a series of Unity related posts. The idea is create every section of my talk on &lt;a href=&quot;https://belgrade.voxxeddays.com/talk/255/&quot; target=&quot;_blank&quot;&gt;voxxed days belgrade&lt;/a&gt; as a separate blog post. So here it is the first one. Enjoy :)&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Before diving into the reasons behind this decision. Let me give you a little background about Peak Games and mobile team.&lt;/div&gt;
&lt;/div&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;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;http://www.peakgames.net/&quot; target=&quot;_blank&quot;&gt;&lt;span id=&quot;goog_1695730969&quot;&gt;&lt;/span&gt;Peak Games&lt;span id=&quot;goog_1695730970&quot;&gt;&lt;/span&gt;&lt;/a&gt; founded at 2010 to create social games on social platforms especially on Facebook. A bunch of very successful games has been developed and published on Turkish market. After one and half years, Peak Games was one of the companies realise that mobile will be the platform for social / casual free-to-play games. And we have established a mobile team. Back then it was very hard to find mobile game developers, &amp;nbsp;even it was very hard to find experienced mobile developers. Actually &lt;a href=&quot;http://www.hakansaglam.com/&quot; target=&quot;_blank&quot;&gt;myself was a senior backend java developer&lt;/a&gt; who wants to be mobile developer. So we were aware that it would be a very tough learning process for us.&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;
Our first mission as mobile team was to create ios and android platforms for our existing titles. With a lot of discussions we had decided to move native on these platforms. And we had tried different technologies like &lt;a href=&quot;http://cocos2d-objc.org/&quot; target=&quot;_blank&quot;&gt;cocos-2d&lt;/a&gt; and &lt;a href=&quot;https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIKit_Framework/&quot; target=&quot;_blank&quot;&gt;uikit&lt;/a&gt;&amp;nbsp;for ios platforms, and c++ (with&amp;nbsp;custom engine) and &lt;a href=&quot;https://libgdx.badlogicgames.com/&quot; target=&quot;_blank&quot;&gt;libgdx&lt;/a&gt;&amp;nbsp;for android platforms. I will not go deep on these technologies and decisions that we had. But I can easily say that after two years, we were very happy and comfortable with UIKit (for ios)&amp;nbsp;and libGDX (for android). We had created 10+ games using these technologies, and created 20+ reusable libraries common on these games. With all these efforts and experience we had reduced the time of developing a similar game to one third according to first game that we had build. And I don&#39;t want to be humble about these games, they are not mediocre games, they are very very successful games not just in Turkish market, but also in US market. Today hundreds of thousands players are playing these games.&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;
In short, we were happy with the technology, we had the experience, and common libraries for future games. And also we are happy with the end result (I mean the games as whole). We had no doubt that we could build even better games with these technologies. So I guess you wonder, what makes us to think to change the technology behind these games, libraries and experience.&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;
The main reason was the nature of free-to-play games. You have to improve your free-to-play game continuously. Otherwise it would die very soon. We are still adding very big features, or making very big changes on our first titles that we had build more than two years ago. With this reason we have to code our games very clean and readable. We have to use common patterns to solve the problems. &lt;a href=&quot;https://youtu.be/GrkONzw3BcM?list=PLbi72StPQe2xUwJL0GCuXQafg9v6gKT68&quot; target=&quot;_blank&quot;&gt;This is another topic that I can speak forever&lt;/a&gt; :)&amp;nbsp;&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;
My point is having multiple codebases for the same game (ios or android) causes some issues. First of all it make things slow in overall. Since it has different codebases, both of them have different issues. And they have different solutions for same problems. It makes the release planning and enabling/disabling features very hard. Most importantly we want both platforms exactly same as much as possible. But with different platforms, technologies, codebases and different developers it is not possible to get the same results in ios and android. So we have three main reasons:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;We want to be quicker on the initial development of the game.&amp;nbsp;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;And also we want to be quicker and consistent &amp;nbsp;while improving the game continuously.&amp;nbsp;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;We want to have one single codebase for two platforms.&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
That is why we have decided to go cross platform development for our new games. We were going to keep the existing games in their existing technologies, but we were going to build new games in selected cross platform solution. And also we would not touch our canvas platforms (which is written in &lt;a href=&quot;http://www.adobe.com/devnet/actionscript.html&quot; target=&quot;_blank&quot;&gt;AS3 action script&lt;/a&gt; technologies). Because even ios and android are different platforms, they are both mobile and we need to give same user experience on these platforms. But canvas is totally different and has to have different user experience.&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;
So let&#39;s come to our options for cross platform development. I know that there more than these options to consider but I just list the ones that are in our short list :)&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;&lt;a href=&quot;https://haxe.org/&quot; target=&quot;_blank&quot;&gt;Haxe&lt;/a&gt; with custom game engine&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;a href=&quot;https://unity3d.com/&quot; target=&quot;_blank&quot;&gt;Unity3D&lt;/a&gt;&amp;nbsp;with C# Language&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;a href=&quot;http://www.cocos2d-x.org/#&quot; target=&quot;_blank&quot;&gt;Cocos2d-x&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;a href=&quot;https://libgdx.badlogicgames.com/&quot; target=&quot;_blank&quot;&gt;LibGDX&lt;/a&gt;&amp;nbsp;with RoboVM&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;text-align: justify;&quot;&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;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHcd7a4XUnG22psWA8_5NqlHBp1nWRLsx_U1lF6TrUa9sqSMWyGPe_LfGT2yY4vRjbyvJnPoA5xUSf1qRth2hwv0yozrFAT7KKF4klanzDSbpxrrtaU4LDgWgt5fP5RjW6yYzIcAbfTg8/s1600/haxe-logo.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/AVvXsEhHcd7a4XUnG22psWA8_5NqlHBp1nWRLsx_U1lF6TrUa9sqSMWyGPe_LfGT2yY4vRjbyvJnPoA5xUSf1qRth2hwv0yozrFAT7KKF4klanzDSbpxrrtaU4LDgWgt5fP5RjW6yYzIcAbfTg8/s320/haxe-logo.png&quot; width=&quot;233&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: center;&quot;&gt;
Haxe (with custom game engine)&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Positive points :)&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Run Time Performance is real good.&lt;b&gt;&amp;nbsp;&lt;/b&gt;Let me give you a real example from one of our games: We had a path finding algorithm written in AS3 and wanted to optimize the performance. By just converting the code to Haxe the performance was increased around 10 times, which is a shocking great result.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Dynamic typing languages are very efficient to hacking things or creating quick and dirty projects. But if you are creating a long living game to be able to maintain it for years. Than you should definitely have static typed language to be able add new features, make bug fixes without breaking other parts.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;If you have experienced AS3 engineers, that means adaptation would be very quick and seamless. We all know that the de facto technology of games for canvas is AS3. Most of the social/online gaming companies has very experienced and valuable AS3 engineers. To adapt that experience especially to mobile platforms is very important.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Theoretically with Haxe, you can re-use the code not just in client technologies but also in server side. This is very important especially if you are building multiplayer real-time synchronous games like us. That means you need to have same game rules / game logic both in client and server.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;With Haxe you can use different game engine underneath, you don’t need to stick with the same game engine technology for all kinds of your games. Think about that you are building different games in different genres. With Haxe you can have same language but different game engines for different game genres. (I agree that this is something that you need to avoid as much as possible, but having the ability is always good ☺).&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;page&quot; title=&quot;Page 1&quot;&gt;
&lt;div class=&quot;layoutArea&quot;&gt;
&lt;div class=&quot;column&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Negative points :(&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Since it is not a popular language/technology, it will be very difficult to find someone experienced on Haxe. And also it will not be easy to convince good talents to learn and give commitment on Haxe.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;There are couple of initiatives for pure Haxe IDE (like HIDE) and also some plugins for existing popular IDEs (like IntelliJ Idea). But it seems to be a pain to establish a fully functional development environment with unit testing support, quick and robust simulator/emulator support, automated UI testing support and CI support.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;The documentation is quite weak. Actually Haxe is not that young, it is almost 10 years old. So I would expect better and much more rich documentation. And when it is compared to alternatives, the community is not that big. So with Haxe you will by your own hand, it might be very difficult to get support in emergent cases.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;We couldn’t find any very successful top grossing game projects written with Haxe (except the ones in the site). So I guess, it is a very important indicator that it has not enough support or belief on technology.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;As far as &amp;nbsp;understand it is not that easy to use Haxe for prototyping a new game idea. That means you need to have another technology/solution for prototyping.&lt;/li&gt;
&lt;/ul&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;br /&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/AVvXsEjcnGTEXYLOhBwTFL-HghyftTgnG0DTZlzfoq2_6-tPR0nXKWuoLYWlO3xc78Gw8Ch87-r8a7Bg1aGR-wIUL1KJuokmO0JCziaSjdunlio79LGwrYwQuAwtFszR9FYb9-EWgv7SVU_bYl4/s1600/unity3d-logo.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/AVvXsEjcnGTEXYLOhBwTFL-HghyftTgnG0DTZlzfoq2_6-tPR0nXKWuoLYWlO3xc78Gw8Ch87-r8a7Bg1aGR-wIUL1KJuokmO0JCziaSjdunlio79LGwrYwQuAwtFszR9FYb9-EWgv7SVU_bYl4/s320/unity3d-logo.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;h3 style=&quot;text-align: center;&quot;&gt;
Unity3D (with C# Language)&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Positive points :)&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Prototyping is very fast and it gives the nearly real feeling of the game play before the production.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;With all integrated components (editor, animator, debugger...) you can base your entire game production pipeline over Unity. What I mean is your product managers, level editors, visual designers, sound and animation experts can work on Unity. So that integration of all these parts can easily be done.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;With very powerful editor, simulator and debugger, as a developer creating game scenes and tweaking tiny details is very handy.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;With the power of language C#, you can leverage most of the C# libraries and community. And also it enables you to create best practice game architecture in means of engineering. And entity/component driven architecture helps to build robust and flexible games.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;It has arguably good support and community options. There are a lot of engineers (from indie world to very big game companies), who works on Unity, creates games and develops the community.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;It has very great asset store, it is not always the case to use those assets as it is, but it gives really good starting point.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Back then it was one third of all top grossing mobile games were build with Unity3D, nowadays it is almost half of it.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Negative points :(&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Right now there is very limited canvas support (with Unity plugin or WebGL) but I believe it will change soon.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Optimizing the performance is very difficult, and out of the box it is not performant. You will always need to make some optimization for performance issues.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Prototyping very fast but finalizing as a complete product and polishing it, is not that easy. You have to be ready to spend a lot of time for just polishing the game.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;It is not easy to work Unity as a team. No problem with C# source code but for the other components (like prefabs, scenes) cannot be worked collaboratively by its nature.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;As I mentioned C# is great and powerful language. But you should always keep in mind that running the C# code on Mono Runtime has some limitations. And also Mono Develop itself is one of the downside of Unity.&lt;/li&gt;
&lt;/ul&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;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/AVvXsEjykkwuqpW22eahoUd0jk4w7Toq-7JRug4hT1PlAvUecGkmZ9xLnFkSdL0WIwBAPtVLLnaUjo_YX-_7iWTA11p1h9ZQV8L7mcrqFFaSyY1dm43Jg4wi_5RrmNmccBbjkGtE04lQ0P_6TYM/s1600/cocos2dx-logo.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/AVvXsEjykkwuqpW22eahoUd0jk4w7Toq-7JRug4hT1PlAvUecGkmZ9xLnFkSdL0WIwBAPtVLLnaUjo_YX-_7iWTA11p1h9ZQV8L7mcrqFFaSyY1dm43Jg4wi_5RrmNmccBbjkGtE04lQ0P_6TYM/s320/cocos2dx-logo.png&quot; width=&quot;228&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: center;&quot;&gt;
Cocos2d-x&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Positive points :)&lt;/div&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Open source and highly contributed game development framework and game engine.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;It is a library based platform on top of powerful language C++&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Since it is based on a very low level language of our days, &amp;nbsp;performance would be very satisfying.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Creating a game with it is very satisfying from engineering point of view.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Optimised for 2D games.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Negative points :(&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;For me the main negative point is again the language C++. It is very difficult to find someone who knows C++ or who wants to learn C++ :( at least it is the case in Turkiye.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;It doesn&#39;t have a good game scene or animation editor etc... You have to use different 3rd party tools for this purposes and find ways to integrate with cocos-2dx. It is possible but not easy.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;In long term it might be a good decision, but in short or mid term, it requires a lot of effort to create a game. Even create a prototype.&lt;/li&gt;
&lt;/ul&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;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;h3 style=&quot;text-align: center;&quot;&gt;
LibGDX with RoboVM&lt;/h3&gt;
&lt;div style=&quot;text-align: start;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: start;&quot;&gt;
Before pros and cons I want to mention that, we had produced and published a successful&amp;nbsp;&lt;a href=&quot;http://www.goalgame.net/&quot; target=&quot;_blank&quot;&gt;game&lt;/a&gt;&amp;nbsp;with this option. And you will see that all the good points come from libGDX, and all bad points from RoboVM.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: start;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: start;&quot;&gt;
Positive points :)&lt;br /&gt;
&lt;ul&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGUDnOho0j_vhyphenhyphenIDfmg4Nm4h6LAVgqn_b-vVknIB4GoCz6OSDGjsfFQtGSiP7zGi9xVXMqFepoEpYkmyMkcHx_Bd-nA1m9NKD7ILNERdzBUveNm_cfzQvWYwp7gAzVgNm7pK2qKdnYH_w/s1600/libgdx-logo.png&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; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGUDnOho0j_vhyphenhyphenIDfmg4Nm4h6LAVgqn_b-vVknIB4GoCz6OSDGjsfFQtGSiP7zGi9xVXMqFepoEpYkmyMkcHx_Bd-nA1m9NKD7ILNERdzBUveNm_cfzQvWYwp7gAzVgNm7pK2qKdnYH_w/s200/libgdx-logo.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Half of the mobile team (Android team) is already using libGDX as the primary technology for our native Android games.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;There are quite amount of reusable components and libraries based on libGDX.&amp;nbsp;We are already using&amp;nbsp;them in production, so they are mature enough.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Both RoboVM and libGDX is open source. And there are many contributors especially for libGDX, it is always getting better.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;libGDX has very robust and quick simulator support, especially when you compare to emulator on Android Studio.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Optimized for 2D games which is important for us.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: start;&quot;&gt;
Negative points :(&lt;br /&gt;
&lt;ul&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyh4wBfrsiZH7k0BuOOiKfmgoX80JJmReG49JMslbh4gIovWLhTMk37Nky650Fa5aUg9lJAhxfu3-QU65eZvdIMbagt13ckziwup38EZS4XclCnCYRKOr9OAYy3GHLtTRZgPROQF8uvjg/s1600/robovm-logo.png&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; height=&quot;156&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyh4wBfrsiZH7k0BuOOiKfmgoX80JJmReG49JMslbh4gIovWLhTMk37Nky650Fa5aUg9lJAhxfu3-QU65eZvdIMbagt13ckziwup38EZS4XclCnCYRKOr9OAYy3GHLtTRZgPROQF8uvjg/s200/robovm-logo.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;RoboVM was an ongoing project and it was changing a lot and frequently.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;There were very limited support from community to RoboVM&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Since it was kind of beta versions, it has very limited documentation.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;We were spending a lot of effort and time to understand and integrate RoboVM.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Bindings from Java to Objetive-C was very painful and very very limited.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;One last point project is stopped. It is acquired by Xamarin. And Xamarin aquired by Microsoft. And they decided to stop the project. It is open source but there are no real contribution any more.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;h3 style=&quot;text-align: start;&quot;&gt;
&lt;/h3&gt;
&lt;h3 style=&quot;text-align: center;&quot;&gt;
Conclusion&lt;/h3&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
After all these positive / negative points it was very difficult to foresee the future of these technologies. So what we have decided is to give a try on Unity3D at least for a few games. And then we could discuss further with real game development experience. And we had developed multiple games with Unity3D, we are happy with the result so far. I think we will stick with this decision especially after we see that it is becoming de facto technology both for indie developers and bigger game studios like EA Games, Blizzard etc...&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;
So first section is done, I hope you enjoyed it. Now I will move to &lt;a href=&quot;http://blog.hakansaglam.com/2016/09/power-of-unity3d-editor.html&quot;&gt;next sections&lt;/a&gt; that I am going to tell you about the experience on game development with Unity3D.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</description><link>http://blog.hakansaglam.com/2016/09/why-do-we-move-to-unity3d.html</link><author>noreply@blogger.com (Hakan Saglam)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHcd7a4XUnG22psWA8_5NqlHBp1nWRLsx_U1lF6TrUa9sqSMWyGPe_LfGT2yY4vRjbyvJnPoA5xUSf1qRth2hwv0yozrFAT7KKF4klanzDSbpxrrtaU4LDgWgt5fP5RjW6yYzIcAbfTg8/s72-c/haxe-logo.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3672420913092616782.post-329031621664667838</guid><pubDate>Fri, 15 Jul 2016 10:33:00 +0000</pubDate><atom:updated>2016-07-15T13:35:28.970+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">belgrad</category><category domain="http://www.blogger.com/atom/ns#">devoxx</category><category domain="http://www.blogger.com/atom/ns#">istanbul</category><category domain="http://www.blogger.com/atom/ns#">teknoloji</category><category domain="http://www.blogger.com/atom/ns#">unity</category><category domain="http://www.blogger.com/atom/ns#">voxxed days</category><title>Voxxed Days - Istanbul &amp; Belgrad</title><description>&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: right; margin-left: 1em; text-align: right;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicf7NO5htMEUQLrIaqxS_OxCAzvnqGAwaNr3AsfbXqP2RrGJj09SqdhRPofY9VUG-A4KdOktSC1MZ2AVbV8xHLl5RmuTmHAYIK0NJALm5CWRam772C79J2kAhx2PraqMxz-RQMkcOtznc/s1600/77622_486760242113_5167996_o.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicf7NO5htMEUQLrIaqxS_OxCAzvnqGAwaNr3AsfbXqP2RrGJj09SqdhRPofY9VUG-A4KdOktSC1MZ2AVbV8xHLl5RmuTmHAYIK0NJALm5CWRam772C79J2kAhx2PraqMxz-RQMkcOtznc/s200/77622_486760242113_5167996_o.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Antwerp / Belcika&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
Java Dunyasinda &lt;a href=&quot;https://www.devoxx.com/&quot; target=&quot;_blank&quot;&gt;Devoxx&lt;/a&gt; onemli bir organizasyondur. Dunyanin her yerinden cok onemli konusmacilar ve katilimcilar bu etkinlikte bulusurlar. Yeni teknolojileri ogrenir, tartisir ve fikir alis verisinde bulunurlar. Ben de Sony yillarimda bir kez bu etkinlige katilma sansi bulmustum.&amp;nbsp;&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 style=&quot;text-align: right;&quot;&gt;
&lt;/div&gt;
Devoxx 2010&#39;da aldigim notlara soyle hizlica goz gezdirince, mobil teknolojiler, cloud sistemler ve big-data kavramlarinin en trend teknolojiler oldugunu soyleyebilirim.&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;a href=&quot;https://voxxeddays.com/&quot; target=&quot;_blank&quot;&gt;Voxxed Days&lt;/a&gt; ise Devoxx&#39;un cesitli ulke ve sehirlerdeki lokal versiyonudur diyebiliriz. &amp;nbsp;Hatta Istanbul da bu sehirler arasinda.&amp;nbsp;&lt;a href=&quot;https://istanbul.voxxeddays.com/&quot; target=&quot;_blank&quot;&gt;Voxxed Days Istanbul&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://kodcu.com/&quot;&gt;kodcu.com&lt;/a&gt;&#39;un gayretleri ile son iki senedir basarili bir sekilde gerceklestiriliyor. Buradan kendilerine tesekkur ediyorum. Ayni sekilde &lt;a href=&quot;http://www.peakgames.net/&quot; target=&quot;_blank&quot;&gt;Peak Games&lt;/a&gt; olarak biz de bu organizasyona hem ana sponsor olarak, hem de konusmacilar ile katkida bulunmaya calisiyoruz.&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;a href=&quot;https://voxxeddays.com/istanbul15/&quot; target=&quot;_blank&quot;&gt;Voxxed Days Istanbul 2015&lt;/a&gt; konusmacilarindan birisi de bendim. Peak Games&#39;te mobil takim olarak cok onem verdigimiz &quot;&lt;a href=&quot;https://voxxeddays.com/istanbul15/hakan-saglam-code-review/&quot; target=&quot;_blank&quot;&gt;Code Review&lt;/a&gt;&quot; uzerine bir konusma yapmistim. &lt;a href=&quot;https://youtu.be/GrkONzw3BcM?list=PLbi72StPQe2xUwJL0GCuXQafg9v6gKT68&quot; target=&quot;_blank&quot;&gt;Youtube linkini&lt;/a&gt; ve yaptigim sunumu paylasiyorum.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;420&quot; marginheight=&quot;0&quot; marginwidth=&quot;0&quot; scrolling=&quot;no&quot; src=&quot;//www.slideshare.net/slideshow/embed_code/key/NKNCEfgz0aJYZP&quot; style=&quot;border-width: 1px; border: 1px solid #ccc; margin-bottom: 5px; max-width: 100%;&quot; width=&quot;510&quot;&gt; &lt;/iframe&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 5px;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;br /&gt;
Bu sene ise (Voxxed Days Istanbul 2016&#39;da) calisma arkadasim &lt;a href=&quot;https://www.linkedin.com/in/serdarsahin&quot; target=&quot;_blank&quot;&gt;Serdar Sahin&lt;/a&gt;, &amp;nbsp;Peak Games&#39;in Big Data evrimini cok guzel bir sunum ile anlatti, izlemenizi tavsiye ederim.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/_-S7-81dFxQ?list=PLbi72StPQe2xCvzGg4w7lq1lyGdM2HaXD&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;br /&gt;
Simdi gelelim asil haber vermek istedigim noktaya :)&lt;br /&gt;
&lt;br /&gt;
Bu sene kisisel olarak kedime, (daha bir cok hedefin yaninda) ikisi yurtici, birisi yurtdisinda olmak uzere toplam uc (sirket disi) sunum hedefi koymustum. Bunlarin yurtici olanlarini &lt;a href=&quot;http://ituym.ituieee.com/&quot;&gt;ITU&lt;/a&gt; ve &lt;a href=&quot;http://blog.hakansaglam.com/2016/04/bilkent-ctis-lunch-time-seminar.html&quot;&gt;Bilkent&lt;/a&gt;&amp;nbsp;Universitelerinde yaptigim sunumlarla tamamladim. Icim rahat :)&lt;br /&gt;
&lt;br /&gt;
Yurtdisi icin once &lt;a href=&quot;http://360idev.com/&quot; target=&quot;_blank&quot;&gt;360 | iDev&amp;nbsp;Organizasyonuna&lt;/a&gt;, aklimda olan bir konu ile basvuruda bulundum, ama malesef kabul ettiremedim, belki onumuzdeki yillarda tekrar denerim. Sonrasinda ise &lt;a href=&quot;https://belgrade.voxxeddays.com/&quot; target=&quot;_blank&quot;&gt;Voxxed Days Belgrad&lt;/a&gt; icin baska bir konu ile basvuruda bulundum ve (mutlu haber) kabul edildim. &lt;a href=&quot;https://belgrade.voxxeddays.com/speakers/&quot; target=&quot;_blank&quot;&gt;28-30 Eylul 2016 tarihlerinde Unity&lt;/a&gt; ile oyun gelistirmeye giris konulu bir sunum yapacagim. Haydi hayirlisi...&lt;br /&gt;
&lt;br /&gt;
Bu sunumun calismalarina yavas yavas basladim. Kafamda ara konu basliklarini cikariyorum, hangi konu &amp;nbsp;icin ne ornekler verecegimi planlamaya calisiyorum. Benim icin gercekten zorlayici bir tecrube olacagi kesin, iyi hazirlanmak ve ici dolu birseyler sunmak istiyorum. Onumde 11 hafta gibi yeterli bir sure var gibi gorunuyor.&lt;br /&gt;
&lt;br /&gt;
Bu calismalar kapsaminda, aklimda soyle bir plan var. Sunum genelinde toplam 6 - 10 arasi onemli noktadan bahsetmek istiyorum. Bu konulara tek tek hazirlanirken, her birisi icin ayri bir blog yazisi olusturmayi dusunuyorum. Boylelikle hem hazirlanmis olacagim, hem de bu hazirlik kapsaminda yapacagim calismayi burada paylasarak, (pek de ilgilenemedigim) blogumu canlandirmis olacagim. Isallah...&lt;br /&gt;
&lt;br /&gt;
Tabii soylememe gerek yok ama sunum Ingilizce olacak ve dolayisiyla bu calisma kapsamindaki blog yazilarim da Ingilizce olacak.&lt;br /&gt;
&lt;br /&gt;
Gerek bu konu ile ilgili, gerekse diger yazilarimla ilgili yorumlariniz, benim daha iyi bir calisma ortaya koyabilmem icin cok onemli. O yuzden yorum yapin, cekinmeyin...&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</description><link>http://blog.hakansaglam.com/2016/07/voxxed-days-istanbul-belgrad.html</link><author>noreply@blogger.com (Hakan Saglam)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicf7NO5htMEUQLrIaqxS_OxCAzvnqGAwaNr3AsfbXqP2RrGJj09SqdhRPofY9VUG-A4KdOktSC1MZ2AVbV8xHLl5RmuTmHAYIK0NJALm5CWRam772C79J2kAhx2PraqMxz-RQMkcOtznc/s72-c/77622_486760242113_5167996_o.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3672420913092616782.post-2857362998446005337</guid><pubDate>Wed, 27 Apr 2016 03:13:00 +0000</pubDate><atom:updated>2016-04-27T06:16:05.347+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">bilkent</category><category domain="http://www.blogger.com/atom/ns#">design patterns</category><category domain="http://www.blogger.com/atom/ns#">development</category><category domain="http://www.blogger.com/atom/ns#">game</category><category domain="http://www.blogger.com/atom/ns#">peakgames</category><title>Bilkent CTIS Lunch Time Seminar</title><description>&lt;div style=&quot;text-align: justify;&quot;&gt;
Dun&amp;nbsp;&lt;a href=&quot;http://www.peakgames.net/&quot; target=&quot;_blank&quot;&gt;Peak Games&lt;/a&gt;&#39;ten 5 arkadas,&amp;nbsp;&lt;a href=&quot;https://www.google.com.tr/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=1&amp;amp;cad=rja&amp;amp;uact=8&amp;amp;ved=0ahUKEwjRjqbf3a3MAhUHyRQKHWomCWMQFggbMAA&amp;amp;url=http%3A%2F%2Fwww.ctis.bilkent.edu.tr%2F&amp;amp;usg=AFQjCNH8qWJFiQwf-FZ2WOwci4tSvUBqgg&amp;amp;sig2=Cm92PnxI8s3RXhh6QFZqwQ&amp;amp;bvm=bv.120551593,d.d24&quot; target=&quot;_blank&quot;&gt;Bilkent Universitesi CTIS&lt;/a&gt; bolumunun daveti ile sabahin ilk saatlerinde Ankara yollarina dustuk. Yollarda yasadiklarimizi, taksici ve trafik maceralerimizi bir kenara birakiyorum. Biraz yorucu ama ayni zamanda hem zevkli, hem de yararli oldugunu dusundugum bir ziyaret oldu.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTae7ul58QqbxDSaBY2wCk9tO8AsWwL3UZOzUYRDM-hu0zj48XA_4PypauPGgr2NcXdjGREgv9P2JSIRjQm_tMTvHyx9LEh5WiRncplDi4_PNibFIUbhfPVlW2hDh8aJIwYBKef7xfg0w/s1600/PeakGames_GameProgrammingPatterns_+2016_04_26.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTae7ul58QqbxDSaBY2wCk9tO8AsWwL3UZOzUYRDM-hu0zj48XA_4PypauPGgr2NcXdjGREgv9P2JSIRjQm_tMTvHyx9LEh5WiRncplDi4_PNibFIUbhfPVlW2hDh8aJIwYBKef7xfg0w/s320/PeakGames_GameProgrammingPatterns_+2016_04_26.jpg&quot; width=&quot;224&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;bu pattern&#39;ler bizden sorulur&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
Amacimiz hem ogrencilere faydali olacak konulardan bahsetmek, hem de Bilkent Univertistesi ile iliskilerimizi artirmak. Cunku bu universitelerden yetisen kisilerle oyunlarimizi gelistiriyoruz. Is hayatinda karsilastigimiz sikintilarimizi, her gun cozmek zorunda oldugumuz &amp;nbsp;sorunlarimizi onlarla paylasmak ogrenciler acisindan ileride onlari nasil bir is hayati bekliyor konusunda yararli oluyor. Ayrica bizim acimizdan ise ogrencilerin okullarda neler ogrendiklerini, oyun sektoru ile ilgilerinin ne derecede oldugunu gormemizi sagliyor.&lt;/div&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;
Is arkadasim&amp;nbsp;&lt;a href=&quot;http://ilkinulas.github.io/&quot; target=&quot;_blank&quot;&gt;Ilkin&lt;/a&gt;&amp;nbsp;ile birlikte ne hazirlayabiliriz diye biraz kafa yorduktan sonra hem yaptigimiz is ile alakali olsun, hem yararli olsun, &amp;nbsp;hem oyun dunyasindan birseyler icersin diye karar verdik. Bir saatlik bir sunumda konulari derinlemesine inceleyemiyorsun malesef. O yuzden de, &amp;nbsp;icinde ogrencilere fikir verebilecek, ilgi uyandirabilecek, ilerisi icin baslangic olabilecek bazi noktalar barindiran, tecrubelerimizden ornekler de koydugumuz asagidaki sunumu hazirladik.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;true&quot; frameborder=&quot;0&quot; height=&quot;299&quot; mozallowfullscreen=&quot;true&quot; src=&quot;https://docs.google.com/presentation/d/1NFAi8Z-1Zldivw6K-1R3qcoVSBSTWlqMMl1J_ih77uk/embed?start=false&amp;amp;loop=false&amp;amp;delayms=3000&quot; webkitallowfullscreen=&quot;true&quot; width=&quot;480&quot;&gt;&lt;/iframe&gt;

&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Daha once de bir cok kereler bu tarz organizasyonlarla, Turkiye&#39;nin onde gelen universiteleri ile bulusmalar, soylesiler, sunumlar gerceklestirdik. Sahsim adina ve Peak Games olarak bu sekilde devam etmeyi dusunuyoruz. Umarim ogrenciler acisindan da yararli oluyordur.&lt;br /&gt;
&lt;br /&gt;
Ayrica universite ortaminda olmak, o havayi solumak, kantinde bir cay icmek beni tekrar ogrencilik zamanlarima goturdu. Kantinde birseyler yerken, herkes kendi okul yillarina gitti, guzel sohbetler oldu, tam bir &lt;a href=&quot;https://media.giphy.com/media/K9Iat6sju7myA/giphy.gif&quot; target=&quot;_blank&quot;&gt;gunun bonusu&lt;/a&gt;&amp;nbsp;oldu.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
Tekrardan daveti icin&amp;nbsp;&lt;a href=&quot;https://www.google.com.tr/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=1&amp;amp;cad=rja&amp;amp;uact=8&amp;amp;ved=0ahUKEwjRjqbf3a3MAhUHyRQKHWomCWMQFggbMAA&amp;amp;url=http%3A%2F%2Fwww.ctis.bilkent.edu.tr%2F&amp;amp;usg=AFQjCNH8qWJFiQwf-FZ2WOwci4tSvUBqgg&amp;amp;sig2=Cm92PnxI8s3RXhh6QFZqwQ&amp;amp;bvm=bv.120551593,d.d24&quot; target=&quot;_blank&quot;&gt;Bilkent Universitesi CTIS&lt;/a&gt;&amp;nbsp;bolumune ve &lt;a href=&quot;http://www.ctis.bilkent.edu.tr/ctis_staff_home.php?ID=3315&quot; target=&quot;_blank&quot;&gt;Dr. Erkan Ucar&lt;/a&gt;&amp;nbsp;&#39;a&amp;nbsp;cok tesekkur ederiz.&lt;/div&gt;
</description><link>http://blog.hakansaglam.com/2016/04/bilkent-ctis-lunch-time-seminar.html</link><author>noreply@blogger.com (Hakan Saglam)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTae7ul58QqbxDSaBY2wCk9tO8AsWwL3UZOzUYRDM-hu0zj48XA_4PypauPGgr2NcXdjGREgv9P2JSIRjQm_tMTvHyx9LEh5WiRncplDi4_PNibFIUbhfPVlW2hDh8aJIwYBKef7xfg0w/s72-c/PeakGames_GameProgrammingPatterns_+2016_04_26.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3672420913092616782.post-5411622472373694976</guid><pubDate>Sat, 07 Mar 2015 15:25:00 +0000</pubDate><atom:updated>2015-03-07T17:25:44.066+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">aile</category><category domain="http://www.blogger.com/atom/ns#">hobi</category><category domain="http://www.blogger.com/atom/ns#">park</category><category domain="http://www.blogger.com/atom/ns#">sarp</category><category domain="http://www.blogger.com/atom/ns#">zaman</category><title>Hepimiz Yaslanacagiz</title><description>&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Sarp&#39;la ara ara parka gidiyoruz, orada kosturmayi, kumlarla oynamayi, salincaga, kaydiraga binmeyi falan cok seviyor. Sevmek ne kelime kendinden geciyor desek daha dogru olur. Neyse evet, bunlari anlatmayacagim, aslinda sadece bir animdan bahsedecegim. Her aklima geldiginde &lt;b&gt;icimi burkan bir animdan&lt;/b&gt; bahsedecegim.&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;
Olay kisaca su sekilde. Sarp ile parka gittik. Sarp her tarafa kosturup duruyor ben de arkasindan onu takip ediyorum surekli. Hava biraz serin ama gunesli, montlarimiz var ustumuzde, aylardan Ekim veya Kasim olmasi lazim. O sirada parkin banklarinda oturan yaslica bir nine de bizi izliyor tebessum ederek. Oynadik kosturduk falan ben biraz yorulunca gittim, ninenin bulundugu bankin yanindaki banka kendimi attim. Sarp mi? O hala kosturuyor :)&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;
Biraz bu sekilde uzaktan izledikten sonra, Sarp&#39;a haydi gidiyoruz diye seslendim. Yasli nine, &quot;evladim gidiyor musunuz?&quot; dedi. Ve sonrasinda &quot;Gitmeden sizden birsey rica edebilir miyim?&quot; diye sordu. Tum diyalogu ve benim durumu kavrayana kadar gecen sureyi atliyorum. Ricasi su idi, evde televizyon kumandasinin yanlis yerlerine bastigi icin, tekrar istedigi kanallari acamadigini soyledi. Kendisine yardim edecek cocuklari da tatile gittikleri icin sabahtan beri parkta oturup birisinden yardim istemek icin bekledigini soyledi. Durumu tam olarak anladigimda icimde nasil bir seyin koptugunu anlatamam. Yardim ettim ama cok uzuldum, gunlerce aklima geldi. Ve hatta dedigim gibi ne zaman parka gitsem, icimde bir burukluk oluyor.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3qmY7H_SXf3C56Yrox0DWcBVBHshyrAWaf7XxB5DTaaVY4CSjRd2mpT9orqpblBdkqDWlUtA_F1YIa9QTPpMZ0z9vI6Yk0JEMqK4wytOsOvnkMIT-0KrG2PqNhMxlXE5f1efGJNWbD50/s1600/11219122254_d1657607d3_z.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3qmY7H_SXf3C56Yrox0DWcBVBHshyrAWaf7XxB5DTaaVY4CSjRd2mpT9orqpblBdkqDWlUtA_F1YIa9QTPpMZ0z9vI6Yk0JEMqK4wytOsOvnkMIT-0KrG2PqNhMxlXE5f1efGJNWbD50/s1600/11219122254_d1657607d3_z.jpg&quot; height=&quot;292&quot; width=&quot;620&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;hepimiz yaslanacagiz&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&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;
Simdi, kumandayi kullanmakta ne var diyeceksiniz ama iste olmayinca olmuyor malesef, biz de yaslandigimizda cikan teknolojiler sayesinde bu sekilde caresiz kalabiliriz. (Hatta ben yavas yavas bazi seyleri yerli yerine oturtamiyorum, mesela su snapchat garip, bir turlu kullanamiyorum arkadasim. &lt;a href=&quot;https://twitter.com/search?q=snapchat%20UX%20too%20old&amp;amp;src=typd&quot; target=&quot;_blank&quot;&gt;Benim gibi dusunen bir cok yasli da varmis hatta&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;
Ama iste bunun olmasini engelleyebiliriz. Benim nacizane iki onerim var (size degil, kendime :))&lt;/div&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Esiniz, sevgiliniz, aileniz en yakin dostlariniz olabilir. Bunlarin disinda da &lt;b&gt;her dakika gormek zorunda olmadiginiz&lt;/b&gt; dostlariniz da olmali. &lt;a href=&quot;http://blog.hakansaglam.com/2013/12/dosluk.html&quot;&gt;Bu konuyu daha once ele almistim&lt;/a&gt; tekrar tekrar yazmiyorum :)&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Digeri ise, televizyon gibi edilgin olmadiginiz, her daim sizin yaninizda olacak hobilerinizin olmasi. Bu hobileri yaslaninca gelistiremezsiniz (yani bana oyle geliyor). O yuzden henuz gencken, dincken ve &lt;b&gt;boyle hobilere cok fazla zamaniniz yokkken&lt;/b&gt;, ne yapip edip tum is ve hayat stresinden sizi uzaklastiracak hobiler edinmeniz cok onemli.&amp;nbsp;&lt;/li&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;http://www.bbc.com/news/uk-28062001&quot; target=&quot;_blank&quot;&gt;Spor olabilir&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;http://www.uzmantv.com/konu/nasil-koleksiyoncu-olunur&quot; target=&quot;_blank&quot;&gt;Kolleksiyon olabilir&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;http://www.hurriyet.com.tr/ekonomi/20191753.asp&quot; target=&quot;_blank&quot;&gt;Bag bahce isleri olabilir&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;http://www.40haramiler.com/&quot; target=&quot;_blank&quot;&gt;Fotografcilik olabilir&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;http://www.kitapagaci.org/&quot; target=&quot;_blank&quot;&gt;Kitap sevigisi olabilir&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;https://medium.com/@Turkish&quot; target=&quot;_blank&quot;&gt;Yazmak (blog, ani hatta kitap...) olabilir&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;http://gezmeksanattir.com/&quot; target=&quot;_blank&quot;&gt;Gezmek olabilir&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;http://code.org/&quot; target=&quot;_blank&quot;&gt;Hatta yazilim bile bir hobi olabilir (sizin icin yani)&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;http://amazingbeautifulworld.com/entertainment/10-of-the-strangest-hobbies/&quot; target=&quot;_blank&quot;&gt;Daha neler neler, istedikten sonra hobi bulmak da ne var.&amp;nbsp;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
Simdi bunlar isin bir tarafi...&lt;br /&gt;
&lt;br /&gt;
Diger taraftan ise, siz siz olun anneninizi, babanizi, dedenizi, ninenizi bu durumda birakmayin. Her zaman savunmusumdur, Turk aile yapisi bir cok kulture gore cok daha dogru geliyor bana. &lt;b&gt;Kucuklerin ailelerinin himayesinde olmasi, yaslilarin ise cocuklarinin guvencesinde olmasi asla vazgecmememiz gereken prensiplerimizden bence.&lt;/b&gt;&amp;nbsp;Bu yaklasimin yeni nesil icin ozguven eksikligine neden olabileceginin farkindayim. Benim savundugum, ozguveni olusturmak icin &lt;a href=&quot;http://www.pudra.com/anne-cocuk/cocuk-gelisimi/cocuga-ozguven-kazandirmanin-12-adimi-10428.htm&quot; target=&quot;_blank&quot;&gt;farkli farkli yontemler&lt;/a&gt; varken, bu kadar ozel bir adetimizden vazgecmememiz gerektigi.&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;
Ve evet bayramlarda tatil koyleri yerine aile ziyaretinin cok daha huzur verici, cok daha dinlendirici ve cok daha insani bir durum oldugunu dusunuyorum.&amp;nbsp;&lt;/div&gt;
&lt;br /&gt;</description><link>http://blog.hakansaglam.com/2015/03/hepimiz-yaslanacagiz.html</link><author>noreply@blogger.com (Hakan Saglam)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3qmY7H_SXf3C56Yrox0DWcBVBHshyrAWaf7XxB5DTaaVY4CSjRd2mpT9orqpblBdkqDWlUtA_F1YIa9QTPpMZ0z9vI6Yk0JEMqK4wytOsOvnkMIT-0KrG2PqNhMxlXE5f1efGJNWbD50/s72-c/11219122254_d1657607d3_z.jpg" height="72" width="72"/><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3672420913092616782.post-5330451968488220956</guid><pubDate>Thu, 13 Nov 2014 22:30:00 +0000</pubDate><atom:updated>2014-11-14T00:40:02.712+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">development</category><category domain="http://www.blogger.com/atom/ns#">game</category><category domain="http://www.blogger.com/atom/ns#">i love my job</category><category domain="http://www.blogger.com/atom/ns#">kristal piksel</category><category domain="http://www.blogger.com/atom/ns#">mobile</category><category domain="http://www.blogger.com/atom/ns#">oyun</category><category domain="http://www.blogger.com/atom/ns#">video game</category><title>Kristal Piksel Video Oyun Odulleri</title><description>&lt;div style=&quot;text-align: justify;&quot;&gt;
Yine ben :)&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;
Surekli yaziyormus izlenimi...&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;
Ve &lt;a href=&quot;https://www.itusozluk.com/goster.php/y%FDlmaz+%F6zdil+tarz%FD+yaz%FD+yazma+rehberi&quot; target=&quot;_blank&quot;&gt;Yilmaz Ozdil tarzi&lt;/a&gt; bir yaklasim :))&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;
Neyse konuya gireyim. Gecen haftasonu (09.11.2014) &lt;a href=&quot;http://www.oyunder.org/site/&quot; target=&quot;_blank&quot;&gt;Oyun Gelistiricileri Dernegi&#39;&lt;/a&gt;nin katkilari ile &amp;nbsp;ucuncusu gerceklesen &lt;a href=&quot;http://kristalpiksel.com/&quot; target=&quot;_blank&quot;&gt;Kristal Piksel Video Oyun Odulleri&lt;/a&gt; toreninde &lt;a href=&quot;http://www.peakgames.net/&quot; target=&quot;_blank&quot;&gt;Peak Games&lt;/a&gt; calisani olarak juri uyesi ve davetli konusmaci :) olarak bulundum.&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;
Guzel bir organizasyon ve toren ile aday olarak gosterilen 60 tane halis muhlis Turk yapimi oyunu inceledik. Ve once finalistleri sonra da finalistler arasindan 8 farkli kategoride kazananlari (dogal olarak) zorlu ve tartismali bir surec sonunda sectik. Bu surecteki tartismalardan ve juri uyelerinden bahsetmem dogru olmaz diye dusunuyorum.&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;
Ama odul toreninden, kendi konusmamdan ve panellerden bahsedebilirim.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://kristalpiksel.com/images/designed/slider2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://kristalpiksel.com/images/designed/slider2.jpg&quot; height=&quot;120&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Yilin Oyunu: Incredible Toys&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Oncelikle odul toreni, simdi Turkiye&#39;de oyun sektorunun daha emekleme asamasinda oldugu gercegini hesaba katarsak, finalistler ve kazananlar gayet guzel produksiyonlar. Ama global olcekte baktigimizda gercekten gerilerdeyiz :( &amp;nbsp;&lt;a href=&quot;http://kristalpiksel.com/index.php/oduller-menu&quot; target=&quot;_blank&quot;&gt;Tum finalistleri ve kazananlari buradan gorebilirsiniz&lt;/a&gt;, bazi oyunlari ozellikle &lt;a href=&quot;http://itunes.apple.com/tr/app/catlak-yumurta-egg-fight/id828989994&quot; target=&quot;_blank&quot;&gt;Egg Fight&lt;/a&gt;&#39;i cok cok begendim.&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;
Bununla birlikte oyun yapan, ugrasan herkese tebriklerimi iletmek isterim. Cunku bu isin ne kadar zor ve cetrefilli bir surec oldugunu bizzat tecrube ediyorum. Iste bu zor surecte, bu tarz organizasyonlarin temel amaci oyun ekosistemini gelistirmek, insanlari tanistirmak, manevi destek olmak seklinde dusunebilirsiniz. Kristal Piksel Video Oyun Odulleri de bu parallelde bir organizasyon, tum emek verenlere tekrardan cok tesekkurler.&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;
Peki benim konusmam nasildi derseniz. Ben pek begen(e)medim aslinda. Cok kisa zamanda hazirlanmam gereketiginden, uzerinde cok fazla dusunemeden &quot;Mobil Oyunlar&quot; uzerine konusmaya karar verdim. Genis bir konu oldugunu biliyorum evet, biraz daha spesifik bir konu secseydim daha iyi olabilirdi. Bir daha ki sefere artik. Bu genis konu uzerinde edindigim tecrubelerden, bazi istatistiklerden ve bagimsiz oyun gelistiriciler icin bazi ipuclarindan boyle hap gibi bahsettim. Dedigim gibi bunun yerine daha spesifik bir konu uzerinde daha genis konusmak sanki biraz daha iyi olurdu. &amp;nbsp;&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;
Konusmam kaydedildi ama nerede yayinlanacak, veya yayinlanacak mi bilmiyorum. Gerci onun haricinde TurkNet.com&#39;dan Figen hanimla bir video roportaj yaptik, galiba o yayinlanacak, en kotu onu buraya eklerim. Ama buyrunuz yaptigim sunum, afiyet olsun:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;485&quot; marginheight=&quot;0&quot; marginwidth=&quot;0&quot; scrolling=&quot;no&quot; src=&quot;//www.slideshare.net/slideshow/embed_code/41513542&quot; style=&quot;border-width: 1px; border: 1px solid #CCC; margin-bottom: 5px; max-width: 100%;&quot; width=&quot;595&quot;&gt; &lt;/iframe&gt; &lt;/div&gt;
&lt;div style=&quot;margin-bottom: 5px;&quot;&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;strong&gt; &lt;a href=&quot;https://www.slideshare.net/HakanSaglam/mobile-games-41513542&quot; target=&quot;_blank&quot; title=&quot;Mobile Games&quot;&gt;Mobile Games&lt;/a&gt; &lt;/strong&gt; from &lt;strong&gt;&lt;a href=&quot;https://www.slideshare.net/HakanSaglam&quot; target=&quot;_blank&quot;&gt;Hakan Saglam&lt;/a&gt;&lt;/strong&gt; &lt;/div&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;
Gelelim panellere, ilk panelde kendi oyun sirketlerini kurmus, bir sekilde hayatlarina devam eden girisimciler (Ergun Güvenç, Erkan Bayol, Hakan Tüzün) vardi. Cok faydali bilgiler verdiler. Cok kisa ozeti buyuk hayalleriniz olabilir ama kucuk kucuk aksiyonlarla ilerleyin, bir cok deneme yapin, tecrube edin, yilmayin, birbirinize yardim edin ve en onemlisi size uygun degilse girisimci olmayin :) bu noktada &lt;a href=&quot;http://blog.hakansaglam.com/2013/08/girisimci-mi-girisken-mi.html&quot;&gt;eski yazilarimdan bir tanesi&lt;/a&gt; aklima geldi, tavsiye ederim.&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;
Diger panelde ise, Turkiye&#39;deki oyun sektorunun onde gelen basin insanlari (Tuğbek Ölek, Levent Pekcan, Gökhan Yılmaz) vardi. Yine kisa ozet gececek olursam soyledikleri sey suydu. Basinin sizi desteklemesini istiyorsaniz bu is icin zaman ve enerji harcayin. Sadece oyunun teknik tarafini bitirip simdi bizi basinda yayin diyemezsiniz, pazarlama ve tanitim icin de ugrasmalisiniz, mumkunse isi bu olan bir yardimciniz olsun tavsiyesinde bulundular.&amp;nbsp;&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;
Konuyla ilgili (TeknoSeyir ekibinden Levent Pekcan ve Murat Gamsiz&#39;in hazirladigi) cok aciklayici bir &lt;a href=&quot;http://teknoseyir.com/kristal-piksel-2014-etkinligi-degerlendirmesi&quot; target=&quot;_blank&quot;&gt;videoyu&lt;/a&gt; buradan izleyebilirsiniz.&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;
Iste boyle, benim icin degisik ve guzel bir tecrube oldu. Guvenen, cagiran, yardim eden, dinleyen &amp;nbsp;ve tabiki bu yaziyi okuyan herkese tesekkur ederim.&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;
Saglicakla....&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
</description><link>http://blog.hakansaglam.com/2014/11/kristal-piksel-video-oyun-odulleri.html</link><author>noreply@blogger.com (Hakan Saglam)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3672420913092616782.post-2856738247036369482</guid><pubDate>Thu, 26 Dec 2013 08:11:00 +0000</pubDate><atom:updated>2014-11-14T00:44:25.766+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">al pacino</category><category domain="http://www.blogger.com/atom/ns#">christopher walken</category><category domain="http://www.blogger.com/atom/ns#">dost</category><category domain="http://www.blogger.com/atom/ns#">dostluk</category><category domain="http://www.blogger.com/atom/ns#">film</category><category domain="http://www.blogger.com/atom/ns#">movie</category><title>Dostluk Uzerine Bir Film</title><description>&lt;div style=&quot;text-align: justify;&quot;&gt;
Gecen gun, gecenin bir yarisi uyanan, ve uyanmakla kalmayip ustune oyun oynamak isteyen&amp;nbsp;&lt;a href=&quot;https://www.facebook.com/photo.php?fbid=10152260678692598&amp;amp;l=3888cde1d5&quot; target=&quot;_blank&quot;&gt;Sarp&lt;/a&gt;&#39;i tekrar uykulu haline getirmek icin cok ugrastim. Tabii bu arada benim uyku da kacmis oldu. Yakiniyorum zannetmeyin, ben her halini seviyorum keratanin, anlatmak istedigim baska seyler :)&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;
Neyse madem gecenin bir vakti ayaktayim, soyle televizyonda ne var diye bakarken, daha onceden bir ucak yolculugunda izleyip cok begendigim &quot;&lt;b&gt;&lt;a href=&quot;http://www.imdb.com/title/tt1389096/&quot; target=&quot;_blank&quot;&gt;Stand Up Guys&lt;/a&gt;&lt;/b&gt;&quot; filmine rastladim. Ve tereddutsuz tekrar izlemeye koyuldum. Super super bir film, IMDB&#39;de neden 6.5 yildiz almis anlamadim. Suprizli , vurdulu, kirdili olmadigi icin belki de... Neyse ben neden cok sevdim derseniz, kisaca ozetleyecegim izninizle...&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&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/AVvXsEg_3H2uwwizIGJRuOo4HFwsXQE8GrNd7Lc7P_XUuVKDWY6h89MRHHjDH1j_t7IipYBuTWF1fx-WHohs5A-jR7TxzuxCI2oaw6yHtNQvNLoom1Bfrk2_I8j7_NdEU098hMdoYiC9tHxOBsw/s1600/stand-up-guys02.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/AVvXsEg_3H2uwwizIGJRuOo4HFwsXQE8GrNd7Lc7P_XUuVKDWY6h89MRHHjDH1j_t7IipYBuTWF1fx-WHohs5A-jR7TxzuxCI2oaw6yHtNQvNLoom1Bfrk2_I8j7_NdEU098hMdoYiC9tHxOBsw/s400/stand-up-guys02.jpg&quot; height=&quot;320&quot; width=&quot;400&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;
Bu arada bastan soyleyeyim, filmden bazi seyler (spoiler alert) analtacagim. Sonra problem olmasin. Gerci bu tutumu da anlayabilmis degilim, bir filmi sadece sonu icin mi izliyorsunuz, arada gecen olaylar, muzikler, &amp;nbsp;oyunculuk, karakterlerin gelisimi hic onemli degil mi. Neyse benim gibi dusunenler ve daha once izlemis olanlar icin gelsin bu yazim.&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;
Film &lt;a href=&quot;http://www.imdb.com/name/nm0000199/?ref_=tt_cl_t1&quot; target=&quot;_blank&quot;&gt;Val&#39;in (Al Pacino)&lt;/a&gt; bilmem kac yil sonra hapishaneden cikmasi ile basliyor. Onu karsilamaya gelen kadim dostu &lt;a href=&quot;http://www.imdb.com/name/nm0000686/?ref_=tt_cl_t2&quot; target=&quot;_blank&quot;&gt;Doc (Christopher Walken)&lt;/a&gt;&amp;nbsp;ise icinde bir sikinti veya ikircikli bir halde... Ve daha sonra bir bakim evinden kaciracaklari ucuncu dostlari ve ayni zamanda da yillar once yaptiklari islerde &lt;a href=&quot;http://blog.hakansaglam.com/2012/01/ryan-gosling-ve-drive.html&quot;&gt;driver&lt;/a&gt; olan &lt;a href=&quot;http://www.imdb.com/name/nm0000273/?ref_=tt_cl_t3&quot; target=&quot;_blank&quot;&gt;Hirsch (Alan Arkin)&lt;/a&gt;&amp;nbsp;ile cete tamamlaniyor. Bu uclu sadece 1 gun geciriyorlar, yani film sadece 1 gunu anlatiyor. Doc&#39;in sorunu ne, Val ne istiyor, Hirsch nasil oluyor, hepsini bir gecede goruyoruz :) Bazi kisimlari gercekten uzak, abarti buldum. Sonunu pek begenmedim. Ama ozellikle (genelde yardimci rollerde oynayan) &lt;b&gt;Christopher Walken&lt;/b&gt;&#39;in muthis oyunculugu ve cool tavirlari superdi.&amp;nbsp;&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;
Peki, bu filmi neden bu kadar cok sevdin derseniz. Oncelikle yillar suren boyle bir dostlugu kim istemez. Aralarinda ne bir cekisme, ne de bir catisma var. Tum sirlarin hic cekinmeden, rahatca soylenebilmesi hatta soylenmesine bile gerek olmadan anlasilmasi. Oyle buyuk sevgi gosterileri olmaksizin, iclerindeki sevgiyi hissettirebilmeleri. Yani beni asil etkileyen ve uzerine yazi yazdiran filmin senaryosu, sonu, muzigi, oyunculuklarindan ziyade, hissettirdigi o dostluk havasi... Tamam, tamam o hava az once bahsettigim unsurlar bir araya geldigi icin olusmus ama resmen icimde yer etti bu film.&lt;br /&gt;
&lt;br /&gt;
Dostluk nedir, tarifi varmidir. Sozluk anlamindan bahsetmiyorum, bir arkadasin ne zaman dostun olmaya baslar. Nasil olcersin, olcmeye gerek var mi ki... Birisine dost olmaya calisamazsin, ya da sokaklarda dost arayamazsin heralde... Bir insanin hayatta kac tane dostu olabilir, senin kac tane dostum diyebilecegin kisi var cevrende. &lt;b&gt;Yani zor bulunur, tam olarak tanimlayamadigin icin de arayamadigin, kendiliginden olan, icten gelen bir durum galiba...&lt;/b&gt; (Simdi aklima geldi de, Ingilzce&#39;de bunun karsiligi var mi mesela, buddy falan tam olarak yerini tutmuyor sanki...)&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;
Ne diyeyim, umarim dostlarimizi tez zamanda buluruz ya da bulduklarimizin kiymetini biliriz. Ve kurdugumuz dostluklar da bu filmdeki kadar uzun soluklu, karsiliksiz ve saf olur... Amin...&lt;/div&gt;
</description><link>http://blog.hakansaglam.com/2013/12/dosluk.html</link><author>noreply@blogger.com (Hakan Saglam)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_3H2uwwizIGJRuOo4HFwsXQE8GrNd7Lc7P_XUuVKDWY6h89MRHHjDH1j_t7IipYBuTWF1fx-WHohs5A-jR7TxzuxCI2oaw6yHtNQvNLoom1Bfrk2_I8j7_NdEU098hMdoYiC9tHxOBsw/s72-c/stand-up-guys02.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3672420913092616782.post-7043628349826148796</guid><pubDate>Mon, 09 Dec 2013 09:51:00 +0000</pubDate><atom:updated>2013-12-26T10:45:44.138+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">android</category><category domain="http://www.blogger.com/atom/ns#">development</category><category domain="http://www.blogger.com/atom/ns#">etohum</category><category domain="http://www.blogger.com/atom/ns#">ios</category><category domain="http://www.blogger.com/atom/ns#">mobile</category><category domain="http://www.blogger.com/atom/ns#">oyun</category><category domain="http://www.blogger.com/atom/ns#">teknoloji</category><title>eTohum Oyun Gelistiricileri Zirvesi&#39;ndeydim</title><description>&lt;div style=&quot;text-align: justify;&quot;&gt;
Aslinda 2013&#39;teki basarimdan(!) dolayi kendimi kutlamak istiyorum. Suana kadar sadece 3 tane yazi yazmisim koca yilda... Umarim bu basarim 2014&#39;te devam etmez.&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;
Her neyse asil konuma donecek olursam. Bildiginiz uzere (benim icin ciddi) bir kariyer degisikligi ile &lt;a href=&quot;http://blog.hakansaglam.com/2013/07/wwdc-2013.html&quot;&gt;Peak Games&#39;le birlikte oyun ve mobil dunyaya giris yapmistim.&lt;/a&gt;&amp;nbsp;Kendi adima daha henuz emekleme asamasinda olmama ragmen &lt;a href=&quot;https://twitter.com/burakbuyukdemir&quot; target=&quot;_blank&quot;&gt;Burak Buyukdemir&lt;/a&gt; tarafindan &lt;a href=&quot;http://www.etohum.com/etkinlik/oyun-gelistiricileri-zirvesi&quot; target=&quot;_blank&quot;&gt;eTohum Oyun Gelistiricileri Zirvesinde &lt;/a&gt;oyunlari nasil yaptigimizla ilgili bir sunum yapma teklifi aldim.&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;
Once heyecanla soyle 45 dakika - 1 saatlik bir sunum hazirliklarina basladim, cunku anlatacak cok sey vardi. Aralarindan daha heyecanli (yani biz developer dunyasi icin heyecanli) olanlarini sectim falan guzel bir sablon olusturdum. Hatta sunumun yarisini da hazirlamisken, zirvenin ajandasi aciklandi ve konusmaci coklugundan dolayi herkesin 20&#39;ser dakika konusmasina yetecek kadar zaman oldugu ortaya cikti. &amp;nbsp;Neyse oyleydi boyleydi derken ben sunumu kirptim da kirptim :) Isterseniz soyle bir goz gezdirin.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;355&quot; marginheight=&quot;0&quot; marginwidth=&quot;0&quot; scrolling=&quot;no&quot; src=&quot;http://www.slideshare.net/slideshow/embed_code/29027644&quot; style=&quot;border-width: 1px 1px 0; border: 1px solid #CCC; margin-bottom: 5px;&quot; width=&quot;425&quot;&gt; &lt;/iframe&gt; &lt;br /&gt;
&lt;div style=&quot;margin-bottom: 5px;&quot;&gt;
&lt;strong&gt; &lt;a href=&quot;https://www.slideshare.net/HakanSaglam/mobile-game-development-29027644&quot; target=&quot;_blank&quot; title=&quot;Mobile Board Game Development Lifecycle&quot;&gt;Mobile Board Game Development Lifecycle&lt;/a&gt; &lt;/strong&gt; from &lt;strong&gt;&lt;a href=&quot;http://www.slideshare.net/HakanSaglam&quot; target=&quot;_blank&quot;&gt;Hakan Saglam&lt;/a&gt;&lt;/strong&gt;&lt;/div&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;br /&gt;
Benim zirveden cikardigim sonuc, Turkiye&#39;de oyun dunyasi (ayni benim gibi) daha yolun en basinda, ogrenmesi ve tecrube etmesi gereken yuzlerce konu var. Tabii bu ogrenmek ve tecrube dedigimiz seyler &lt;b&gt;zaman&lt;/b&gt;, &lt;b&gt;efor&lt;/b&gt; ve &lt;b&gt;para&lt;/b&gt; gerektiriyor.&amp;nbsp;&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;
Gordugum kadariyla zaman konusunda bir sikintimiz yok. Ama efor konusunda ciddi sorunlar var, herkes kolay yoldan biseyler yapmak pesinde, yargilamiyorum ama isin dogru yolu bu degil bence. Cikis noktamiz kesinlikle para olmamali, dunyayi sallayacak isler cikarmak istiyorsak cok calismak zorundayiz, kolay yoldan cok calismak diye bisey de ben bilmiyorum :)) Para konusunda ise daha ciddi sorunlar var, oyle veya boyle bir turlu kaynak bulunamiyor. O yuzden de bu ise girisenlerin ilk yaptigi oyunun basarili olmamasi ikinci oyun icin nefeslerinin yetmemesine neden oluyor. Ve az da olsa elde edilen tecrube ve bilgi boylelikle dagilmis, kaybolmus oluyor.&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;
Bunlarin isiginda cok rahat diyebilirim ki, Turkiye&#39;de oyun dunyasinda basarili olmak istiyorsaniz; fazla maceraya girmeden oncelikle kendinize amiral gemisi niteliginde oyunlar cikarmaniz lazim. &lt;a href=&quot;http://www.peakgames.net/&quot; target=&quot;_blank&quot;&gt;Peak Games&lt;/a&gt;&#39;in stratejisi bu noktada cok dogru, board oyunlari uzerinden kendisine finans, kullanici ve itibar saglayip daha baska maceralar icin imkan olusturmus oluyor. Sonucta anladigim kadariyla board oyunlari (Okey, Tavla...) Turkiye&#39;de en cok oynanan oyunlar, bu konuda uzman sayilmam ama gorunen koy de klavuz istemez.&amp;nbsp;&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 style=&quot;text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; height=&quot;281&quot; mozallowfullscreen=&quot;&quot; src=&quot;//player.vimeo.com/video/80883144&quot; webkitallowfullscreen=&quot;&quot; width=&quot;500&quot;&gt;&lt;/iframe&gt;&lt;/div&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;
Bu arada yeri gelmisken bir konudan bahsetmeden gecemeyecegim. Zirve&#39;de Tart Games ve Startup Kitchen&#39;dan &lt;a href=&quot;https://twitter.com/emraholgun&quot; target=&quot;_blank&quot;&gt;Emrah Olgun&lt;/a&gt;&amp;nbsp;da bir sunum yapti. Uzun zamandir calistiklari, ve basariya ulasan ama bir turlu para kazandiramayan &lt;a href=&quot;http://kixel.co/&quot; target=&quot;_blank&quot;&gt;Kixel&lt;/a&gt; isimli oyunlarindan ve yasadiklari guzel tecrubelerden bahsetti. Kendisine tesekkur etmek istiyorum. Bunun yaninda sunumunda bir kac kere ustune basarak soyledigi &quot;nedense Tavla veya Okey yapmadik&quot; cumlesiyle, zaten yolun daha basinda olan Turk Oyun Dunyasini anti-cesaretlendirici tavirlara girmemek gerektigini dusunuyorum...&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;
Bunlar haricinde Zirve gercekten guzeldi. Organizasyon icin &lt;a href=&quot;http://www.etohum.com/&quot; target=&quot;_blank&quot;&gt;eTohum&lt;/a&gt;&#39;a ve beni davet ettigi icin Burak&#39;a cok tesekkur ediyorum. Benim nacizane bir onerim bu tur zirvelerde daha teknik konular konusulmali, sadece surecler, tecrubelerden ziyade hands-on sunumlar daha cok olmali diyerek bu yilki 4. yazimi da bitirmis oluyorum, ne mutlu bana...&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</description><link>http://blog.hakansaglam.com/2013/12/etohum-oyun-gelistiricileri.html</link><author>noreply@blogger.com (Hakan Saglam)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3672420913092616782.post-2078231965719318343</guid><pubDate>Thu, 01 Aug 2013 08:15:00 +0000</pubDate><atom:updated>2013-08-01T12:36:16.975+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">founder</category><category domain="http://www.blogger.com/atom/ns#">girisim</category><category domain="http://www.blogger.com/atom/ns#">girisimci</category><category domain="http://www.blogger.com/atom/ns#">kitap</category><category domain="http://www.blogger.com/atom/ns#">startup</category><title>Girisimci mi, Girisken mi?</title><description>&lt;div style=&quot;text-align: justify;&quot;&gt;
Bir kac ay once bitirdigim bir kitaptan aldigim bazi notlari paylasmak istiyorum. Ve startup bir sirket kurmanin, veya super oldugunu dusundugunuz bir fikrinizin hayata gecmesi icin gereken bazi puf noktalari listelemek istiyorum. (Yazinin basliginin anlami asagida :)&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: justify;&quot;&gt;
Okudugum kitap &quot;&lt;a href=&quot;http://www.amazon.com/Founders-Work-Stories-Startups-Early/dp/1590597141&quot; target=&quot;_blank&quot;&gt;Founders at Work&lt;/a&gt;&quot;, &quot;Gisirimciler Is Basinda&quot; seklinde Turkce&#39;ye cevrilebilir heralde :) Neyse sahsen kendim, boyle bir startup veya girisimde bulunmadigim icin ancak iste bu kitaptan okudugum ve anladigim kadariyla sizinle paylasiyor olacagim.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&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/AVvXsEga9zKZmhbOp6M9cfAcu76tr8Pi6M_4os_fjDxVSMjSLKKy6QsZdQbibeI8b0TRgkZmPZje21d7-7U92JbTej3fAdZxGUwI8S3Iaa9GY8YLS0xLkzcHGXDOXZURMl4vhPIrJ22yBceTM1Y/s1600/33620671.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/AVvXsEga9zKZmhbOp6M9cfAcu76tr8Pi6M_4os_fjDxVSMjSLKKy6QsZdQbibeI8b0TRgkZmPZje21d7-7U92JbTej3fAdZxGUwI8S3Iaa9GY8YLS0xLkzcHGXDOXZURMl4vhPIrJ22yBceTM1Y/s320/33620671.png&quot; width=&quot;212&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;br /&gt;
Apple nasil kuruldu merak ediyorsaniz ama bu sefer Steve Wozniak&#39;in agzindan :). Ya da Yahoo&#39;nun, Hotmail&#39;i iyi bir business olarak gormedigini ve Microsoft&#39;a kaptirdigini ogrenmek isterseniz. Adobe&#39;nin &amp;nbsp;(Flash&#39;&#39;in sahibi olan sirketin) kurulus hikayesinde Apple&#39;in nasil onemli bir rol aldigi, PayPal&#39;in neden bu kadar yaygin oldugu, Gmail&#39;in nasil ortaya ciktigi, Flickr nasil oldu da bir oyun parcasindan 100binlerce kullanicisi olan sosyal image paylasim sitesi haline geldigi sekilinde devam eden yaklasik 20-25 civarinda cok unlu sirketin kurucu veya kurucularinin baslangic hikayelerinden olusuyor kitap.&lt;br /&gt;
&lt;br /&gt;
Bu milyon dolarlik sirketlerin kurulusunda izlenen yollar cok degiskendi.&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Kimisi &lt;b&gt;hizli ama bug&#39;li&lt;/b&gt; versiyonla hayata atilirken, kimisi &lt;b&gt;yavas ama saglam&lt;/b&gt; adimlarla kurmus sirketini / urununu...&lt;/li&gt;
&lt;li&gt;Bazi kurucular elindeki &lt;b&gt;tum parayi&lt;/b&gt;, ya da tum yatirimci parasini bu ise adarken, diger kisim cok &lt;b&gt;az para harcama&lt;/b&gt; dusturunu benimsemis.&lt;/li&gt;
&lt;li&gt;Yatirimcilarla calismasaydik basarili olamazdik diyen var, &lt;b&gt;yatirimcilari hic yanimiza yaklastirmadik&lt;/b&gt; ancak oyle basarili olduk diyen de var.&lt;/li&gt;
&lt;li&gt;Kimisi en basindan bir &lt;b&gt;is plani&lt;/b&gt; cikarip ona gore ilerlemis, kimisi ise is planini &lt;b&gt;surekli degistirmis &lt;/b&gt;hatta &lt;b&gt;hic is plani olmayan&lt;/b&gt; bile var.&lt;/li&gt;
&lt;li&gt;Bazi fikirler / urunler&amp;nbsp;&lt;b&gt;cok orjinal&lt;/b&gt;, dunyada bir benzeri yokken, bazilari ise&amp;nbsp;bir suru ornegi olan&amp;nbsp;&lt;b&gt;siradan&lt;/b&gt;&amp;nbsp;bir firkir / urunle basariya ulasmis.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Bu liste boyle uzayip gider. Hepsinin degisik, ilginc hikayeleri var. Hepsinde katilacaginiz veya katilmayacaginiz yorumlar var. Ama bence asil onemli olan hepsinde ortak olan 4 nokta var benim cikardigim. Bu noktalar tabiki yoruma acik noktalar ama benim okudugum kadariyla hepsinde var ve bence anahtarda bu noktalarda...&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Tutku (Passion)&lt;/b&gt;&amp;nbsp;- Tartismasiz en one cikan madde bu bence... Hepsi yaptigi ise inanmis, zorluklara, elestirilere ancak bu sekilde karsi durmus. &quot;Bu da belki tutar&quot; demek yerine fikrinin/urununun dunyayi degistirecegini kendisini inandirmis. Yani demem o ki, yapacaginiz urun ne olursa olsun, once kendinizi bu is icin adamaniz gerekir, bu da ancak ve ancak o urune gercekten inanirsaniz olur.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Cok Calismak (Hardworking)&lt;/b&gt; - Istisnasiz her hikayede sabahlara kadar calismalardan bahsediliyor. Hani vardir ya, &quot;Google iste&quot; yapiyor adamlar. Heralde yatarak yapmiyorlar islerini, eminim (ve icerdeki kaynaklardan da teyitli olarak soyleyebilirim ki) cok calismadan, geceni gunduzune katmadan herhangi bir konuda basarili olmak malesef mumkun degil. Aklinizdaki &quot;super bir fikir bulucam, sonra gelsin paralar&quot; dusuncesini okur gibiyim, cikarin su fikri aklinizdan artik. Cikarin cunku o fikir icin cok calismak zorundasiniz.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;A Kalite Insanlar&lt;/b&gt; - Hepsinde ortak olan diger nokta ise, falanca kisi olmasaydi basaramazdim, isin sirri takimda gibi ifadelerdi. Yani demem o ki, basari icin olmazsa olmaz isini iyi yapabilmek icin cabalayan insanlarla calismak. (A Kalite insan derken, insanlik, iyilik gibi ulvi vasiflardan ziyade is bitiren, yarim is birakmayan, kaliteli is cikaran insanlardan bahsediyorum :)). Siradan ortaklarla veya takimla bu tarz dunya capinda isler cikarmak bence imkansiz.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Sans&lt;/b&gt; - Evet en son madde sans :) hikayeleri okuyunca sansa bak su adama rastlamis, o sirada bu olay patlak vermis falan demediginiz bir tane hikaye yok. Sansiniz yaver gitmezse ne yaparsaniz yapin basariya&amp;nbsp;ulasmaniz neredeyse imkansiz&amp;nbsp;(tabiki burada basarinin tanimi cok onemli, benim demek istedigim dunya capinda is cikarmak). Gerci ben kisaca sans dedim ama isterseniz siz kader deyin, tesadufler silsilesi deyin ne derseniz deyin. Ama asil ifade etmek istedigim nokta, isin bir kismi da sizin ellerinizde degil... Gerisi icin dua mi edersiniz, fal mi baktirirsiniz, caput mu baglarsiniz bilmiyorum artik...&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;span style=&quot;font-family: Helvetica; font-size: 14px;&quot;&gt;Yanliz son olarak ozellikle dikkatinizi cekmek istedigim bir nokta var: orjinal fikir bu 4&#39;lu arasinda degil...&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica; font-size: 14px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJnbSM9MvDg_gqrscJvxGNlMn06GMd9V2NUuOCMgsNzakbwr7DMTyqXjo1TodGJfIQneTRC4y2lQ-KuytdxATolkVoDZ6CWmmykLtqzkTDGh6W59X_zjYq3n86qqsrk81BdPs2m30ZoP8/s1600/giris%CC%A7imci+u%CC%88niversite.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJnbSM9MvDg_gqrscJvxGNlMn06GMd9V2NUuOCMgsNzakbwr7DMTyqXjo1TodGJfIQneTRC4y2lQ-KuytdxATolkVoDZ6CWmmykLtqzkTDGh6W59X_zjYq3n86qqsrk81BdPs2m30ZoP8/s400/giris%CC%A7imci+u%CC%88niversite.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Fikirler, fikirler, fikirler&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica; font-size: 14px;&quot;&gt;&lt;/span&gt;

Eveeet, bunlar kitaptan gelen bilgilerdi. Simdi birazda kendi tecrubelerimden bahsetmek istiyorum. (Eee burasi benim blogum sonucta, biraz da kendimden bahsedeyim oyle degil mi) Yazinin basinda dedigim gibi, oyle buyuk capli bir girisimim olmadi henuz ama her yazilim muhendisi gibi benim de, kendi capimda, yirtma projelerim oldu. Henuz tam olarak istedigim &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2vdkOeY58lG12ZvdoKumS9w8A691XNtreQn5z4uwWScVeiXycHtTgG69H2r-XvcttdV7F5yfj8eWDcEz9UVWYAg7Q-P_xUhbs1nQUkkG19zJ12sJk-nAIJsxOe-_YjdFaiLhV8_Ltj0o/w606-h340-no/dolarlar.jpeg&quot; target=&quot;_blank&quot;&gt;seviyeye&lt;/a&gt;&amp;nbsp;gelemediler. Kimisinde tek basimaydim, kimisinde ise bir veya daha fazla arkadasla beraberdim. Bir arkadasimin ifadesi ile &lt;a href=&quot;http://tr.wikipedia.org/wiki/Giri%C5%9Fimci&quot; target=&quot;_blank&quot;&gt;girisimci&lt;/a&gt; degil de, &lt;a href=&quot;http://tr.wiktionary.org/wiki/giri%C5%9Fken&quot; target=&quot;_blank&quot;&gt;girisken&lt;/a&gt;&amp;nbsp;(yaa, anladin simdi basligi) olarak hayatima devam ederken size verebilecegim gercekler bu sekilde:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Eger &quot;&lt;a href=&quot;http://shahnawazkhan.wordpress.com/2011/06/12/are-you-a-developer-without-a-side-project/&quot; target=&quot;_blank&quot;&gt;side project&lt;/a&gt;&quot; (gunluk isinize ek olarak) yapiyorsaniz, hergun vaktinizi ayirmazsaniz bu is olmaz. Yani en yogun oldugunuz zaman bile, en azindan bir saatinizi ayirmaniz gerekir.&lt;/li&gt;
&lt;li&gt;Asla sadece zaman ve emeginize guvenmeyin, parasal olarak da yatirim yapin: tasarimci, reklam vs... Pamuk ellerinizi biraz cebinize atin kisaca :)&lt;/li&gt;
&lt;li&gt;Yapmak istediginiz sey ne durumda olursa olsun, versiyon 1.0&#39;i kesinlikle cikin. Yani projeyi yarim, &lt;a href=&quot;http://www.teknoseyir.com/kategori/tozlu-raflar/&quot; target=&quot;_blank&quot;&gt;tozlu&lt;/a&gt; bir GIT repository&#39;sinde birakmayin. Onun da yasamaya, kosmaya hakki var.&lt;/li&gt;
&lt;li&gt;Focus&#39;unuzu oyle ota boka dagitmayin, ayni anda en fazla bir, bilemedin iki proje ile ilgilenin. Daha fazlasi demek daha fazla yarim projeniz olacak demek.&lt;/li&gt;
&lt;li&gt;Sabahlari ise gideyim, aksam da bu fikrimi hayata gecireyim mantigi ancak ufak tefek isler icin olur, daha buyuk isler tum zamaninizi ve enerjinizi alir.&lt;/li&gt;
&lt;li&gt;Son madde olarak, daha kisisel bir gercek: Sadece tek basima (ortaksiz) giristigim projeler hayata gecti. Artik bu da benim sansim mi, yoksa pek takim calismasina uygun degil miyim ya da &lt;a href=&quot;http://blogs.hbr.org/cs/2011/06/why_a_great_individual_is_bett.html?goback=.npv_51534364_*1_*1_*1_*1_*1_*1_*1_*1_*1_*1_*1_*1_*1_*1_*1_*1_*1_*1_*1_*1_*1_*1_*1_*1_*1_*1_*1_*1_*1_*1_*1_*1_*1_*1_nav*4responsive*4tab*4profile*4pic_*1&quot; target=&quot;_blank&quot;&gt;tek basima dunyalara bedel&lt;/a&gt; miyim bilemiyorum.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Neyse benden bu kadar, sizlerin de dusunce ve tecrubelerinizi duymak / okumak isterim.&lt;/div&gt;
&lt;/div&gt;
</description><link>http://blog.hakansaglam.com/2013/08/girisimci-mi-girisken-mi.html</link><author>noreply@blogger.com (Hakan Saglam)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEga9zKZmhbOp6M9cfAcu76tr8Pi6M_4os_fjDxVSMjSLKKy6QsZdQbibeI8b0TRgkZmPZje21d7-7U92JbTej3fAdZxGUwI8S3Iaa9GY8YLS0xLkzcHGXDOXZURMl4vhPIrJ22yBceTM1Y/s72-c/33620671.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3672420913092616782.post-2021489794194173914</guid><pubDate>Tue, 09 Jul 2013 09:32:00 +0000</pubDate><atom:updated>2013-07-12T08:50:31.094+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">apple</category><category domain="http://www.blogger.com/atom/ns#">ios</category><category domain="http://www.blogger.com/atom/ns#">is</category><category domain="http://www.blogger.com/atom/ns#">teknoloji</category><category domain="http://www.blogger.com/atom/ns#">wwdc</category><title>WWDC 2013</title><description>&lt;div style=&quot;text-align: justify;&quot;&gt;
Bu sene ilk defa yasadigim bir tecrubeyi sizinle paylasmak istiyorum. Apple&#39;in dunyaca unlu konferansina katilma sansini buldum ve tecrubelerimi sizinle paylasmak istiyorum. Nasil oldu, ne alaka diyorsaniz eger: Yine acayip degisiklikler oldu hayatimda ve kendimi bir anda mobil oyun sektorunde buldum. Ozellikle sosyal oyun pazarinda Turkiye&#39;nin ve dunyanin sayili sirketlerinden &lt;a href=&quot;http://peakgames.net/&quot; target=&quot;_blank&quot;&gt;Peak Games&lt;/a&gt; &#39;te &lt;a href=&quot;http://www.linkedin.com/in/hakansaglam&quot; target=&quot;_blank&quot;&gt;Head of Mobile Development&lt;/a&gt; olarak calismaya basladim. Buraya nasil geldim bir ara yazarim (belki!!!)...&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
Neyse gelelim asil konuya, WWDC 2013...&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKt9td5vyIvvCAawBbGuC2lIyPLxitYqrM95PietNxmLknbrZLZjqisbyzF2X7hOV0UrIzoIfxLIK7rdk61gRgCIeDIdqv0q4dOVnMBypUb1kfM705ST-3HQZE2F-59QcP-2Xjyo7XdtU/s1600/IMG_0696.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKt9td5vyIvvCAawBbGuC2lIyPLxitYqrM95PietNxmLknbrZLZjqisbyzF2X7hOV0UrIzoIfxLIK7rdk61gRgCIeDIdqv0q4dOVnMBypUb1kfM705ST-3HQZE2F-59QcP-2Xjyo7XdtU/s640/IMG_0696.jpg&quot; width=&quot;480&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;katildim evet :)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Hikaye aslinda &lt;a href=&quot;https://developer.apple.com/wwdc/&quot; target=&quot;_blank&quot;&gt;WWDC&lt;/a&gt; sayfasindan bilet almaya calisirken basladi. Belli tarih ve saatte biletlerin satisa sunulacagini ogrenince, elimizde kredi karti gectik bilgisayar basina ama biletler daha sistem acilir acilmaz tukendi. &lt;a href=&quot;http://en.wikipedia.org/wiki/Apple_Worldwide_Developers_Conference#2010s&quot; target=&quot;_blank&quot;&gt;Apple yetkililerine gore tam olarak &lt;b&gt;71 saniye&lt;/b&gt; icinde tukenmis&lt;/a&gt;. Inanilmaz, zannetmiyorum hic bir konser bileti, hic bir event bu kadar cabuk bitmemistir. Gercekten inanilmaz... Herneyse o anda oylece kala kaldim, bileti alabilenler arasina giremedim tabiki de, 71 saniye ne demek yahuu... Eee nasil oldu da, katildim. Orasini ben de tam bilmiyorum ama bir sekilde &lt;a href=&quot;http://peakgames.net/&quot; target=&quot;_blank&quot;&gt;sevgili sirketim&lt;/a&gt;&amp;nbsp;bilet ayarladi ve here I am (buradayim).&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;a href=&quot;http://www.apple.com/apple-events/june-2013/&quot; target=&quot;_blank&quot;&gt;Biraz keynote&#39;tan (ana sunum&#39;dan)&lt;/a&gt; bahsedecegim (diger session&#39;lardan bahsetmemem gerekiyormus), biraz da izlenimlerimden. Sevgili Tim basladi anlatmaya (bekledigim onca sirayi atliyorum artik). Iste aldigim notlar:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;71 Saniye&#39;de biten biletler icin tesekkuru haketmistik zaten :)&lt;/li&gt;
&lt;li&gt;Su anda Apple elinde bulundurdugu 575 milyon kullanici yani 575 milyon kredi karti bilgisi ile degme online satis sitelerinden cok daha fazla potansiyele sahip&lt;/li&gt;
&lt;li&gt;Su ana kadar, tum developer&#39;lara 10 milyar dolar dagitmis adamlar, inanilmaz bir miktar ama bir de isin diger tarafini dusunun %30&#39;unun hep Apple&#39;a gittigini..&lt;/li&gt;
&lt;li&gt;Mobile uygulama pazarindaki gelirin %75&#39;ini ellerinde bulundurduklarini soyluyor.&lt;/li&gt;
&lt;li&gt;Anki drive diye bir AI (Yapay Zeka) sistemini gosterdiler ama tam anlam veremedim ne alakasi vardi acaba... Ustelik bu tur girisimler dunyanin her yerinde hatta benim universite yillarimda bile &lt;a href=&quot;http://www.itu.edu.tr/&quot; target=&quot;_blank&quot;&gt;ITU&lt;/a&gt; &#39;de biseyler yapiliyordu.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Sonra biraz yeni &lt;a href=&quot;http://www.apple.com/osx/preview/&quot; target=&quot;_blank&quot;&gt;Mac OS X Mavericks&lt;/a&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Finder Tabs - Bildigin sekmeler iste...&lt;/li&gt;
&lt;li&gt;File Tags - Artik dosyalarinizi tag&#39;leyebiliyorsunuz. (Pek kullanacagimi sanmam)&lt;/li&gt;
&lt;li&gt;Map, Notification Center ve iBooks artik hem iOS, hem de MacOS&#39;de calisir hale getirilmis.&lt;/li&gt;
&lt;li&gt;iCloud Key Chain ile tum sifreler falan filan tum cihazlariniz arasinda paylasilabilicek&lt;/li&gt;
&lt;li&gt;iWork - Google Docs/Drive benzeri biseyler yapilmaya calisilmis&lt;/li&gt;
&lt;li&gt;Multiple Display (benim de hosuma giden bir degisiklik)&lt;/li&gt;
&lt;li&gt;Performance Enhancements&lt;/li&gt;
&lt;li&gt;Battery Life Enhancements&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Safari&#39;de guzel degisikliker var. Ve guzel karsilastirmalar gosterildi Chrome, Firefox, IE ve Safari arasinda (biraz yanli olabilir bu karsilastirmalar:))&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Yeni makinalar gosterildi&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.apple.com/macbook-air/&quot; target=&quot;_blank&quot;&gt;New Mac Air&lt;/a&gt; - Pilinin 1 gun gittigini idda ettiler ki, eger dogruysa cok iyi degil mi sizce de...&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.apple.com/mac-pro/&quot; target=&quot;_blank&quot;&gt;Mac Pro&lt;/a&gt; - Cok guclu bir makinaymis, yuvarlak, silindir seklindeymis falan falan, ben cok etkilenmedim ama guzel son teknoloji gibi gorunuyor :)&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Ve tabiki iOS&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Once biraz rakiplerden nasil daha iyi olduklarindan bahsetti. Ozellikle Android&#39;ten tabiki.&lt;/li&gt;
&lt;li&gt;Android&#39;teki OS fragmentation&#39;ina karsilik, iOS kullanicilarinin %95&#39;ten fazlasinin hali hazirda iOS6&#39;yi kullandigini altini cizerek belirtti.&lt;/li&gt;
&lt;li&gt;Sonra da yeni &lt;a href=&quot;http://www.apple.com/ios/ios7/&quot; target=&quot;_blank&quot;&gt;iOS 7&lt;/a&gt; &#39;i acikladi, suana kada iOS&#39;teki en buyuk degisiklik olarak nitelendirdi ki, kesinlikle dogru..&lt;/li&gt;
&lt;li&gt;Yepyeni interface, cok daha minimalist bir yaklasim, gercekten etkileyici bir degisiklik olmus. Resmen butun uygulamalar degismis, cok guzel olmus.&lt;/li&gt;
&lt;li&gt;Control Center ile bazi ayarlara aninda ulasip, istediginiz degisikligi yapabiliyorsunuz.&lt;/li&gt;
&lt;li&gt;Multitasking ve background&#39;ta calisma olayini biraz daha gelistirmisler, bu konuda teknik bir post atabilirim ilerde...&lt;/li&gt;
&lt;li&gt;Safari, resmen chrome olmus :) (kusura bakmayin Apple&#39;cilar)&lt;/li&gt;
&lt;li&gt;Mac&#39;lerde de olan AirDrop (hizli dosya paylasimi) iOS cihazlarina da geldi&lt;/li&gt;
&lt;li&gt;Photos uygulamasi, cok daha akilli bir sekilde kategorizasyon yapabilir hale getirilmis&lt;/li&gt;
&lt;li&gt;AppStore uygulamasi, cevremde en cok indirilen uygulamayi gosteriyor artik, bayagi hosuma gitti benim bu ozellik&lt;/li&gt;
&lt;li&gt;Arti AppStore artik uygulamari (eger isterseniz) otomatik olarak guncelleyebiliyor.&lt;/li&gt;
&lt;li&gt;Ve tabiki iTunes Radio tanitildi. Pandora, Last FM tarzi bir radyo uygulamasi Suan icin sadece Amerika&#39;da calisiyor ama cesitli numaralarla Turkiye&#39;de de dinlyebilirsiniz.&lt;/li&gt;
&lt;li&gt;Biraz daha teknik bir konu olarak SpriteKit ve UIDynamics ile Apple oyun gelistiricilere cozumu disarilarda degil iOS&#39;in icinde arayin diye mesaj verdi. Bu konu ile ilgili kesin bir post hazirlayacagim.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Ve 500&#39;den fazla yeni ozelligin&lt;/b&gt; gelistiriciler icin sunuldugunu acikladi. Bunlarin bir kismini orada dinledim cok etkileyici guzel seyler oldugu gibi cok kiytirik seyler de vardi. Simdilik bunlari soyleyemiyorum.&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;div&gt;
Yazacak daha cok sey var belki ama son olarak Apple&#39;in uygulama gelistirmeye bakisini (en azindan benim anladigim kadariyla) iki madde ile ozetlemem gerekirse;&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Son derece tasarim odaklilar, UI (kullanici arayuzu) ve UX (kullanici tecrubesi) onlar icin en en en onemli sey.&lt;/b&gt; 45 dakikalik sunumun, 15 dakikasini sadece bir ikon nasil olmalidir konusuna ayirabiliyorlar.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Yaptiklari herhangi bir seyi en mukemmel yapmak icin cok fazla ugrasiyorlar. &lt;/b&gt;Ortaya cikan seyi begenirsin veya begenmezsin o ayri ama asla &quot;ya bu konuyu da biraz sallamislar sanki uzerinde pek dusunmeden yapmislar&quot; diyemezsin.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Dedigim gibi, daha anlatacak bir suru konu var ama kimine zorunlu olgudum icin giremedim, kimine ise baska zamana erteledigim icin giremedim. Simdilik bu kadarla idare edeceksiniz artik.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Saglicakla kaliniz....&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</description><link>http://blog.hakansaglam.com/2013/07/wwdc-2013.html</link><author>noreply@blogger.com (Hakan Saglam)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKt9td5vyIvvCAawBbGuC2lIyPLxitYqrM95PietNxmLknbrZLZjqisbyzF2X7hOV0UrIzoIfxLIK7rdk61gRgCIeDIdqv0q4dOVnMBypUb1kfM705ST-3HQZE2F-59QcP-2Xjyo7XdtU/s72-c/IMG_0696.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3672420913092616782.post-4473736104764735283</guid><pubDate>Sun, 27 Jan 2013 18:40:00 +0000</pubDate><atom:updated>2013-12-26T10:44:21.179+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">agile</category><category domain="http://www.blogger.com/atom/ns#">i love my job</category><category domain="http://www.blogger.com/atom/ns#">product owner</category><category domain="http://www.blogger.com/atom/ns#">scrum</category><title>I Love My Job - Product Owner</title><description>&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOWnwYlg6rPfOOhBhTR6M1LbIcemtkTMANSSfVMVxSx4X36_RC1svbjaTzgeCdRoeLBlZMuxLreER1AkjH_oLYXFk2ARhEM4e768-oY6ukG2rPFuQSPkNS_ASn8Rtge-OALK9x3YwHa-I/s1600/LOVE-MY-JOB.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; height=&quot;146&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOWnwYlg6rPfOOhBhTR6M1LbIcemtkTMANSSfVMVxSx4X36_RC1svbjaTzgeCdRoeLBlZMuxLreER1AkjH_oLYXFk2ARhEM4e768-oY6ukG2rPFuQSPkNS_ASn8Rtge-OALK9x3YwHa-I/s200/LOVE-MY-JOB.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;Evet ben isimi seviyorum, tamam her gunum super, mukemmel veya herkese gulucukler sacarak gecmiyor, bazen yorucu veya sinir bozucu olabiliyor ama genele baktigimizda ben mutluyum :) Iste ondandir ki, &quot;I love my job&quot; basligi altinda suana kadar is hayatimdaki tum rollerde neler yaptim, nasil yaptim ayri bir sunumla paylasmayi dusunuyorum. Oyle hemen kisa zamanda olmaz biliyorum ama zamanla tamamlarim umarim. Aslinda olay soyle basladi.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a href=&quot;http://flyingtomoon.com/&quot; target=&quot;_blank&quot;&gt;Bir arkadasimin&lt;/a&gt; on ayak olmasi uzerine 8 Kasim&#39;da&amp;nbsp;&lt;a href=&quot;http://www.agileturkey.org/&quot; target=&quot;_blank&quot;&gt;Agile Turkey&lt;/a&gt;&#39;in &lt;a href=&quot;http://www.agileturkey.org/Haberler/Detay/agile-bulusmalar-performans-degerlendirme&quot; target=&quot;_blank&quot;&gt;Agile Bulusmalar&lt;/a&gt;&amp;nbsp;adli etkinliklerinden bir tanesine&amp;nbsp;katildim. Yaklasik 2 saat suren gayet keyifli, gayet bilgilendirici, rahat bir ortam buldum. Benim 2 yil kadar PO (Product Owner) rolunde calistigimi ogrenen etkinlik organizatorleri bir dahaki bulusmanin konusunun Scrum&#39;da PO rolu uzerine olmasini ve soyleyisiyi benim yonetmem seklinde oneride bulundular. Ben de elimden geldigince biseyler yapmaya calisacagimi soyledim.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://db.tt/OHGhiYuB&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;213&quot; src=&quot;http://db.tt/OHGhiYuB&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;/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;a href=&quot;http://blog.hakansaglam.com/2012/12/baba-oldum-ve-digerleri.html&quot;&gt;Aradan zamanlar gecti, degisimler yasandi :)&lt;/a&gt;&amp;nbsp;ve PO Rolunu konusacagimiz etkinligin &lt;a href=&quot;http://www.agileturkey.org/Haberler/Detay/agile-bulusmalar-2013te-de-devam-ediyor&quot; target=&quot;_blank&quot;&gt;tarihi ve yeri belli oldu&lt;/a&gt;. Oyle bir yazdimki sanki bu bulusma olmadi, iste artik o da benim kendimi ifade edememem diyelim :) bulusma oldu, hatta bulusma ile ilgili &lt;a href=&quot;http://www.agilistanbul.com/2013/01/agile-bulusmanin-ardindan-product-owner-lik.html&quot; target=&quot;_blank&quot;&gt;gayet guzel bir ozet&lt;/a&gt; de Lemi bey tarafindan yayinlandi.&lt;br /&gt;
&lt;br /&gt;
Iste tam o sirada aklima geldi. Soyle guzel bir &quot;I love my job&quot; serisi yapayim ilki de Product Owner&#39;lik uzerine olsun... Etkinlik icin hazirladigim notlarim ve tabiki 2 yil boyunca edindigim tecrubelerime dayanarak ufak bir sunum hazirladim ve &lt;a href=&quot;http://www.slideshare.net/HakanSaglam&quot; target=&quot;_blank&quot;&gt;slideshare&lt;/a&gt; alanimda yayinladim, afiyet olsun efendim.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;355&quot; marginheight=&quot;0&quot; marginwidth=&quot;0&quot; scrolling=&quot;no&quot; src=&quot;http://www.slideshare.net/slideshow/embed_code/16203869&quot; style=&quot;border-width: 1px 1px 0; border: 1px solid #CCC; margin-bottom: 5px;&quot; width=&quot;425&quot;&gt; &lt;/iframe&gt; &lt;br /&gt;
&lt;div style=&quot;margin-bottom: 5px;&quot;&gt;
&lt;strong&gt; &lt;a href=&quot;https://www.slideshare.net/HakanSaglam/product-owner-16203869&quot; target=&quot;_blank&quot; title=&quot;Product Owner&quot;&gt;Product Owner&lt;/a&gt; &lt;/strong&gt; from &lt;strong&gt;&lt;a href=&quot;http://www.slideshare.net/HakanSaglam&quot; target=&quot;_blank&quot;&gt;Hakan Saglam&lt;/a&gt;&lt;/strong&gt; &lt;/div&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;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
</description><link>http://blog.hakansaglam.com/2013/01/i-love-my-job-product-owner.html</link><author>noreply@blogger.com (Hakan Saglam)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOWnwYlg6rPfOOhBhTR6M1LbIcemtkTMANSSfVMVxSx4X36_RC1svbjaTzgeCdRoeLBlZMuxLreER1AkjH_oLYXFk2ARhEM4e768-oY6ukG2rPFuQSPkNS_ASn8Rtge-OALK9x3YwHa-I/s72-c/LOVE-MY-JOB.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3672420913092616782.post-8400057742257282716</guid><pubDate>Sat, 22 Dec 2012 11:54:00 +0000</pubDate><atom:updated>2012-12-22T13:58:20.863+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">backup</category><category domain="http://www.blogger.com/atom/ns#">dropbox</category><category domain="http://www.blogger.com/atom/ns#">google drive</category><category domain="http://www.blogger.com/atom/ns#">teknoloji</category><title>Dosya Backup Stratejilerim</title><description>&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;http://blog.hakansaglam.com/2012/12/dosya-senkronizasyon-stratejilerim.html&quot;&gt;Bir onceki yazimda&lt;/a&gt; bahsettigim gibi simdi de dosya backup stratejilerimi anlatmak istiyorum. Backup konusunda sync kadar anlatacak sey yok aslinda. Daha once de dedigim gibi uzerinde calismadiginiz ve artik degisiklik yapmadiginiz ve kaybolmasini istemediginiz dosyalarinizin backup&#39;ini almalisiniz.&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;b&gt;Fotograf ve videolar&lt;/b&gt;&#39;in backup&#39;i olarak &lt;a href=&quot;http://www.google.com.tr/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=1&amp;amp;cad=rja&amp;amp;ved=0CC0QFjAA&amp;amp;url=http%3A%2F%2Fpicasaweb.google.com%2F&amp;amp;ei=OpzVULPaNsOetAa49IHICg&amp;amp;usg=AFQjCNFUFz12MWf8ndcZWFRVwpkhBcAbYA&amp;amp;sig2=Yj6AzQoU6ytoVSDqlkCQ-w&amp;amp;bvm=bv.1355534169,d.Yms&quot; target=&quot;_blank&quot;&gt;Picasa Web&lt;/a&gt; kullaniyorum. &lt;a href=&quot;http://www.google.com/mobile/+/&quot; target=&quot;_blank&quot;&gt;Google+ mobil uygulamasi&lt;/a&gt;&amp;nbsp;sayesinde cekilen her fotograf otomatik olarak picasa&#39;ya aktariliyor. Diger cihazlardan veya baskalarindan aldiklarimi manuel olarak upload ediyorum. Boylelikle cekilen hic bir fotografi kaybetmemis oluyorum. Hatta iki yerde birden saklamis oluyorum ki size biraz abarti gelebilir ama backup budur :)&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; 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/wKJ9KzGQq0w?feature=player_embedded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&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;
Biraz Picasa Web&#39;ten bahsedeyim. &lt;a href=&quot;https://drive.google.com/start&quot; target=&quot;_blank&quot;&gt;Google Drive&lt;/a&gt; ile ayni alani kullandiklari icin 5GB free alana sahipsiniz direkt olarak. Ustelik upload ettiginiz resim 1MB&#39;den kucukse onu kotanizi kullanmadan sakliyor. Bu da guzel bir ozellik :)&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;
Diger dosyalar icin ise tahmin ettiginiz uzere Google Drive&#39;i kullaniyorum. 100GB&#39;lik bir program satin aldim. Dropbox&#39;a gore cok daha ucuz bir cozum ama henuz Dropbox kadar fonksiyonel ve olgun degil ama arkasinda Google olmasi uzun vadede daha iyi olacagini ve fiyatinin da her zaman daha iyi olacagini dusunuyorum acikcasi, aralarinda cok buyuk bir rekabet oldugunu &lt;a href=&quot;https://www.google.com.tr/#hl=tr&amp;amp;q=google+drive+vs+dropbox&quot; target=&quot;_blank&quot;&gt;buradan&lt;/a&gt; anlayabilirsiniz.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZupk3RQMcHVBqoh1X9Y7zikYloDgXbcqXJW8zKtyTPfV5KXc1btt-GEAtDnc32K3BNu_o4vbV8hFm0gEXd3gweqy1XYAIYVhJxSMwXQsCWnkxSHygp0byP8ZnzZGY_YU3WGUdxmo0stg/s1600/120425-GoogleDriveVsDropboxChart.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZupk3RQMcHVBqoh1X9Y7zikYloDgXbcqXJW8zKtyTPfV5KXc1btt-GEAtDnc32K3BNu_o4vbV8hFm0gEXd3gweqy1XYAIYVhJxSMwXQsCWnkxSHygp0byP8ZnzZGY_YU3WGUdxmo0stg/s400/120425-GoogleDriveVsDropboxChart.jpg&quot; width=&quot;321&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Drive vs Dropbox&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&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;
Mac tabanli bilgisayarlarda sectigim dizinlerin otomatik olarak &lt;a href=&quot;http://www.apple.com/support/timemachine/&quot; target=&quot;_blank&quot;&gt;Time Machine&lt;/a&gt; ile lokal olarak yedeklenmesini sagliyorum. Daha sonrada bu yedekleri 5 - 6 ayda bir manuel olarak Google Drive&#39;a upload ediyorum.&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;
Windows tabanli bilgisayarlarda (is bilgisayarinda) ise yine ayni mantikla belirledigim dosyalari &amp;nbsp;ekstra bir program kullanmadan zip&#39;liyorum ve ara ara (2-3 ayda bir) manuel olarak Google Drive&#39;a upload ediyorum.&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;br /&gt;&lt;/div&gt;
</description><link>http://blog.hakansaglam.com/2012/12/dosya-backup-stratejilerim.html</link><author>noreply@blogger.com (Hakan Saglam)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZupk3RQMcHVBqoh1X9Y7zikYloDgXbcqXJW8zKtyTPfV5KXc1btt-GEAtDnc32K3BNu_o4vbV8hFm0gEXd3gweqy1XYAIYVhJxSMwXQsCWnkxSHygp0byP8ZnzZGY_YU3WGUdxmo0stg/s72-c/120425-GoogleDriveVsDropboxChart.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3672420913092616782.post-2070779853804636942</guid><pubDate>Wed, 19 Dec 2012 19:24:00 +0000</pubDate><atom:updated>2012-12-22T14:00:11.633+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">backup</category><category domain="http://www.blogger.com/atom/ns#">e-kitap</category><category domain="http://www.blogger.com/atom/ns#">photo stream</category><category domain="http://www.blogger.com/atom/ns#">senkronizasyon</category><category domain="http://www.blogger.com/atom/ns#">sync</category><category domain="http://www.blogger.com/atom/ns#">teknoloji</category><title>Dosya Senkronizasyon Stratejilerim</title><description>&lt;div style=&quot;text-align: justify;&quot;&gt;
Evet gecen gun farkettim ki, aslinda bir backup ve senkronizasyon (sync) stratejim yok kendi kisisel dokumanlarim, resimlerim, muziklerim icin falan... Hasbel-kader kullandigim &lt;a href=&quot;http://blog.hakansaglam.com/2012/02/hergun-kullandigim-uygulamalar.html&quot;&gt;bazi uygulamalar&lt;/a&gt; zaten cloud (bulut) tabanli oldugu icin oto sync/backup yapiyor ama yinede kaybedersem cok uzulecegim seyler var bilgisayarlarimda (evdekiler ve isyerindeki), telefonlarimda (kisisel, is telefonu ve esimin telefonu) veya tablette veya kindle&#39;da veya diger yerlerde... Ozellikle &lt;a href=&quot;http://blog.hakansaglam.com/2012/12/baba-oldum-ve-digerleri.html&quot;&gt;baba olduktan&lt;/a&gt; sonra cekilen hicbir &amp;nbsp;fotografi kaybetmek istemem dogal olarak. O zaman dedim zamani gelmis soyle guzel bir backup/sync stratejisi oturtmanin. Simdi sizinle bu stratejiyi paylasacagim ama oncesinde bu kavramlara bir aciklik getirmek istiyorum.&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;b&gt;Backup&lt;/b&gt; - Kaybolmasini istemediginiz her turlu dosyanizi (resim, word dokumani, programlar, kod parcaciklari gibi...) baska bir yerde daha tutmak. Yani, ayni dosyayi baska bir yere daha kopyalamak. Herhangi bir sekilde orjinalleri kaybederseniz, bu sakladiginiz dosyalari orjinal yerine kopyalayip hayatiniza devam edebilirsiniz.&amp;nbsp;&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;b&gt;Sync&lt;/b&gt; - Senkronizasyonun kisaltmasi olan bu kavram ise herhangi bir dosyanizi iki veya daha fazla farkli lokasyondan kullanmaniz gerektiginde, yaptiginiz degisikligin aninda diger lokasyonlara da yansimasini istediginiz zamanlarda kullanilan bir kavramdir.&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;
Durumu daha da netlestirmek icin ikisi arasindaki en onemli farklar soyle, cok sik degismeyen dosyalarin &lt;b&gt;backup&lt;/b&gt;&#39;ini alin, sik degisenleri &lt;b&gt;sync&lt;/b&gt; et. Degisik lokasyonlardan ulasmak istediginiz dosyalari &lt;b&gt;sync&lt;/b&gt; edin, kaybolmasindan, yanlislikla silinmesinden korktugunuz dosyalarin &lt;b&gt;backup&lt;/b&gt;&#39;ini alin.&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;
Tamam simdi bu kavramlari iyice ogrendigimize gore :) ben ne icin neler yapiyorum onu anlatayim. Bu yazimda sadece senkronizasyon (sync) stratejilerimden bahsedecegim, bir sonraki yazimda da backup stratejilerimden. Haydi bakalim...&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;b&gt;Oncelikle uzerinde calistigim dosyalar&lt;/b&gt;, ki bu dosyalar genelde calistigim bilgisayarin desktop&#39;inda oluyorlar. Iste bu dosyalari tum bilgisayarlarimda sync ederek kullaniyorum. Boylelikle &amp;nbsp;isyeri bilgisayarimda (Vaio - Windows) uzerinde calistigim bir dosyaya, cep telefonumdan (Sony - Android) veya tabletten (iPad - iOS) veya evdeki bilgisayarlarimdan (Mac Air ve Mac Mini - MacOS) ulasabiliyor ve calismaya devam edebiliyorum. Peki bunu nasil sagliyorum. &lt;a href=&quot;http://db.tt/dAKjREm&quot; target=&quot;_blank&quot;&gt;Dropbox&lt;/a&gt;&amp;nbsp;&#39;dan aldigim bir free account hal-i hazirda uzerinde calistigim tum dosyalar icin gayet yeterli ve hiztmetten de cok memnunum.&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 class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-Y9F_H0-xW-wr2nMZQEz9HtIiZpCSDnJtEq-WK-mgGGpOOgPuUp7tFDsFP_EUZzrBSDehMhuiGzVBCOJ9TjlGiwZj8dppDVNEmB-XZf0qFCRKRZd7FEhWJ5HvjljolV7LAsuVsqrH1Zs/s1600/dropbox1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;260&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-Y9F_H0-xW-wr2nMZQEz9HtIiZpCSDnJtEq-WK-mgGGpOOgPuUp7tFDsFP_EUZzrBSDehMhuiGzVBCOJ9TjlGiwZj8dppDVNEmB-XZf0qFCRKRZd7FEhWJ5HvjljolV7LAsuVsqrH1Zs/s320/dropbox1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&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;
Eveet ben bir &lt;a href=&quot;http://blog.hakansaglam.com/search/label/yazilim&quot;&gt;yazilimci&lt;/a&gt;&amp;nbsp;olduguma gore cogu zaman (kendim icin veya isyeri icin) &lt;a href=&quot;http://blog.hakansaglam.com/2012/12/baba-oldum-ve-digerleri.html&quot;&gt;giderek azalan&lt;/a&gt; bir trendde de olsa hala kod yaziyorum. Bu demek oluyor ki, bu &lt;b&gt;yazdigim kodlar&lt;/b&gt; bir sekilde versiyonlanarak saklanmalilar, yoksa el emegi goz nuru olan &lt;a href=&quot;http://tr.wikipedia.org/wiki/Yaz%C4%B1l%C4%B1m_sanat%C4%B1&quot; target=&quot;_blank&quot;&gt;sanat eserlerim&lt;/a&gt;&amp;nbsp;(bu konu ile ilgili bir yazim olucak unutturmayin) kaybolur falan, hic olacak is degil. Bunun icin ise &lt;a href=&quot;https://github.com/hakansaglam&quot; target=&quot;_blank&quot;&gt;Github&lt;/a&gt;, &lt;a href=&quot;https://bitbucket.org/hakansaglam&quot; target=&quot;_blank&quot;&gt;Bitbucket&lt;/a&gt;, &lt;a href=&quot;https://xp-dev.com/&quot; target=&quot;_blank&quot;&gt;XP Svn&lt;/a&gt; ve tabiki sirketin private &lt;a href=&quot;http://git-scm.com/&quot; target=&quot;_blank&quot;&gt;GIT&lt;/a&gt; versiyon kontrol sistemini kullaniyorum.&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 class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYiEAwQduWy7-WTngPCGdCOWhrzw-8ZBKGXJxOBbeIEpqOO2BKmoqiboQXmuN6CTN00wMU7mmDdfP1VF-Oz4fE9tdoRMEbm6e7dl62hFCPuI8WIkFt8aRQXWTwshRQ977gnXjIoDfTYTY/s1600/git-cheat-sheet-large.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;247&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYiEAwQduWy7-WTngPCGdCOWhrzw-8ZBKGXJxOBbeIEpqOO2BKmoqiboQXmuN6CTN00wMU7mmDdfP1VF-Oz4fE9tdoRMEbm6e7dl62hFCPuI8WIkFt8aRQXWTwshRQ977gnXjIoDfTYTY/s320/git-cheat-sheet-large.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Fotograf ve videolar&lt;/b&gt; en sıkıntılısı, neden mi, cunku binbir turlu yerden fotograf cekilebiliyor ozellikle de &lt;a href=&quot;http://blog.hakansaglam.com/2012/12/baba-oldum-ve-digerleri.html&quot;&gt;Sarp&lt;/a&gt;&#39;in fotograflari :) Simdi evdeki &lt;a href=&quot;http://www.apple.com/mac-mini/&quot; target=&quot;_blank&quot;&gt;Mac Mini&lt;/a&gt;&amp;nbsp;direk olarak her daim televizyona bagli durumda dolayisiyla ailecek film, dizi izledigimiz veya fotograflara baktigimiz medya merkezimiz olur kendisi. Iste bu sebepten butun cekilen fotograf ve videolarin bir sekilde ona aktarilmasi en mantiklisi. iOS tabanli oldugu icin esimin iPhone&#39;undan cekilen medyalar ve iPad&#39;ten cekilenler &lt;a href=&quot;http://www.iphoneturkey.biz/tag/photo-stream&quot; target=&quot;_blank&quot;&gt;Photo Stream&lt;/a&gt; ozelligi ile aninda Mac Mini&#39;ye aktariliyor. Ama fotograf makinasi ile cekilenler ve kendi telefonumdan cektiklerim malesef ancak manuel olarak aktarilmak durumunda :( belki ilerde bu konuda biseyler yaparsam sizinle de paylasirim.&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/AVvXsEg159NIKhyphenhyphenQcPY3IpaP4f1433BiGDAMjYOHZdaCpTlMcZEsC2Avfiymb5QT2VIAd1Np3etYVajouvI7Rv1zlkDt8fJ4ijBF3JrSDegZOpYzc7b9yN3AAjH0a3mLebLjMse7FgkXuFZl3do/s1600/S0142_iCloudPhotostream.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;301&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg159NIKhyphenhyphenQcPY3IpaP4f1433BiGDAMjYOHZdaCpTlMcZEsC2Avfiymb5QT2VIAd1Np3etYVajouvI7Rv1zlkDt8fJ4ijBF3JrSDegZOpYzc7b9yN3AAjH0a3mLebLjMse7FgkXuFZl3do/s320/S0142_iCloudPhotostream.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Diger onemli dosya tipi ise &lt;b&gt;muzik dosyalari&lt;/b&gt;, onlarin da bir sekilde tum aletler arasinda sync olmasi gerekiyor. Onu da tum muzik arsivimi daha once bahsettigim Google Music&#39;e upload ederek gerceklestiriyorum. 20.000 sarki upload etmek bedava, adamlar daha ne yapsin degil mi?&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;e-Kitap&#39;larimi&lt;/b&gt; ise Kindle uzerinden yonettigim icin &lt;a href=&quot;http://www.amazon.com/gp/feature.html?ie=UTF8&amp;amp;docId=1000493771&quot; target=&quot;_blank&quot;&gt;kindle uygulamasinin&lt;/a&gt; kurulabildigi her aletten &amp;nbsp;kaldigim yerden okumaya devam edebiliyorum. Ve bu kadar aletin icinde en cok sevdigimdir Kindle,&amp;nbsp;herkese cok ama cok tavsiye ederim, &lt;a href=&quot;http://mserdark.com/e-kitap-okuyuculara-giris-ve-tercih-rehberi/&quot; target=&quot;_blank&quot;&gt;e-kitap dunyasina girmek isteyenler icin bu yazi bicilmis kaftan&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Son olarak &lt;b&gt;todo listemi&lt;/b&gt; &lt;a href=&quot;https://www.rememberthemilk.com/&quot; target=&quot;_blank&quot;&gt;rememberthemilk&lt;/a&gt;&amp;nbsp;uzerinde (ucretli hesabim olan mecralardan birisidir), aklima gelen hemen her turlu seyi yani &lt;b&gt;notlarimi&lt;/b&gt; ise &lt;a href=&quot;http://evernote.com/&quot; target=&quot;_blank&quot;&gt;evernote&lt;/a&gt; uzerinde tutarak her an her yerden ulasilabilir kiliyorum.&lt;br /&gt;
&lt;br /&gt;
Iste boyle, backup stratejilerimi de &lt;strike&gt;daha sonra paylasacagim&lt;/strike&gt;&amp;nbsp;&lt;a href=&quot;http://blog.hakansaglam.com/2012/12/dosya-backup-stratejilerim.html&quot;&gt;bu yazimda paylastim&lt;/a&gt;. Takipte olunuz.&lt;/div&gt;
</description><link>http://blog.hakansaglam.com/2012/12/dosya-senkronizasyon-stratejilerim.html</link><author>noreply@blogger.com (Hakan Saglam)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-Y9F_H0-xW-wr2nMZQEz9HtIiZpCSDnJtEq-WK-mgGGpOOgPuUp7tFDsFP_EUZzrBSDehMhuiGzVBCOJ9TjlGiwZj8dppDVNEmB-XZf0qFCRKRZd7FEhWJ5HvjljolV7LAsuVsqrH1Zs/s72-c/dropbox1.png" height="72" width="72"/><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3672420913092616782.post-8665601437703400927</guid><pubDate>Tue, 18 Dec 2012 12:49:00 +0000</pubDate><atom:updated>2012-12-18T14:49:16.200+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">principal software engineer</category><category domain="http://www.blogger.com/atom/ns#">sarp</category><category domain="http://www.blogger.com/atom/ns#">solution architect</category><title>Baba Oldum ve Digerleri</title><description>&lt;div style=&quot;text-align: justify;&quot;&gt;
Uzun zamandir (&lt;a href=&quot;http://blog.hakansaglam.com/2012_08_01_archive.html&quot; target=&quot;_blank&quot;&gt;Agustos&#39;tan beri&lt;/a&gt;) blogumla cok ilgilenemedim ama hayatim devam etti tabiki, hem de cok ciddi degisikliklerle devam etti. Sizlerden uzak oldugum zamanlarda bazi yurtdisi gezileri yaptim ve (bana gore) cok ilginc gozlemlerde bulundum ve sizinle paylasmak istedim ama yapamadim. Aklima yazacak onca sey geldi ama toparlamaya zaman bulamadim derken bu gunlere kadar geldik.&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;
Neyse geleyim hayatimdaki ciddi degisikliklere;&amp;nbsp;&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;
Ilki yaklasik 5 yildir calistigim sirketimde, bazi arkadaslarimin kariyerlerine Amerika&#39;da devam etmek istemeleri uzerine yeni bir role (&lt;a href=&quot;http://www.linkedin.com/in/hakansaglam&quot;&gt;Principal Software Engineer&lt;/a&gt;) gectim. Ve bu rolde cok sevdigim arkadasim &lt;a href=&quot;http://flyingtomoon.com/about/&quot; target=&quot;_blank&quot;&gt;Lemi &lt;/a&gt;ile birlikte, son zamanlarda unuttugum bir his olan, zevkle calismanin, ise severek ve isteyerek gelmenin hazzini tekrar yasadim. Bu benim icin (is yerinde) tekrar hands-on koda geri donmek demekti ve cok guzeldi :)&lt;/div&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEWoRF-Tx6QH4H0531WdMLTyarTLmRq1_Esh-pg3SV-QDSyxYpV1Hb0Ed1SRTGrNqEQa8rppJi5B5WsyTeVdH-oGHLVqB8AaUss6SYsr1jKbj5iO1oQQUjmOLE_kn0EcM0cV5j1s-4yzg/s1600/code-under-stress.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEWoRF-Tx6QH4H0531WdMLTyarTLmRq1_Esh-pg3SV-QDSyxYpV1Hb0Ed1SRTGrNqEQa8rppJi5B5WsyTeVdH-oGHLVqB8AaUss6SYsr1jKbj5iO1oQQUjmOLE_kn0EcM0cV5j1s-4yzg/s400/code-under-stress.png&quot; width=&quot;327&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Coding is Good&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Guzeldi diyorum cunku bu da degisti. Belki hatirlarsiniz, aylar once &lt;a href=&quot;http://blog.hakansaglam.com/2012/02/london-calling.html&quot;&gt;onemli bir is icin Londra&#39;ya gittigimi&lt;/a&gt; sizlerle paylasmistim. Iste o onemli is aslinda calistigim sirketteki cok ciddi bir rolun is gorusmesi idi. Ve gorusmeyi o zamanlar yapmis olmamiza ragmen, arada gecen degisik olaylar sonunda sonuclari yeni aciklandi ve yukarida bahsettigim rolde (her ne kadar cok hosuma gitse de) cok uzun kalamadim, ve hep istedigim &quot;&lt;a href=&quot;http://www.linkedin.com/in/hakansaglam&quot;&gt;Solution Architect&lt;/a&gt;&quot; rolune gectim. Rolun tanimi ve icerigi ile sizleri cok sıkmak istemiyorum ama kisaca avrupa genelinde yazilim kararlarini alip, cozumler ureterek bilisim anlaminda sirketin dogrultusunu belirleyen ciddi ve kapsamli bir rol.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhS9BqFxXpec1_5Q29ql5BWMCxn0_6fyBZbsaXeLHuvNarRHg7MZJbZeR7esiimRvgbcUP6cBGrpulNK9w4D4HCMMymV8TgPI0kB4og8ipksD3r0dfJawHw2Nu1OTQW7GxHM8EQ1RBhNRQ/s1600/arvato1a_01.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;125&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhS9BqFxXpec1_5Q29ql5BWMCxn0_6fyBZbsaXeLHuvNarRHg7MZJbZeR7esiimRvgbcUP6cBGrpulNK9w4D4HCMMymV8TgPI0kB4og8ipksD3r0dfJawHw2Nu1OTQW7GxHM8EQ1RBhNRQ/s400/arvato1a_01.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Let&#39;s go in this way&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&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;
Son ve en onemli degisiklik ise, basliktan da anlayacaginiz uzere, &lt;b&gt;20.Mart.2012&lt;/b&gt;&#39;de ilk haberini aldigim zamandan &lt;b&gt;26.Kasim.2012&lt;/b&gt; tarihine kadar heyecanla bekledigim biricik oglumuza kavusmamiz oldu. Ozellikle yaz aylari hep onun hazirligi ile gecti diyebilirim. Calisma odamizi, arka odaya tasiyarak, bebek odasina cevirmeyle basladi hersey. Duvar kagidi, mobilyalar, bebek giysileri, oyuncaklar, biberonlar, alet edavat ve daha sayamadigim en az 100 farkli kalem derken oda tamamen baska bir havaya burundu. Git gide siklasan ve herbirisinde bebegin yuzunu gorememeyle sonuclanan&amp;nbsp;doktor ziyaretlerinde, bebegin&amp;nbsp;gayet saglikli (masallah) bir sekilde gelisimini tamamliyor oldugunu bilmek yeterliydi bizim icin... Bunlarin ustune de hamilelik ve bebek uzerine bolca kitap okuyarak gecirdik bu heycanli bekleyisimizi...&amp;nbsp;Ve bir de son zamanlara &lt;a href=&quot;http://www.amctv.com/shows/the-walking-dead&quot; target=&quot;_blank&quot;&gt;Walking Dead&lt;/a&gt; sezonlarini da araya sıkıstırdık :)&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;b&gt;En nihayetinde zaman geldi ve saglikli bir sekilde 26.Kasim.2012&#39;de aramiza katildi &quot;Sarp&quot; bebek, Allah kendisine uzun, &amp;nbsp;saglikli ve mutlu bir hayat nasip etsin isallah (amin)...&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-VkiIKcXchrw/UMDBnWRmqBI/AAAAAAAAEUQ/EWBSiIvHSKA/s1600/DSC_6119.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;212&quot; src=&quot;http://2.bp.blogspot.com/-VkiIKcXchrw/UMDBnWRmqBI/AAAAAAAAEUQ/EWBSiIvHSKA/s320/DSC_6119.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Sarp Bebek&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&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;
Panik yapmayin, yeni hayat maceralarimi yine buradan paylasiyor olacagim...&lt;/div&gt;
</description><link>http://blog.hakansaglam.com/2012/12/baba-oldum-ve-digerleri.html</link><author>noreply@blogger.com (Hakan Saglam)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEWoRF-Tx6QH4H0531WdMLTyarTLmRq1_Esh-pg3SV-QDSyxYpV1Hb0Ed1SRTGrNqEQa8rppJi5B5WsyTeVdH-oGHLVqB8AaUss6SYsr1jKbj5iO1oQQUjmOLE_kn0EcM0cV5j1s-4yzg/s72-c/code-under-stress.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3672420913092616782.post-9084361865661810246</guid><pubDate>Thu, 09 Aug 2012 12:13:00 +0000</pubDate><atom:updated>2012-08-22T10:42:08.168+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">browser</category><category domain="http://www.blogger.com/atom/ns#">bulut</category><category domain="http://www.blogger.com/atom/ns#">cloud</category><category domain="http://www.blogger.com/atom/ns#">development</category><category domain="http://www.blogger.com/atom/ns#">teknoloji</category><category domain="http://www.blogger.com/atom/ns#">uygulama</category><category domain="http://www.blogger.com/atom/ns#">yazilim</category><title>Hayati Kolaylastiran Uygulamalar - 2</title><description>&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Uzun zaman once &lt;a href=&quot;http://blog.hakansaglam.com/2012/02/hergun-kullandigim-uygulamalar.html&quot;&gt;ilk kismini yazdigim&lt;/a&gt; yazimin devamini getirmek istedim. Gunluk kosusturmada hayatimi kolaylastiran bu minik! uygulamalar, birakin sizinkini de kolaylastirsin ;)&lt;br /&gt;
&lt;br /&gt;
Cloud (Bulut) Uygulamalarindan bahsetmismiydim hatirlayamadim ama Dropbox&#39;tan bahsetmeden bu is tamamlanmis sayilmaz degil mi?&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://db.tt/dAKjREm&quot; target=&quot;_blank&quot;&gt;Dropbox&lt;/a&gt;&amp;nbsp;- Evraklarinizi, sifrelerinizi, herseylerinizi saklayabileceginiz sizin icin dunyanin bir yerlerinde acilmis bir harici disk olarak dusunebilirsiniz onu. Tabii hal boyle olunca, bir kullanici ismi ve sifresi ile hem isten, hem evden, hem de misafirlikten ve hatta cep telefonunuzdan dosyalariniza istediginiz zaman ulasabiliyorsunuz.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtv4hyRmWuXmi4w_YZoNGQIdK4bM2eQwXnuAxb3szNJM9vULBUlG0PkcDFib3wfnIxgjZaaqsLYqeavFApIEkBdWNxwap_f0ql-hodtKxjLWlRvq_Yd5bBIwtpcI4ZuVxn8V8si8cw8Rk/s1600/browsers.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;193&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtv4hyRmWuXmi4w_YZoNGQIdK4bM2eQwXnuAxb3szNJM9vULBUlG0PkcDFib3wfnIxgjZaaqsLYqeavFApIEkBdWNxwap_f0ql-hodtKxjLWlRvq_Yd5bBIwtpcI4ZuVxn8V8si8cw8Rk/s400/browsers.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;browser wars&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Eee artik internetsiz ve &lt;a href=&quot;http://www.eksisozluk.com/show.asp?t=browser&quot; target=&quot;_blank&quot;&gt;browser&lt;/a&gt;&#39;siz (bu alanda da &lt;a href=&quot;https://www.google.com/intl/tr/chrome/browser/&quot; target=&quot;_blank&quot;&gt;Chrome&lt;/a&gt;&#39;u tek geciyorum, hala kullanmiyorsaniz kesin bir deneyin derim) bir hayat olmadigina &amp;nbsp;gore soyle en cok kullandigim browser eklentilerinden ve sitelerinden de bahsedeyim...&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://gmail.com/&quot; target=&quot;_blank&quot;&gt;Gmail&lt;/a&gt;&amp;nbsp;- Sirket mailim haricinde kullandigim public mail adresim, tum maillerimi, adres defterimi burada tutuyorum. Maillerdeki thread mantigi ve sade yapisi hemen her isimi halletmemi sagliyor, ayri bir mail client&#39;ina falan ihtiyac duymuyorum. Sadece search fonksiyonunu biraz daha gelistirmeliler bence, duy sesimi Google...&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://evernote.com/clearly/&quot; target=&quot;_blank&quot;&gt;Clearly&lt;/a&gt;&amp;nbsp;- Evernote takimindan cikan yine cok yararli bir browser eklentisi. Bilgisayar ekraninizdan bir sey okumak istediginiz de, genelde yaninda kosesinde yanip sonen reklamlar, ordan burdan cikan pop-up ekranlar insanin canini sikabiliyor. Clearly de bu yaraya merhem oluyor. Istediginiz internet sayfasinda tam da okumak istediginiz alani cok guzel ve sizin istediginiz sekilde sunuyor.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://zargan.com/&quot; target=&quot;_blank&quot;&gt;Zargan&lt;/a&gt;&amp;nbsp;- Yillardir temiz ve sakin arayuzu ile bir numarali ingilizce-turkce-ingilize sozlugum olarak hayatimda etkili bir yeri var.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://divxplanet.com/&quot; target=&quot;_blank&quot;&gt;Divxplanet&lt;/a&gt; - Hemen her filmin, dizinin alt yazisinin bulundugu guzide site, cevirmenlerin ellerine saglik diyorum. Gerci &lt;a href=&quot;http://www.imdb.com/title/tt0402711/&quot; target=&quot;_blank&quot;&gt;Boston Legal&#39;&lt;/a&gt;in cevirisini bulamadigimdan ingilizce seyretmistim tum sezonlarini ama galiba simdi onu da cevirmisler.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Evdeki bilgisayarimda kullandigim uygulamarin bazilarindan bahsedeyim biraz da....&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.utorrent.com/&quot; target=&quot;_blank&quot;&gt;uTorrent&lt;/a&gt; - Ben indirmiyorum ama (!) torrent indiriyorsaniz bundan daha light olani bulamazsiniz, ustelik bir de &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.utorrent.web&amp;amp;hl=tr&quot; target=&quot;_blank&quot;&gt;android uygulamasi&lt;/a&gt; var ki, uzaktan kontrol imkani da veriyor size... Yalniz galiba yeni &amp;nbsp;&lt;a href=&quot;http://thenextweb.com/apps/2012/07/09/this-chrome-extension-makes-torrent-downloading-ridiculously-easy&quot; target=&quot;_blank&quot;&gt;bir chrome add-on&lt;/a&gt;&#39;u varmis o belki daha basit bile olabilir ama hic kullanmadim.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://calibre-ebook.com/&quot; target=&quot;_blank&quot;&gt;Calibre&lt;/a&gt; - Cok sevdigim e-kitap okuyucum &lt;a href=&quot;https://kindle.amazon.com/&quot; target=&quot;_blank&quot;&gt;Kindle&lt;/a&gt;&#39;im icin ordan burdan aldigim, indirdigim kitaplari &lt;a href=&quot;http://www.dr.com.tr/EbookHelp.aspx&quot; target=&quot;_blank&quot;&gt;e-kitap&lt;/a&gt;lari dogru formata cevirmemi saglayan guzide uygulama, daha cok ozelligi var ama ben pek kullanmiyorum.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://adium.im/&quot; target=&quot;_blank&quot;&gt;Adium&lt;/a&gt;&amp;nbsp;- Tum protokolleri destekleyen cok guzel bir instant messaging uygulamasi. MSN, Gtalk, Yahoo Messenger, Facebook akliniza ne gelirse. Yalniz unutmayin sadece MacOS&#39;ta calisiyor, Windows ortamlarinda denemeyiniz.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUq13jnu3Vs10RNrJp1yNr-1cXj8u_IvchsBFVPOGX-qX7nHwqWXvMlaxsWrCYnfvvFkObIaAEUaVPkg8JHy0NmuwFwuGMuEoVTrJZlVCbBhZeEBzJx1NPlOq9MVNw6goBIvHXSuVfdnE/s1600/software.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;266&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUq13jnu3Vs10RNrJp1yNr-1cXj8u_IvchsBFVPOGX-qX7nHwqWXvMlaxsWrCYnfvvFkObIaAEUaVPkg8JHy0NmuwFwuGMuEoVTrJZlVCbBhZeEBzJx1NPlOq9MVNw6goBIvHXSuVfdnE/s400/software.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;10100111000111000111.....&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
Mesleki acidan kullandigim uygulamalari da kisaca anlatayim. Sikilirsaniz buralari atlayabilirsiniz, anlayisla karsilarim.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.atlassian.com/&quot; target=&quot;_blank&quot;&gt;Atlassian&lt;/a&gt; - Eger yazilim sektorundeyseniz ve hic bir atlassian aracini kullanmiyorsaniz kendinizi sorgulayin derim. Cunku siz isinizi yaparken ihtiyac duydugunuz cevresel ortamlari en iyi sekilde size sunuyor.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.jetbrains.com/index.html&quot; target=&quot;_blank&quot;&gt;JetBrains&lt;/a&gt;&amp;nbsp;- Uzak ara en iyi yazilim gelistirme ortamlarini (Java, Ruby, .NET, PHP...) saglayan firmadir kendisi... Hangi dilde isterseniz o dil icin en guzel ortami sagliyor.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.apple.com/xcode/&quot; target=&quot;_blank&quot;&gt;XCode&lt;/a&gt;&amp;nbsp;- iPhone uygulamari gelistirdigim ortam, cok fazla hayatimi kolaylastirdigini soyelemem ama mecburen kullanmak zorundayim :(&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.thegeekstuff.com/2009/03/putty-extreme-makeover-using-putty-connection-manager/&quot; target=&quot;_blank&quot;&gt;Putty Connection Manager&lt;/a&gt; - SSH ile o server&#39;a bu server&#39;a baglantimi sagladigim guzel bir uygulama ama gelistirilmesi durdurulmus durumda, uzucu yani. SSH nedir ilmiyorsaniz bosverin gitsin :)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Bitti, finito derdim ama aslinda simdi bakiyorum da, yeni &lt;a href=&quot;http://trendwatching.com/trends/pdf/2012-07%20NEWISM%20(TR).pdf&quot; target=&quot;_blank&quot;&gt;newism&lt;/a&gt;&amp;nbsp;akimi ile birlikte, ayni isi daha iyi veya daha yararli&amp;nbsp;veya daha kolay veya daha farkli veya veya veya bir sekilde yapabilen uygulamalar surekli gelisecek ve &lt;a href=&quot;http://blog.hakansaglam.com/&quot;&gt;hayatim&lt;/a&gt;izdaki yerini alacak. Yani kisaca bu yazilarin devami gelir...&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</description><link>http://blog.hakansaglam.com/2012/08/hayati-kolaylastiran-uygulamalar-2.html</link><author>noreply@blogger.com (Hakan Saglam)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtv4hyRmWuXmi4w_YZoNGQIdK4bM2eQwXnuAxb3szNJM9vULBUlG0PkcDFib3wfnIxgjZaaqsLYqeavFApIEkBdWNxwap_f0ql-hodtKxjLWlRvq_Yd5bBIwtpcI4ZuVxn8V8si8cw8Rk/s72-c/browsers.jpg" height="72" width="72"/><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3672420913092616782.post-8859915203102082924</guid><pubDate>Mon, 11 Jun 2012 11:14:00 +0000</pubDate><atom:updated>2012-06-11T14:14:16.777+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">konser</category><category domain="http://www.blogger.com/atom/ns#">madonna</category><category domain="http://www.blogger.com/atom/ns#">muzik</category><title>Uzaktan Madonna&#39;yi Gordum Sanki</title><description>&lt;div style=&quot;text-align: justify;&quot;&gt;
Son bir kac gundur, kendimi surekli bu konserden bahsederken, veya bu konserle ilgili bir blog yazisi veyahut da onunla iligli bir haberi izlerken buluyorum. Sonra dedim ki, madem ben de gittim seyrettim bu konseri o zaman ben de eksik kalmayayim da biseyler anlatayim.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&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/AVvXsEj63MVo97qxcTFzaRGFbHO_asHLgeqrCQ14plibSH6kd4Tv3KFlNPDfdXensmGM9j7gaqf-S9Ga8_kCiZ_cSD4D2nxvlbjz2wFQoEg6GKsO7BoVv10xa7r8vinfr2dO4i0pYrkyLcWJeME/s1600/madonna-mdna-2012-istanbul.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj63MVo97qxcTFzaRGFbHO_asHLgeqrCQ14plibSH6kd4Tv3KFlNPDfdXensmGM9j7gaqf-S9Ga8_kCiZ_cSD4D2nxvlbjz2wFQoEg6GKsO7BoVv10xa7r8vinfr2dO4i0pYrkyLcWJeME/s200/madonna-mdna-2012-istanbul.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Bi kere biletleri boyle aylar oncesinden alinca insan konsere yeteri kadar hazilanamiyormus, onu anlamis olduk. Alacaksin son bir hafta kala, ezberleyeceksin sarkilari sonra gidip cosacaksin gonlunce... Ama dogal olarak &amp;nbsp;biletleri Subat ayinda ciktiginin ikinci gunu almak zorunda kaldik biz. Neyse konsere gelecek olursak, &lt;a href=&quot;http://blog.hakansaglam.com/2012/03/zaman-cok-az-hersey-cok-acele.html&quot;&gt;isler yogun, zaman yok su bu derken&lt;/a&gt;, &quot;&lt;a href=&quot;http://www.youtube.com/playlist?list=PL37E894136C9F1E1C&quot; target=&quot;_blank&quot;&gt;setlist&lt;/a&gt;&quot; elime cok gec ulasti, ve o an anladim, bu sarkilarin coguna eslik edemeyecektim. Neyse bari show ve ses iyi olsa diyerek ulastim &lt;a href=&quot;http://www.turktelekomarena.com.tr/anasayfa&quot; target=&quot;_blank&quot;&gt;Telekom Arenaya&lt;/a&gt;. (Bir Besiktas taraftari olarak, kabul etmeliyim ki, ulasimi kolay, girisi rahat, goruntusu mukemmel bir stad olmus. Hic mac seyretmedim orda ama guzel olsa gerek..)&amp;nbsp;Ulasim falan rahatti ama organizasyonda ozellikle yiyecek-icecek konusunda ciddi eksiklikler vardi. Yani binlerce insanin gelecegi bu kadar asikarken neden yeteri kadar yiyecek yoktu anlamadim. Neyse gelelim konsere...&amp;nbsp;&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;
Muhtesem bir gorsel show&#39;la basladi konser, agzim acik izledim diyebilirim. Ama seste bir bogukluk var bir turlu iyi bir sekilde alamiyoruz &lt;b&gt;Madonna&lt;/b&gt; ablamizin sesini... Baktim duzelecek gibi degil, dedim gelin asagi inelim orda dinlyelim. Bir sekilde indik asagi, daha guzeldi ses ama yine de yeteri kadar guzel degildi bence, hersey guzel stadda ama orda konser olmaz yada tribunden olmaz o is, kulaginiza kupe olsun...&amp;nbsp;&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 id=&quot;goog_579379788&quot;&gt;&lt;/span&gt;&lt;span id=&quot;goog_579379789&quot;&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;/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/AVvXsEj7OYmVshLbhpJ3y5hDQnqOpobkOzyMSlulupI7I4b8LdrTArpfgDZwj50RPGU760ePEQGu-z0xTqi5JC_t7P1krVYLE5AFPiWLnwI8wqxpTSsHCeVHKIlFxy88qNJ9tDC0uIbknVW007E/s1600/madonna-istanbul-mdna-concert-2012.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/AVvXsEj7OYmVshLbhpJ3y5hDQnqOpobkOzyMSlulupI7I4b8LdrTArpfgDZwj50RPGU760ePEQGu-z0xTqi5JC_t7P1krVYLE5AFPiWLnwI8wqxpTSsHCeVHKIlFxy88qNJ9tDC0uIbknVW007E/s400/madonna-istanbul-mdna-concert-2012.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Dedigim gibi gorsel bir solenle acildi konser, ama zannetmeyin ki, sonrasinda devam etmedi. Klip izler gibi izledik konseri inanilmazdi, ben hayatim boyunca boyle bir &lt;b&gt;gorsel konser&lt;/b&gt; (evet enteresan bir ifade oldu ama dogru) gormedim. Hele &quot;&lt;a href=&quot;http://www.youtube.com/watch?v=YxEJ3gjycoQ&quot; target=&quot;_blank&quot;&gt;Gang Bang&lt;/a&gt;&quot; sarkisini soylerken izlediklerimiz, gercek bir klipten farksizdi bence, mukemmeldi... Sarki icin ayni seyleri soyleyemecegim malesef, bu konuya gelecegim birazdan.&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;
50 kusur yasindaki, dunya stari hop orada, hop burada hatta ip ustunde, sahnenin altinda, &amp;nbsp;ayakata, yerde heryerde inanilmaz bir enerji ile (paylaback olarak) soyledi sarkilarini... &amp;nbsp;Bu kadar etkilenmemin sebebi sadece kendisi degil muhakkak. Iki onemli faktor var deginmek istedigim, birincisi yanindaki danscilardi, onlarda &amp;nbsp;bu show icin bayagi ter doktuler, sahidim. Ikincisi ise hareketli ve ekranli konser standi ve duvarlari, sarkiya gore, ritme ve danslara gore degisim gostererek bizi kitledi resmen.&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;
Bu kadar gorsel dedik, klip gibi dedik, hopladi zipladi dedik ama hosuma gitmeyen bazi noktalar da vardi elbet... Ozellikle MDNA albumunun turnesi olmasi sebebiyle yeni sarkilarini seslendirdi ablamiz, hem bu sarkilari bilmiyordu cogu insan, hem de bana sorarsaniz guzel de degil bu sarkilar arkadas, kimse kusura bakmasin lutfen. O yuzden kimse, yeteri kadar cosmadi insanlar falan filan demeyin, cosacak degil izlenecek bir konser hazirlamis Madonna hazretleri, tek bir sarki haric &quot;&lt;a href=&quot;http://www.youtube.com/watch?v=79fzeNUqQbQ&quot; target=&quot;_blank&quot;&gt;Like A Prayer&lt;/a&gt;&quot;...&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;
Velhasil yine olsa yine giderim, ama bu sefer saha icinde olurum orasi kesin. Ve eger bir kere daha olacaksa, eski sarkilarla yada soyle soyleyeyim iyi sarkilarla olsun lutfen, bak nasil konser olur o zaman...&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;</description><link>http://blog.hakansaglam.com/2012/06/uzaktan-madonnayi-gordum-sanki.html</link><author>noreply@blogger.com (Hakan Saglam)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj63MVo97qxcTFzaRGFbHO_asHLgeqrCQ14plibSH6kd4Tv3KFlNPDfdXensmGM9j7gaqf-S9Ga8_kCiZ_cSD4D2nxvlbjz2wFQoEg6GKsO7BoVv10xa7r8vinfr2dO4i0pYrkyLcWJeME/s72-c/madonna-mdna-2012-istanbul.jpg" height="72" width="72"/><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3672420913092616782.post-950795692831215213</guid><pubDate>Wed, 30 May 2012 08:31:00 +0000</pubDate><atom:updated>2012-08-22T10:02:29.740+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">mac os</category><category domain="http://www.blogger.com/atom/ns#">macbook</category><category domain="http://www.blogger.com/atom/ns#">ssh</category><category domain="http://www.blogger.com/atom/ns#">teknik yardim</category><category domain="http://www.blogger.com/atom/ns#">teknoloji</category><title>Bir SSH, Iki Port</title><description>&lt;div style=&quot;text-align: justify;&quot;&gt;
Daha en basindan soyliyeyim, cogu insan icin bu yazi ciddi anlamda teknik bir yazidir, ama bu konudan anlayanlar icin can sıkıcı bir durumun cozumudur efendim, o bakimdan yazmak istedim.&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;
Sıkıntımız söyle, bir mac&#39;iniz var (&lt;a href=&quot;http://www.apple.com/macbookair/&quot; target=&quot;_blank&quot;&gt;Macbook Air&lt;/a&gt;, &lt;a href=&quot;http://www.apple.com/macbookpro/&quot; target=&quot;_blank&quot;&gt;Macbook Pro&lt;/a&gt; vs...) ve uzerinde default kurulu gelen SSH Server ve Client&#39;ini cesitli amaclar icin kullaniyorsunuz, simdi bu amaclardan bazilari default portu (22) &amp;nbsp;kullanirken, bazilarinda ise baska bir port kullanmak zorundasiniz. Iste anlatacagim cozum de bu sorun icin: SSH uygulamalarinin ayni anda iki farkli portu birden kullanmasini nasil saglarsiniz?&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;
MacOS icinde tum SSH ayarlari cesitli dosyalara dagilmis durumda (konfigurasyon ve esneklik adina yapilmis zaman icinde karmasikliga gitmis bir durum gibi geldi bana).&amp;nbsp;Kesin daha baska dosyalar da vardir ama simdilik biz sadece ilk iki siradaki ile ilgileniyoruz...&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;script src=&quot;https://gist.github.com/2834228.js?file=ssh_config_files.txt&quot;&gt;
&lt;/script&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;b&gt;Adim - 1:&lt;/b&gt; Ilk yapacagimiz is, ilk siradaki dosyayi (&lt;b&gt;&lt;span style=&quot;background-color: white; font-family: &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, monospace; font-size: 12px; line-height: 16px; text-align: left; white-space: pre;&quot;&gt;/etc/services&lt;/span&gt;&lt;/b&gt;) &lt;a href=&quot;http://forum.debian.org.tr/index.php?topic=64.0&quot; target=&quot;_blank&quot;&gt;sudo ile acarak&lt;/a&gt; uzerinde asagidaki degisiklikleri yapmak. Bu degisikliklerle istedigimiz yeni port&#39;lari eklemis oluyoruz. Bu arada yeni port eklemek degil de sadece port degisikligi yapmak istiyorsaniz, asagidaki eklemeyi yapmak yerine sadece &quot;&lt;b&gt;ssh&lt;/b&gt;&quot; servisinin portlarini degistirip 3.adima gecebilirsiniz.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMC3qIJtFJdYltRUKOR2e14DSc5xLBlkzWQIk3P18M_J_vDpH2ELNDSP7YxXuzvtqfnoTObtO_kyG3DG8qoydF5slhSYe1PehDT7TkA6Nt8CG2YMb_YMC95QsKngX54Wyrn8Hd-bz8F0s/s1600/changes-on-service-file.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;115&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMC3qIJtFJdYltRUKOR2e14DSc5xLBlkzWQIk3P18M_J_vDpH2ELNDSP7YxXuzvtqfnoTObtO_kyG3DG8qoydF5slhSYe1PehDT7TkA6Nt8CG2YMb_YMC95QsKngX54Wyrn8Hd-bz8F0s/s400/changes-on-service-file.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;buyutmek icin resme tiklayiniz...&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&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;b&gt;Adim - 2:&lt;/b&gt; Evet gorudugunuz uzere, yeni portlari &quot;&lt;b&gt;ssh2&quot;&amp;nbsp;&lt;/b&gt;dedigimiz yeni bir servis icin tanimlamis olduk. Simdi yapmamiz gereken son is bu yeni servisin tanimini ikinci siradaki dosyaya (&lt;span style=&quot;background-color: white; font-family: &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, monospace; font-size: 12px; line-height: 16px; text-align: left; white-space: pre;&quot;&gt;&lt;b&gt;/System/Library/LaunchDaemons/ssh.plist&lt;/b&gt;&lt;/span&gt;) eklemek. (Dosyayi yine admin olarak &lt;a href=&quot;http://forum.debian.org.tr/index.php?topic=64.0&quot; target=&quot;_blank&quot;&gt;sudo ile acmaniz&lt;/a&gt; gerekir.)&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOXB5b2Z-KLBJ56NUzfGYvD1Pb22-X6mfm67O-ZqN8yo0w6zLwmerdpnUE0KEIulMzojztNtEjRao9qRJoSoM56An5rBHF81hgLS5nq4NGKUHmW4mbzSBlRrJHazMdWcIKvC3-MV4qXYU/s1600/changes-on-ssh.plist-file.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;242&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOXB5b2Z-KLBJ56NUzfGYvD1Pb22-X6mfm67O-ZqN8yo0w6zLwmerdpnUE0KEIulMzojztNtEjRao9qRJoSoM56An5rBHF81hgLS5nq4NGKUHmW4mbzSBlRrJHazMdWcIKvC3-MV4qXYU/s400/changes-on-ssh.plist-file.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;buyutmek icin resme tiklayiniz...
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&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;b&gt;Adim - 3:&lt;/b&gt; Son olarak asagidaki iki &lt;a href=&quot;http://guides.macrumors.com/Terminal&quot; target=&quot;_blank&quot;&gt;terminal&lt;/a&gt; komutu ile degisiklikleri yukleminiz yeterli olacaktir. Ama garanti olsun ben bunlarla ugrasamam derseniz, &lt;a href=&quot;http://www.macgasm.net/2008/05/07/restarting-os-x-from-the-command-line/&quot; target=&quot;_blank&quot;&gt;bilgisayariniz yeniden baslattiginiz&lt;/a&gt; da amaciniza ulasmis olacaksiniz.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;script src=&quot;https://gist.github.com/2834430.js?file=load_ssh.sh&quot;&gt;
&lt;/script&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;
Bitti bu kadar... Afiyet olsun...&lt;/div&gt;
</description><link>http://blog.hakansaglam.com/2012/05/bir-ssh-iki-port.html</link><author>noreply@blogger.com (Hakan Saglam)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMC3qIJtFJdYltRUKOR2e14DSc5xLBlkzWQIk3P18M_J_vDpH2ELNDSP7YxXuzvtqfnoTObtO_kyG3DG8qoydF5slhSYe1PehDT7TkA6Nt8CG2YMb_YMC95QsKngX54Wyrn8Hd-bz8F0s/s72-c/changes-on-service-file.png" height="72" width="72"/><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3672420913092616782.post-7006228567039686156</guid><pubDate>Thu, 24 May 2012 11:08:00 +0000</pubDate><atom:updated>2012-05-24T14:10:24.504+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">alisveris</category><category domain="http://www.blogger.com/atom/ns#">arastirma</category><category domain="http://www.blogger.com/atom/ns#">insan</category><category domain="http://www.blogger.com/atom/ns#">mutluluk</category><category domain="http://www.blogger.com/atom/ns#">para</category><category domain="http://www.blogger.com/atom/ns#">tuketim</category><title>Mutlulugu Satin Alin</title><description>&lt;div style=&quot;text-align: justify;&quot;&gt;
Gecen gun okudugum bir &lt;a href=&quot;http://www.wjh.harvard.edu/~dtg/DUNN%20GILBERT%20&amp;amp;%20WILSON%20(2011).pdf&quot; target=&quot;_blank&quot;&gt;makale / arastirma [ingilizce]&lt;/a&gt;, mutluluk uzerine biraz dusunmeme neden oldu. Her ne kadar duygusal ve kurallari olmayan bir durum gibi gorunse de, bu arastirma bilimsel olarak mutlulugun satin alinabilecegini gosteriyor ve bunlari da bir kac baslik altinda topluyor. Ben sizin icin bir kac tanesini (8 taneden 6&#39;sini) kisaca ozetledim, ama detaylar icin kesinlikle siz de okuyun derim.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&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/AVvXsEgSJLs2ayqonhMr4uvuVsMe35mOZq1w79WVEeLxKj-Ou8blTUzTxlP8FU7bj3Er9Afx-LxVCxSYWtWBhzSUxFTKVfCnMWlFkPRvPYrb0oi-A209wc50SY1Ybu8rzSWOG4-txGF2wFwo5cU/s1600/para-ve-mutluluk.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;312&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSJLs2ayqonhMr4uvuVsMe35mOZq1w79WVEeLxKj-Ou8blTUzTxlP8FU7bj3Er9Afx-LxVCxSYWtWBhzSUxFTKVfCnMWlFkPRvPYrb0oi-A209wc50SY1Ybu8rzSWOG4-txGF2wFwo5cU/s400/para-ve-mutluluk.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
* &lt;b&gt;Herhangi bir sey satin almak yerine, tecrube satin alin&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Gidip kendinize alacaginiz ekstra yeni ayakkabi yerine, hazirda olan ayakkabilarinizdan birisini ayaginiza gecirip annenizi de yaniniza alip sahilde bir gezinti yaptiktan sonra guzel bir cafede yemek yemeniz sizi ayni paraya daha mutlu edecektir. &lt;a href=&quot;http://blogs.gartner.com/brian_prentice/2012/03/15/my-new-ipad-buying-experience/&quot; target=&quot;_blank&quot;&gt;Bu konu ile ilgili daha ileriye gitmek isterseniz...&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;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
* &lt;b&gt;Hep &lt;/b&gt;&lt;b&gt;kendinize degil bask&lt;/b&gt;&lt;b&gt;alarina da yardim edin&lt;/b&gt;&lt;/div&gt;
&lt;span style=&quot;text-align: justify;&quot;&gt;Bizler sosyal varliklariz. Sadece hep bana hep bana diyerek hayat gecmez. Tanidigiz veya tanimadiginiz diger insanlara kucuk kucuk yardimlar veya &lt;a href=&quot;http://www.e-psikiyatri.com/eriskin-psikiyatri/hediye-pesinde-vakit-harcamayin/28191/&quot; target=&quot;_blank&quot;&gt;hediyeler almaniz&lt;/a&gt;, ve bunu aliskanlik haline getirmeniz sizi zannettiginizden cok daha mutlu bir birey yapacaktir.&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;span style=&quot;text-align: justify;&quot;&gt;* &lt;b&gt;Bir anda toptan harcamak yerine kucuk kucuk harcayin&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Insanoglunun en buyuk ozellikleinden birisi ortama ayak uydurmasidir. Hemen herseye alisabilmesi ve zamanla kaniksamasidir. (Bu konuda gayet hos bir film var: &lt;a href=&quot;http://www.imdb.com/title/tt0250258/&quot; target=&quot;_blank&quot;&gt;Das Experiment&lt;/a&gt;&amp;nbsp;ve&amp;nbsp;Hollywood hali:&amp;nbsp;&lt;a href=&quot;http://www.imdb.com/title/tt0997152/&quot; target=&quot;_blank&quot;&gt;The Experiment&lt;/a&gt;) Para harcama konusunda da, ayni durum soz konusu. Tek bir seferde alacaginiz bir kac sey yerine, ayni seyleri pey der pey almak sizi daha mutlu kilacaktir.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;span style=&quot;text-align: justify;&quot;&gt;*&amp;nbsp;&lt;b&gt;Simdi odeyin, sonra tuketin&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Once tuketip sonra odeme yaptigimiz tamamen &lt;a href=&quot;http://www.ekodialog.com/kredi-karti-piyasasi/kredi-kartlari-tarihsel-gelisimi.html&quot; target=&quot;_blank&quot;&gt;kredi kartlarina&lt;/a&gt; dayanmis su anki ekonomik duzenin aksine, insan onceden odedigi seyleri tuketirken daha mutlu oluyor(mus). Bunun on guzel ornegi yemek sektorunde, karniniz doyduktan sonra odeme yapmak yerine, gercekten acken odemek yapip sonra odeme yapmak insani daha mutlu kiliyor. Hatta bu konuyu &lt;a href=&quot;http://seinfeld.wikia.com/wiki/Jerry_Seinfeld&quot; target=&quot;_blank&quot;&gt;Jerry Seinfeld&lt;/a&gt; bir bolumde islemisti ama ben bulamadim hangi bolum oldugunu..&amp;nbsp;&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;b&gt;* Karsilastirmali alisveristen mumkun mertebe sakinin&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Gunumuzde ne alirsak alalim artik onu almadan once muadili baska markalarla (ozellikle &lt;a href=&quot;http://www.guzelfiyat.com/&quot; target=&quot;_blank&quot;&gt;internet&lt;/a&gt; araciligiyla) karsilastirma yapmadan pesini birakmiyoruz. Diger turlusunde icimiz rahat etmiyor... Evet, bu da yapilan yanlislardan, karsilastirmalar aslinda aldigimiz &amp;nbsp;urunde hic kullanmayacagimiz ozellikler uzerine kurulmus durumda. Yanlis anlasilmasin gerektigi yerde kesinlikle urunleri karsilastirmak bilincli tuketimin kurallarindan ama sirf laf olsun diye yapmayin diyor arastirma :)&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;b&gt;* Basina buyruk olmayin, suruyu takip edin&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Kisaca soylemek istedigi, diger insanlar biseyleri ne kadar cok begendiyse, sizin de o seyi begeniyor olma ihtimaliniz o kadar coktur. Genelde aykiri olmak (yerine ve zamanina gore) iyidir yada oyle algilanir. Ama diger insanlardan aykiri satin almalarinizin, sizin dusundugunuz kadar sizi mutlu etmeyecegi arastirmalarla kanitlanmis.&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;
Eveeet, iste boyle, ayni paraya daha mutlu olmanin yollari bunlarmis, artik gerisi size kalmis. Guzel bir cumle ile bitiriyorum: &quot;Para sizi mutlu etmiyorsa, bilin ki onu dogru sekilde harcamiyorsunuz.&quot;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;</description><link>http://blog.hakansaglam.com/2012/05/mutlulugu-satin-alin.html</link><author>noreply@blogger.com (Hakan Saglam)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSJLs2ayqonhMr4uvuVsMe35mOZq1w79WVEeLxKj-Ou8blTUzTxlP8FU7bj3Er9Afx-LxVCxSYWtWBhzSUxFTKVfCnMWlFkPRvPYrb0oi-A209wc50SY1Ybu8rzSWOG4-txGF2wFwo5cU/s72-c/para-ve-mutluluk.jpg" height="72" width="72"/><thr:total>0</thr:total></item></channel></rss>