Browse Source

Cross platform app dev

Phyks (Lucas Verney) 4 years ago
parent
commit
2274fd2718

+ 116
- 0
blog/2015/03/cross_platform_app_development.html View File

@@ -0,0 +1,116 @@
1
+<!DOCTYPE html>
2
+<html lang="fr">
3
+    <head>
4
+        <meta charset="utf-8">
5
+        <title>Phyks' blog - Quick comparisons of solutions for 3D cross-platform (mobile) development</title>
6
+		<link rel="stylesheet" href="//phyks.me/design.css"/>
7
+        <link type="text/plain" rel="author" href="//phyks.me/humans.txt"/>
8
+        <meta name="viewport" content="width=device-width, initial-scale=1.0">
9
+        <link rel="alternate" type="application/rss+xml" title="RSS" href="//phyks.me/rss.xml" />
10
+    </head>
11
+    <body>
12
+        <div id="wrapper">
13
+            <!-- Sidebar -->
14
+                <aside id="sidebar-wrapper">
15
+                    <header><h1><a href="//phyks.me">~Phyks</a></h1></header>
16
+
17
+                    <h2>Catégories</h2>
18
+                        <nav id="sidebar-tags">
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
20
+                        </nav>
21
+
22
+                    <h2>Derniers articles</h2>
23
+                        <ul id="sidebar-articles">
24
+                            <li><a href="//phyks.me/2015/03/cross_platform_app_development.html">Quick comparisons of solutions for 3D cross-platform (mobile) development</a></li><li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25
+                        </ul>
26
+
27
+                    <h2>Liens</h2>
28
+                        <ul id="sidebar-links">
29
+                            <li><a href="//phyks.me/contact.html" title="Contact">Me contacter</a></li>
30
+                            <li class="monospace"><a href="//links.phyks.me" title="Mon Shaarli">find ~phyks -type l</a></li>
31
+                            <li><a href="https://github.com/phyks/" rel="me" title="Github">Mon Github</a></li>
32
+                            <li><a href="//phyks.me/divers.html" title="Divers">Divers</a></li>
33
+                        </ul>
34
+                </aside>
35
+
36
+            <!-- Page content -->
37
+                <header id="header">
38
+                    <h1><a href="//phyks.me">~Phyks</a></h1>
39
+                </header>
40
+
41
+                <div id="note_responsive">
42
+                    <p><em>Note</em> : Cliquez sur la bande bleue à gauche pour faire apparaître le menu.</p>
43
+                </div>
44
+
45
+                <div id="articles">
46
+<article>
47
+	<aside>
48
+		<p class="day">27</p>
49
+		<p class="month">Mars</p>
50
+	</aside>
51
+	<div class="article">
52
+		<header><h1 class="article_title"><a href="//phyks.me/2015/03/cross_platform_app_development.html">Quick comparisons of solutions for 3D cross-platform (mobile) development</a></h1></header>
53
+		<!-- 
54
+    @author=Phyks
55
+    @date=27032015-2200
56
+    @title=Quick comparisons of solutions for 3D cross-platform (mobile) development
57
+    @tags=Mobile, Development, Game Engine
58
+-->
59
+
60
+<p>I spent some time lately comparing available development toolkits for 3D games&nbsp;/ apps on mobile platforms (mostly for hobby&nbsp;/ indy apps). I do not want to have to adapt to much my base code depending on the target platform, and was then looking at a toolkit to write most of the code once, and be able to build the app for various platforms on the market. My use case is: 
61
+<em> sufficient 3D engine (not necessarily a high end thing, just the basics to be able to write 3D apps decently. I consider <a href="http://threejs.org/">Three.js</a> as sufficient for my needs for instance).
62
+</em> I am working on Linux, so the ability to dev on Linux would be a real plus.
63
+<em> of course, it should be as less expensive as possible&nbsp;:)
64
+</em> and finally, I am paying much attention at the EULA and licenses, as I do not want to force my users to send “anonymous” statistics, I do not want my app to need extra (and useless) permissions and so on.</p>
65
+<p><em>Note</em>: I did <em>not</em> test these toolkits deeply, and am just reporting here what I found while playing a bit with them and comparing the features, licenses and requirements. I only included</p>
66
+<h2><a href="https://cordova.apache.org/">Cordova</a></h2>
67
+<p>First toolkit I had a look at was Cordova. It allows you to write pure web apps (using standard HTML&nbsp;/ CSS&nbsp;/ JS and providing some extra APIs to extend the available APIs, for bluetooth for instance) and to package them into native apps distributed through the market. What it does is basically add a wrapper around your web app to render it outside a browser, using the offered web abilities provided by webviews on iOs and on Android. Writing a web app is really super easy, and then having a first working prototype using Cordova is super fast. Cordova runs on Linux without any problems.</p>
68
+<p>It works pretty well for 2D graphics and basic applications (but needs some extra permissions as it uses a web view, even if it is not communicating over internet). But when it comes to 3D graphics, using WebGL, you will be in troubles. Indeed, the webview in Android 4.x is using an old version of Chrome, even if you install the latest Chrome on your mobile. Then, you will not be able to use WebGL as it is simply not supported, unless you use some hack to actually use a more recent Chrome version, using <a href="https://crosswalk-project.org/">Crosswalk</a> for instance. On iOS, this is even worse as WebViews prior to iOS8 do not support WebGL (and as far as I know, there is no alternative which will be both stable, reliable and will go through the reviewing process of the appstore). This mean that you will not be able to target iPhones prior to (and including) iPhone 4, and iPad 1, which in my opinion is a real problem.</p>
69
+<h2><a href="https://www.unrealengine.com/">Unreal Engine</a></h2>
70
+<p>Second option is to use the Unreal Engine 4. It is a complete 3D game engine, including many tools to build 3D apps that you can deploy on many platforms (both desktop, web and mobile). You can code in C++ with it, and script using many visual tools. It includes dedicated APIs for advanced features such as Virtual Reality (VR) and may sound overkill.</p>
71
+<p>You can dev using Windows and Mac (officially supported), but not Linux (at least, not officially). However, it seems that the dev editor can be installed on Linux at the cost of a bit of hacking, and this should be even easier to install in the near future as there seems to be a Linux community.</p>
72
+<p>Unreal Engine charges you with 5% royalties passed the first 3k$.</p>
73
+<p>Here are some relevant EULA fragments:</p>
74
+<pre><code> 12. Hardware and Usage Data
75
+
76
+You acknowledge that, as a default setting, the Engine Code will collect and send to Epic anonymous hardware and usage data from end users of Products. This functionality is used by Epic to improve the  Engine Code. You may modify the Engine Code under the License to turn off that functionality in your Product, or you may include in your Product the capability for your end users to turn off that functionality in the Product.
77
+</code></pre>
78
+<p>and</p>
79
+<pre><code>You agree to keep accurate books and records related to your development, manufacture, Distribution, and sale of Products and related revenue. Epic may conduct reasonable audits of those books and records. Audits will be conducted during business hours on reasonable prior notice to you. Epic will bear the costs of audits unless the results show a shortfall in payments in excess of 5% during the period audited, in which case you will be responsible for the cost of the audit.
80
+</code></pre>
81
+<p>The second one is a standard one, as you have to pay royalties depending on your revenues. But the first one is really concerning, as by default Unreal Engine will track your users and send anonymous statistics (thus requiring extra and unneeded permissions and raising privacy concerns). However, once you are aware of it, you can freely modify your app to prevent this, according to the EULA, so this is not a big deal in the end.</p>
82
+<h2><a href="http://unity3d.com/">Unity</a></h2>
83
+<p>Latest solution I found (used by <a href="http://www.monumentvalleygame.com/">Monument Valley</a> for instance) is the Unity game engine. The personal license is sufficient in most of the cases, and is free to use up to 100k$ gross revenue. The dev tools are available on Windows and Mac, but there is no Linux version (and no hacky way to get it in Linux).</p>
84
+<p>Here are some relevant fragments from EULA as well:</p>
85
+<pre><code>(c) users will be required to complete a user survey to activate the Software. Unity Pro users who are not eligible to use Unity Personal may not develop and publish Licensee Content for the iOS and Android platforms without purchasing the applicable Unity Pro Add-On Product license. Unity may monitor your compliance with and enforce these restrictions and requirements including but not limited to monitoring the number of downloads of your Licensee Content and any available revenue estimate data.
86
+</code></pre>
87
+<p>This one is not really clear, and I am not really sure of what it really implies. However, according to <a href="http://unity3d.com/legal/eula">http://unity3d.com/legal/eula</a> and <a href="https://unity3d.com/legal/privacy-policy">https://unity3d.com/legal/privacy-policy</a>, it seems to imply that statistics are sent and that you cannot avoid it, even in the pro version.</p>
88
+<pre><code>We also include certain device data collection in the runtime of the Software which is incorporated into the applications you create with the software. You should be sure that your privacy policy explains to your players the variety of technical information that is collected and shared with third parties like Unity.
89
+</code></pre>
90
+<p>and</p>
91
+<pre><code>Q: I play a game built with Unity software, what should I know?
92
+
93
+A: Unity has probably collected some or all of the following information about your device: Unique device identifier generated from the device MAC/IMEI/MEID (which we immediately convert into a different number using a one way hash); IP address; Device manufacturer and model; the operating system and version running on your system or device; browser type; language; the make of the CPU, and number of CPUs present; the graphics card type and vendor name; graphics card driver name and version (example: "nv4disp.dll 6.10.93.71"); which graphics API is in use (example: "OpenGL 2.1" or "Direct3D 9.0c"); amount of system and video RAM present; current screen resolution; version of the Unity Player; version of the Unity Editor used to create the content; a number describing whether the player is running on Mac, Windows or other platforms; and a checksum of all the data that gets sent to verify that it did transmit correctly; application or bundle identification ("app id") of the game installed. Some Unity developers use Unity’s analytics and ad services which collect additional information. See FAQs on Unity Analytics and Unity Ads below.
94
+
95
+
96
+Q: That seems like a lot of data, why so much?
97
+
98
+A: We try to limit the collection of this information from any one player or device; however, certain operating systems do not permit us to note that the info has already been collected. This means that the data may be sent to Unity each time you start the game. We use the information to make decisions about which platforms, operating systems and versions of them should be supported by our game development software. We aggregate this data and make it available to developers at stats.unity3d.com. This data helps us improve our Services and helps developers improve their apps.
99
+
100
+
101
+8. Your choices about Unity’s collection and use of your information
102
+
103
+    You always have the option to refrain from using the Service or to discontinue using the Service if you do not want information collected about you.
104
+</code></pre>
105
+<p>They also explictly says in the FAQ that there is no opt-out, and the anonymous stats are indeed browsable at <a href="http://stats.unity3d.com/mobile/">http://stats.unity3d.com/mobile/</a>. In conclusion, contrary to Unreal Engine, I do not think you can easily prevent the engine from sending anonymous statistics, which is a pity in my opinion. Moreover, there are a number of threads talking about extra permissions required by Unity (such as network access to send the statistics) and there seems to be no way to not require those permissions and to still conform to the EULA: <a href="http://answers.unity3d.com/questions/663197/how-to-prevent-unity-from-adding-permissions-to-an.html">http://answers.unity3d.com/questions/663197/how-to-prevent-unity-from-adding-permissions-to-an.html</a> and <a href="http://forum.unity3d.com/threads/extra-permission-needed-in-android.295556">http://forum.unity3d.com/threads/extra-permission-needed-in-android.295556</a>. </p>
106
+		<footer><p class="date">Le 27/03/2015 à 22:00</p>
107
+		<p class="tags">Tags : <a href="//phyks.me/tags/Mobile.html">Mobile</a>, <a href="//phyks.me/tags/Development.html">Development</a>, <a href="//phyks.me/tags/Game Engine.html">Game Engine</a></p></footer>
108
+	</div>
109
+</article>
110
+            </div>
111
+            <footer id="rss">
112
+                <p><a href="//phyks.me/rss.xml"><img src="//phyks.me/img/rss.png" alt="RSS"/></a></p>
113
+            </footer>
114
+        </div>
115
+    </body>
116
+</html>

+ 66
- 2
blog/2015/03/index.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/2015/01/moving_known.html">Passage à Known</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/03/cross_platform_app_development.html">Quick comparisons of solutions for 3D cross-platform (mobile) development</a></li><li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>
@@ -45,6 +45,70 @@
45 45
                 <div id="articles">
46 46
 <article>
47 47
 	<aside>
48
+		<p class="day">27</p>
49
+		<p class="month">Mars</p>
50
+	</aside>
51
+	<div class="article">
52
+		<header><h1 class="article_title"><a href="//phyks.me/2015/03/cross_platform_app_development.html">Quick comparisons of solutions for 3D cross-platform (mobile) development</a></h1></header>
53
+		<!-- 
54
+    @author=Phyks
55
+    @date=27032015-2200
56
+    @title=Quick comparisons of solutions for 3D cross-platform (mobile) development
57
+    @tags=Mobile, Development, Game Engine
58
+-->
59
+
60
+<p>I spent some time lately comparing available development toolkits for 3D games&nbsp;/ apps on mobile platforms (mostly for hobby&nbsp;/ indy apps). I do not want to have to adapt to much my base code depending on the target platform, and was then looking at a toolkit to write most of the code once, and be able to build the app for various platforms on the market. My use case is: 
61
+<em> sufficient 3D engine (not necessarily a high end thing, just the basics to be able to write 3D apps decently. I consider <a href="http://threejs.org/">Three.js</a> as sufficient for my needs for instance).
62
+</em> I am working on Linux, so the ability to dev on Linux would be a real plus.
63
+<em> of course, it should be as less expensive as possible&nbsp;:)
64
+</em> and finally, I am paying much attention at the EULA and licenses, as I do not want to force my users to send “anonymous” statistics, I do not want my app to need extra (and useless) permissions and so on.</p>
65
+<p><em>Note</em>: I did <em>not</em> test these toolkits deeply, and am just reporting here what I found while playing a bit with them and comparing the features, licenses and requirements. I only included</p>
66
+<h2><a href="https://cordova.apache.org/">Cordova</a></h2>
67
+<p>First toolkit I had a look at was Cordova. It allows you to write pure web apps (using standard HTML&nbsp;/ CSS&nbsp;/ JS and providing some extra APIs to extend the available APIs, for bluetooth for instance) and to package them into native apps distributed through the market. What it does is basically add a wrapper around your web app to render it outside a browser, using the offered web abilities provided by webviews on iOs and on Android. Writing a web app is really super easy, and then having a first working prototype using Cordova is super fast. Cordova runs on Linux without any problems.</p>
68
+<p>It works pretty well for 2D graphics and basic applications (but needs some extra permissions as it uses a web view, even if it is not communicating over internet). But when it comes to 3D graphics, using WebGL, you will be in troubles. Indeed, the webview in Android 4.x is using an old version of Chrome, even if you install the latest Chrome on your mobile. Then, you will not be able to use WebGL as it is simply not supported, unless you use some hack to actually use a more recent Chrome version, using <a href="https://crosswalk-project.org/">Crosswalk</a> for instance. On iOS, this is even worse as WebViews prior to iOS8 do not support WebGL (and as far as I know, there is no alternative which will be both stable, reliable and will go through the reviewing process of the appstore). This mean that you will not be able to target iPhones prior to (and including) iPhone 4, and iPad 1, which in my opinion is a real problem.</p>
69
+<h2><a href="https://www.unrealengine.com/">Unreal Engine</a></h2>
70
+<p>Second option is to use the Unreal Engine 4. It is a complete 3D game engine, including many tools to build 3D apps that you can deploy on many platforms (both desktop, web and mobile). You can code in C++ with it, and script using many visual tools. It includes dedicated APIs for advanced features such as Virtual Reality (VR) and may sound overkill.</p>
71
+<p>You can dev using Windows and Mac (officially supported), but not Linux (at least, not officially). However, it seems that the dev editor can be installed on Linux at the cost of a bit of hacking, and this should be even easier to install in the near future as there seems to be a Linux community.</p>
72
+<p>Unreal Engine charges you with 5% royalties passed the first 3k$.</p>
73
+<p>Here are some relevant EULA fragments:</p>
74
+<pre><code> 12. Hardware and Usage Data
75
+
76
+You acknowledge that, as a default setting, the Engine Code will collect and send to Epic anonymous hardware and usage data from end users of Products. This functionality is used by Epic to improve the  Engine Code. You may modify the Engine Code under the License to turn off that functionality in your Product, or you may include in your Product the capability for your end users to turn off that functionality in the Product.
77
+</code></pre>
78
+<p>and</p>
79
+<pre><code>You agree to keep accurate books and records related to your development, manufacture, Distribution, and sale of Products and related revenue. Epic may conduct reasonable audits of those books and records. Audits will be conducted during business hours on reasonable prior notice to you. Epic will bear the costs of audits unless the results show a shortfall in payments in excess of 5% during the period audited, in which case you will be responsible for the cost of the audit.
80
+</code></pre>
81
+<p>The second one is a standard one, as you have to pay royalties depending on your revenues. But the first one is really concerning, as by default Unreal Engine will track your users and send anonymous statistics (thus requiring extra and unneeded permissions and raising privacy concerns). However, once you are aware of it, you can freely modify your app to prevent this, according to the EULA, so this is not a big deal in the end.</p>
82
+<h2><a href="http://unity3d.com/">Unity</a></h2>
83
+<p>Latest solution I found (used by <a href="http://www.monumentvalleygame.com/">Monument Valley</a> for instance) is the Unity game engine. The personal license is sufficient in most of the cases, and is free to use up to 100k$ gross revenue. The dev tools are available on Windows and Mac, but there is no Linux version (and no hacky way to get it in Linux).</p>
84
+<p>Here are some relevant fragments from EULA as well:</p>
85
+<pre><code>(c) users will be required to complete a user survey to activate the Software. Unity Pro users who are not eligible to use Unity Personal may not develop and publish Licensee Content for the iOS and Android platforms without purchasing the applicable Unity Pro Add-On Product license. Unity may monitor your compliance with and enforce these restrictions and requirements including but not limited to monitoring the number of downloads of your Licensee Content and any available revenue estimate data.
86
+</code></pre>
87
+<p>This one is not really clear, and I am not really sure of what it really implies. However, according to <a href="http://unity3d.com/legal/eula">http://unity3d.com/legal/eula</a> and <a href="https://unity3d.com/legal/privacy-policy">https://unity3d.com/legal/privacy-policy</a>, it seems to imply that statistics are sent and that you cannot avoid it, even in the pro version.</p>
88
+<pre><code>We also include certain device data collection in the runtime of the Software which is incorporated into the applications you create with the software. You should be sure that your privacy policy explains to your players the variety of technical information that is collected and shared with third parties like Unity.
89
+</code></pre>
90
+<p>and</p>
91
+<pre><code>Q: I play a game built with Unity software, what should I know?
92
+
93
+A: Unity has probably collected some or all of the following information about your device: Unique device identifier generated from the device MAC/IMEI/MEID (which we immediately convert into a different number using a one way hash); IP address; Device manufacturer and model; the operating system and version running on your system or device; browser type; language; the make of the CPU, and number of CPUs present; the graphics card type and vendor name; graphics card driver name and version (example: "nv4disp.dll 6.10.93.71"); which graphics API is in use (example: "OpenGL 2.1" or "Direct3D 9.0c"); amount of system and video RAM present; current screen resolution; version of the Unity Player; version of the Unity Editor used to create the content; a number describing whether the player is running on Mac, Windows or other platforms; and a checksum of all the data that gets sent to verify that it did transmit correctly; application or bundle identification ("app id") of the game installed. Some Unity developers use Unity’s analytics and ad services which collect additional information. See FAQs on Unity Analytics and Unity Ads below.
94
+
95
+
96
+Q: That seems like a lot of data, why so much?
97
+
98
+A: We try to limit the collection of this information from any one player or device; however, certain operating systems do not permit us to note that the info has already been collected. This means that the data may be sent to Unity each time you start the game. We use the information to make decisions about which platforms, operating systems and versions of them should be supported by our game development software. We aggregate this data and make it available to developers at stats.unity3d.com. This data helps us improve our Services and helps developers improve their apps.
99
+
100
+
101
+8. Your choices about Unity’s collection and use of your information
102
+
103
+    You always have the option to refrain from using the Service or to discontinue using the Service if you do not want information collected about you.
104
+</code></pre>
105
+<p>They also explictly says in the FAQ that there is no opt-out, and the anonymous stats are indeed browsable at <a href="http://stats.unity3d.com/mobile/">http://stats.unity3d.com/mobile/</a>. In conclusion, contrary to Unreal Engine, I do not think you can easily prevent the engine from sending anonymous statistics, which is a pity in my opinion. Moreover, there are a number of threads talking about extra permissions required by Unity (such as network access to send the statistics) and there seems to be no way to not require those permissions and to still conform to the EULA: <a href="http://answers.unity3d.com/questions/663197/how-to-prevent-unity-from-adding-permissions-to-an.html">http://answers.unity3d.com/questions/663197/how-to-prevent-unity-from-adding-permissions-to-an.html</a> and <a href="http://forum.unity3d.com/threads/extra-permission-needed-in-android.295556">http://forum.unity3d.com/threads/extra-permission-needed-in-android.295556</a>. </p>
106
+		<footer><p class="date">Le 27/03/2015 à 22:00</p>
107
+		<p class="tags">Tags : <a href="//phyks.me/tags/Mobile.html">Mobile</a>, <a href="//phyks.me/tags/Development.html">Development</a>, <a href="//phyks.me/tags/Game Engine.html">Game Engine</a></p></footer>
108
+	</div>
109
+</article>
110
+<article>
111
+	<aside>
48 112
 		<p class="day">26</p>
49 113
 		<p class="month">Mars</p>
50 114
 	</aside>

+ 66
- 2
blog/2015/index.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/2015/01/moving_known.html">Passage à Known</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/03/cross_platform_app_development.html">Quick comparisons of solutions for 3D cross-platform (mobile) development</a></li><li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>
@@ -45,6 +45,70 @@
45 45
                 <div id="articles">
46 46
 <article>
47 47
 	<aside>
48
+		<p class="day">27</p>
49
+		<p class="month">Mars</p>
50
+	</aside>
51
+	<div class="article">
52
+		<header><h1 class="article_title"><a href="//phyks.me/2015/03/cross_platform_app_development.html">Quick comparisons of solutions for 3D cross-platform (mobile) development</a></h1></header>
53
+		<!-- 
54
+    @author=Phyks
55
+    @date=27032015-2200
56
+    @title=Quick comparisons of solutions for 3D cross-platform (mobile) development
57
+    @tags=Mobile, Development, Game Engine
58
+-->
59
+
60
+<p>I spent some time lately comparing available development toolkits for 3D games&nbsp;/ apps on mobile platforms (mostly for hobby&nbsp;/ indy apps). I do not want to have to adapt to much my base code depending on the target platform, and was then looking at a toolkit to write most of the code once, and be able to build the app for various platforms on the market. My use case is: 
61
+<em> sufficient 3D engine (not necessarily a high end thing, just the basics to be able to write 3D apps decently. I consider <a href="http://threejs.org/">Three.js</a> as sufficient for my needs for instance).
62
+</em> I am working on Linux, so the ability to dev on Linux would be a real plus.
63
+<em> of course, it should be as less expensive as possible&nbsp;:)
64
+</em> and finally, I am paying much attention at the EULA and licenses, as I do not want to force my users to send “anonymous” statistics, I do not want my app to need extra (and useless) permissions and so on.</p>
65
+<p><em>Note</em>: I did <em>not</em> test these toolkits deeply, and am just reporting here what I found while playing a bit with them and comparing the features, licenses and requirements. I only included</p>
66
+<h2><a href="https://cordova.apache.org/">Cordova</a></h2>
67
+<p>First toolkit I had a look at was Cordova. It allows you to write pure web apps (using standard HTML&nbsp;/ CSS&nbsp;/ JS and providing some extra APIs to extend the available APIs, for bluetooth for instance) and to package them into native apps distributed through the market. What it does is basically add a wrapper around your web app to render it outside a browser, using the offered web abilities provided by webviews on iOs and on Android. Writing a web app is really super easy, and then having a first working prototype using Cordova is super fast. Cordova runs on Linux without any problems.</p>
68
+<p>It works pretty well for 2D graphics and basic applications (but needs some extra permissions as it uses a web view, even if it is not communicating over internet). But when it comes to 3D graphics, using WebGL, you will be in troubles. Indeed, the webview in Android 4.x is using an old version of Chrome, even if you install the latest Chrome on your mobile. Then, you will not be able to use WebGL as it is simply not supported, unless you use some hack to actually use a more recent Chrome version, using <a href="https://crosswalk-project.org/">Crosswalk</a> for instance. On iOS, this is even worse as WebViews prior to iOS8 do not support WebGL (and as far as I know, there is no alternative which will be both stable, reliable and will go through the reviewing process of the appstore). This mean that you will not be able to target iPhones prior to (and including) iPhone 4, and iPad 1, which in my opinion is a real problem.</p>
69
+<h2><a href="https://www.unrealengine.com/">Unreal Engine</a></h2>
70
+<p>Second option is to use the Unreal Engine 4. It is a complete 3D game engine, including many tools to build 3D apps that you can deploy on many platforms (both desktop, web and mobile). You can code in C++ with it, and script using many visual tools. It includes dedicated APIs for advanced features such as Virtual Reality (VR) and may sound overkill.</p>
71
+<p>You can dev using Windows and Mac (officially supported), but not Linux (at least, not officially). However, it seems that the dev editor can be installed on Linux at the cost of a bit of hacking, and this should be even easier to install in the near future as there seems to be a Linux community.</p>
72
+<p>Unreal Engine charges you with 5% royalties passed the first 3k$.</p>
73
+<p>Here are some relevant EULA fragments:</p>
74
+<pre><code> 12. Hardware and Usage Data
75
+
76
+You acknowledge that, as a default setting, the Engine Code will collect and send to Epic anonymous hardware and usage data from end users of Products. This functionality is used by Epic to improve the  Engine Code. You may modify the Engine Code under the License to turn off that functionality in your Product, or you may include in your Product the capability for your end users to turn off that functionality in the Product.
77
+</code></pre>
78
+<p>and</p>
79
+<pre><code>You agree to keep accurate books and records related to your development, manufacture, Distribution, and sale of Products and related revenue. Epic may conduct reasonable audits of those books and records. Audits will be conducted during business hours on reasonable prior notice to you. Epic will bear the costs of audits unless the results show a shortfall in payments in excess of 5% during the period audited, in which case you will be responsible for the cost of the audit.
80
+</code></pre>
81
+<p>The second one is a standard one, as you have to pay royalties depending on your revenues. But the first one is really concerning, as by default Unreal Engine will track your users and send anonymous statistics (thus requiring extra and unneeded permissions and raising privacy concerns). However, once you are aware of it, you can freely modify your app to prevent this, according to the EULA, so this is not a big deal in the end.</p>
82
+<h2><a href="http://unity3d.com/">Unity</a></h2>
83
+<p>Latest solution I found (used by <a href="http://www.monumentvalleygame.com/">Monument Valley</a> for instance) is the Unity game engine. The personal license is sufficient in most of the cases, and is free to use up to 100k$ gross revenue. The dev tools are available on Windows and Mac, but there is no Linux version (and no hacky way to get it in Linux).</p>
84
+<p>Here are some relevant fragments from EULA as well:</p>
85
+<pre><code>(c) users will be required to complete a user survey to activate the Software. Unity Pro users who are not eligible to use Unity Personal may not develop and publish Licensee Content for the iOS and Android platforms without purchasing the applicable Unity Pro Add-On Product license. Unity may monitor your compliance with and enforce these restrictions and requirements including but not limited to monitoring the number of downloads of your Licensee Content and any available revenue estimate data.
86
+</code></pre>
87
+<p>This one is not really clear, and I am not really sure of what it really implies. However, according to <a href="http://unity3d.com/legal/eula">http://unity3d.com/legal/eula</a> and <a href="https://unity3d.com/legal/privacy-policy">https://unity3d.com/legal/privacy-policy</a>, it seems to imply that statistics are sent and that you cannot avoid it, even in the pro version.</p>
88
+<pre><code>We also include certain device data collection in the runtime of the Software which is incorporated into the applications you create with the software. You should be sure that your privacy policy explains to your players the variety of technical information that is collected and shared with third parties like Unity.
89
+</code></pre>
90
+<p>and</p>
91
+<pre><code>Q: I play a game built with Unity software, what should I know?
92
+
93
+A: Unity has probably collected some or all of the following information about your device: Unique device identifier generated from the device MAC/IMEI/MEID (which we immediately convert into a different number using a one way hash); IP address; Device manufacturer and model; the operating system and version running on your system or device; browser type; language; the make of the CPU, and number of CPUs present; the graphics card type and vendor name; graphics card driver name and version (example: "nv4disp.dll 6.10.93.71"); which graphics API is in use (example: "OpenGL 2.1" or "Direct3D 9.0c"); amount of system and video RAM present; current screen resolution; version of the Unity Player; version of the Unity Editor used to create the content; a number describing whether the player is running on Mac, Windows or other platforms; and a checksum of all the data that gets sent to verify that it did transmit correctly; application or bundle identification ("app id") of the game installed. Some Unity developers use Unity’s analytics and ad services which collect additional information. See FAQs on Unity Analytics and Unity Ads below.
94
+
95
+
96
+Q: That seems like a lot of data, why so much?
97
+
98
+A: We try to limit the collection of this information from any one player or device; however, certain operating systems do not permit us to note that the info has already been collected. This means that the data may be sent to Unity each time you start the game. We use the information to make decisions about which platforms, operating systems and versions of them should be supported by our game development software. We aggregate this data and make it available to developers at stats.unity3d.com. This data helps us improve our Services and helps developers improve their apps.
99
+
100
+
101
+8. Your choices about Unity’s collection and use of your information
102
+
103
+    You always have the option to refrain from using the Service or to discontinue using the Service if you do not want information collected about you.
104
+</code></pre>
105
+<p>They also explictly says in the FAQ that there is no opt-out, and the anonymous stats are indeed browsable at <a href="http://stats.unity3d.com/mobile/">http://stats.unity3d.com/mobile/</a>. In conclusion, contrary to Unreal Engine, I do not think you can easily prevent the engine from sending anonymous statistics, which is a pity in my opinion. Moreover, there are a number of threads talking about extra permissions required by Unity (such as network access to send the statistics) and there seems to be no way to not require those permissions and to still conform to the EULA: <a href="http://answers.unity3d.com/questions/663197/how-to-prevent-unity-from-adding-permissions-to-an.html">http://answers.unity3d.com/questions/663197/how-to-prevent-unity-from-adding-permissions-to-an.html</a> and <a href="http://forum.unity3d.com/threads/extra-permission-needed-in-android.295556">http://forum.unity3d.com/threads/extra-permission-needed-in-android.295556</a>. </p>
106
+		<footer><p class="date">Le 27/03/2015 à 22:00</p>
107
+		<p class="tags">Tags : <a href="//phyks.me/tags/Mobile.html">Mobile</a>, <a href="//phyks.me/tags/Development.html">Development</a>, <a href="//phyks.me/tags/Game Engine.html">Game Engine</a></p></footer>
108
+	</div>
109
+</article>
110
+<article>
111
+	<aside>
48 112
 		<p class="day">26</p>
49 113
 		<p class="month">Mars</p>
50 114
 	</aside>

+ 2
- 2
blog/archives.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/2015/01/moving_known.html">Passage à Known</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/03/cross_platform_app_development.html">Quick comparisons of solutions for 3D cross-platform (mobile) development</a></li><li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 66
- 91
blog/index.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/2015/01/moving_known.html">Passage à Known</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/03/cross_platform_app_development.html">Quick comparisons of solutions for 3D cross-platform (mobile) development</a></li><li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>
@@ -45,6 +45,70 @@
45 45
                 <div id="articles">
46 46
 <article>
47 47
 	<aside>
48
+		<p class="day">27</p>
49
+		<p class="month">Mars</p>
50
+	</aside>
51
+	<div class="article">
52
+		<header><h1 class="article_title"><a href="//phyks.me/2015/03/cross_platform_app_development.html">Quick comparisons of solutions for 3D cross-platform (mobile) development</a></h1></header>
53
+		<!-- 
54
+    @author=Phyks
55
+    @date=27032015-2200
56
+    @title=Quick comparisons of solutions for 3D cross-platform (mobile) development
57
+    @tags=Mobile, Development, Game Engine
58
+-->
59
+
60
+<p>I spent some time lately comparing available development toolkits for 3D games&nbsp;/ apps on mobile platforms (mostly for hobby&nbsp;/ indy apps). I do not want to have to adapt to much my base code depending on the target platform, and was then looking at a toolkit to write most of the code once, and be able to build the app for various platforms on the market. My use case is: 
61
+<em> sufficient 3D engine (not necessarily a high end thing, just the basics to be able to write 3D apps decently. I consider <a href="http://threejs.org/">Three.js</a> as sufficient for my needs for instance).
62
+</em> I am working on Linux, so the ability to dev on Linux would be a real plus.
63
+<em> of course, it should be as less expensive as possible&nbsp;:)
64
+</em> and finally, I am paying much attention at the EULA and licenses, as I do not want to force my users to send “anonymous” statistics, I do not want my app to need extra (and useless) permissions and so on.</p>
65
+<p><em>Note</em>: I did <em>not</em> test these toolkits deeply, and am just reporting here what I found while playing a bit with them and comparing the features, licenses and requirements. I only included</p>
66
+<h2><a href="https://cordova.apache.org/">Cordova</a></h2>
67
+<p>First toolkit I had a look at was Cordova. It allows you to write pure web apps (using standard HTML&nbsp;/ CSS&nbsp;/ JS and providing some extra APIs to extend the available APIs, for bluetooth for instance) and to package them into native apps distributed through the market. What it does is basically add a wrapper around your web app to render it outside a browser, using the offered web abilities provided by webviews on iOs and on Android. Writing a web app is really super easy, and then having a first working prototype using Cordova is super fast. Cordova runs on Linux without any problems.</p>
68
+<p>It works pretty well for 2D graphics and basic applications (but needs some extra permissions as it uses a web view, even if it is not communicating over internet). But when it comes to 3D graphics, using WebGL, you will be in troubles. Indeed, the webview in Android 4.x is using an old version of Chrome, even if you install the latest Chrome on your mobile. Then, you will not be able to use WebGL as it is simply not supported, unless you use some hack to actually use a more recent Chrome version, using <a href="https://crosswalk-project.org/">Crosswalk</a> for instance. On iOS, this is even worse as WebViews prior to iOS8 do not support WebGL (and as far as I know, there is no alternative which will be both stable, reliable and will go through the reviewing process of the appstore). This mean that you will not be able to target iPhones prior to (and including) iPhone 4, and iPad 1, which in my opinion is a real problem.</p>
69
+<h2><a href="https://www.unrealengine.com/">Unreal Engine</a></h2>
70
+<p>Second option is to use the Unreal Engine 4. It is a complete 3D game engine, including many tools to build 3D apps that you can deploy on many platforms (both desktop, web and mobile). You can code in C++ with it, and script using many visual tools. It includes dedicated APIs for advanced features such as Virtual Reality (VR) and may sound overkill.</p>
71
+<p>You can dev using Windows and Mac (officially supported), but not Linux (at least, not officially). However, it seems that the dev editor can be installed on Linux at the cost of a bit of hacking, and this should be even easier to install in the near future as there seems to be a Linux community.</p>
72
+<p>Unreal Engine charges you with 5% royalties passed the first 3k$.</p>
73
+<p>Here are some relevant EULA fragments:</p>
74
+<pre><code> 12. Hardware and Usage Data
75
+
76
+You acknowledge that, as a default setting, the Engine Code will collect and send to Epic anonymous hardware and usage data from end users of Products. This functionality is used by Epic to improve the  Engine Code. You may modify the Engine Code under the License to turn off that functionality in your Product, or you may include in your Product the capability for your end users to turn off that functionality in the Product.
77
+</code></pre>
78
+<p>and</p>
79
+<pre><code>You agree to keep accurate books and records related to your development, manufacture, Distribution, and sale of Products and related revenue. Epic may conduct reasonable audits of those books and records. Audits will be conducted during business hours on reasonable prior notice to you. Epic will bear the costs of audits unless the results show a shortfall in payments in excess of 5% during the period audited, in which case you will be responsible for the cost of the audit.
80
+</code></pre>
81
+<p>The second one is a standard one, as you have to pay royalties depending on your revenues. But the first one is really concerning, as by default Unreal Engine will track your users and send anonymous statistics (thus requiring extra and unneeded permissions and raising privacy concerns). However, once you are aware of it, you can freely modify your app to prevent this, according to the EULA, so this is not a big deal in the end.</p>
82
+<h2><a href="http://unity3d.com/">Unity</a></h2>
83
+<p>Latest solution I found (used by <a href="http://www.monumentvalleygame.com/">Monument Valley</a> for instance) is the Unity game engine. The personal license is sufficient in most of the cases, and is free to use up to 100k$ gross revenue. The dev tools are available on Windows and Mac, but there is no Linux version (and no hacky way to get it in Linux).</p>
84
+<p>Here are some relevant fragments from EULA as well:</p>
85
+<pre><code>(c) users will be required to complete a user survey to activate the Software. Unity Pro users who are not eligible to use Unity Personal may not develop and publish Licensee Content for the iOS and Android platforms without purchasing the applicable Unity Pro Add-On Product license. Unity may monitor your compliance with and enforce these restrictions and requirements including but not limited to monitoring the number of downloads of your Licensee Content and any available revenue estimate data.
86
+</code></pre>
87
+<p>This one is not really clear, and I am not really sure of what it really implies. However, according to <a href="http://unity3d.com/legal/eula">http://unity3d.com/legal/eula</a> and <a href="https://unity3d.com/legal/privacy-policy">https://unity3d.com/legal/privacy-policy</a>, it seems to imply that statistics are sent and that you cannot avoid it, even in the pro version.</p>
88
+<pre><code>We also include certain device data collection in the runtime of the Software which is incorporated into the applications you create with the software. You should be sure that your privacy policy explains to your players the variety of technical information that is collected and shared with third parties like Unity.
89
+</code></pre>
90
+<p>and</p>
91
+<pre><code>Q: I play a game built with Unity software, what should I know?
92
+
93
+A: Unity has probably collected some or all of the following information about your device: Unique device identifier generated from the device MAC/IMEI/MEID (which we immediately convert into a different number using a one way hash); IP address; Device manufacturer and model; the operating system and version running on your system or device; browser type; language; the make of the CPU, and number of CPUs present; the graphics card type and vendor name; graphics card driver name and version (example: "nv4disp.dll 6.10.93.71"); which graphics API is in use (example: "OpenGL 2.1" or "Direct3D 9.0c"); amount of system and video RAM present; current screen resolution; version of the Unity Player; version of the Unity Editor used to create the content; a number describing whether the player is running on Mac, Windows or other platforms; and a checksum of all the data that gets sent to verify that it did transmit correctly; application or bundle identification ("app id") of the game installed. Some Unity developers use Unity’s analytics and ad services which collect additional information. See FAQs on Unity Analytics and Unity Ads below.
94
+
95
+
96
+Q: That seems like a lot of data, why so much?
97
+
98
+A: We try to limit the collection of this information from any one player or device; however, certain operating systems do not permit us to note that the info has already been collected. This means that the data may be sent to Unity each time you start the game. We use the information to make decisions about which platforms, operating systems and versions of them should be supported by our game development software. We aggregate this data and make it available to developers at stats.unity3d.com. This data helps us improve our Services and helps developers improve their apps.
99
+
100
+
101
+8. Your choices about Unity’s collection and use of your information
102
+
103
+    You always have the option to refrain from using the Service or to discontinue using the Service if you do not want information collected about you.
104
+</code></pre>
105
+<p>They also explictly says in the FAQ that there is no opt-out, and the anonymous stats are indeed browsable at <a href="http://stats.unity3d.com/mobile/">http://stats.unity3d.com/mobile/</a>. In conclusion, contrary to Unreal Engine, I do not think you can easily prevent the engine from sending anonymous statistics, which is a pity in my opinion. Moreover, there are a number of threads talking about extra permissions required by Unity (such as network access to send the statistics) and there seems to be no way to not require those permissions and to still conform to the EULA: <a href="http://answers.unity3d.com/questions/663197/how-to-prevent-unity-from-adding-permissions-to-an.html">http://answers.unity3d.com/questions/663197/how-to-prevent-unity-from-adding-permissions-to-an.html</a> and <a href="http://forum.unity3d.com/threads/extra-permission-needed-in-android.295556">http://forum.unity3d.com/threads/extra-permission-needed-in-android.295556</a>. </p>
106
+		<footer><p class="date">Le 27/03/2015 à 22:00</p>
107
+		<p class="tags">Tags : <a href="//phyks.me/tags/Mobile.html">Mobile</a>, <a href="//phyks.me/tags/Development.html">Development</a>, <a href="//phyks.me/tags/Game Engine.html">Game Engine</a></p></footer>
108
+	</div>
109
+</article>
110
+<article>
111
+	<aside>
48 112
 		<p class="day">26</p>
49 113
 		<p class="month">Mars</p>
50 114
 	</aside>
@@ -945,95 +1009,6 @@ iptables -A POSTROUTING -t nat -j MASQUERADE
945 1009
 		<p class="tags">Tags : <a href="//phyks.me/tags/Dev.html">Dev</a>, <a href="//phyks.me/tags/Phyks.html">Phyks</a></p></footer>
946 1010
 	</div>
947 1011
 </article>
948
-<article>
949
-	<aside>
950
-		<p class="day">29</p>
951
-		<p class="month">Juillet</p>
952
-	</aside>
953
-	<div class="article">
954
-		<header><h1 class="article_title"><a href="//phyks.me/2014/07/diaspora_pas_pour_tout_monde.html">Diaspora*, c'est quand même pas pour tout le monde</a></h1></header>
955
-		<!--
956
-	@author=Phyks
957
-	@date=29072014-2251
958
-	@title=Diaspora*, c'est quand même pas pour tout le monde
959
-	@tags=Libre
960
--->
961
-<p>Ça faisait quelques mois que je disais que j'allais m'héberger une instance de <a href="ihttps://diasporafoundation.org/">Diaspora*</a> (un <em>pod</em> comme ça s'appelle). Finalement, sous la pression de <a href="http://tomcanac.com/">tmos</a> j'ai cédé et j'ai fini par m'occuper de ça ce weekend. Du coup, il est temps de faire un petit retour sur l'installation.</p>
962
-
963
-<p><em>Note&nbsp;:</em> Je ne m'attarderai pas sur l'historique et le but du projet (TLDR; un réseau social décentralisé et opensource), <a href="http://blog-libre.org/tag/diaspora">d'autres</a> l'ont déjà fait, ni sur l'utilisation, car je débarque et n'ai pas encore appréhendé la bête. C'est donc juste un retour sur l'installation, l'accessibilité de Diaspora* au plus grand nombre, et les premiers pas. De plus, je n'ai pas de commentaires sur ce blog statique, donc n'hésitez pas à <a href="http://phyks.me/contact.html">me contacter</a> pour en discuter.</p>
964
-
965
-<p>Il y a peu, <a href="http://maniatux.fr/index.php?article473/diaspora-c-est-pas-pour-moi">Maniatux</a> écrivait «&nbsp;Diaspora, c'est pas pour moi&nbsp;». J'y suis, j'ai réussi à l'installer, mais je serai bien tenté de dire «&nbsp;Diaspora*, c'est pas pour tout le monde&nbsp;» voire même «&nbsp;Diaspora*, si tu n'es pas geek barbu libriste, mieux vaut passer ton chemin&nbsp;» (pour l'instant, j'espère). Retour sur les principaux points.</p>
966
-
967
-<h2>S'auto-héberger</h2>
968
-
969
-<p>Forcément, on parle de réseau social décentralisé, libre et on soulève plusieurs problématiques de vie privée avec les grands réseaux sociaux actuels (Twitter, Facebook, …). Donc si on passe sur Diaspora*, ce n'est pas a priori pour aller sur un pod pré-existant, et retomber dans un silo.</p>
970
-
971
-<p>Attention, je ne dis pas que c'est le mal absolu que d'aller sur un pod hébergé par quelqu'un d'autre, loin de là. On a une certaine qualité de service garantie et les principaux pods français (<a href="http://diaspora-fr.org/">diaspora-fr.org</a>, <a href="https://framasphere.org">FramaSphère</a>, …) sont aux mains d'association auxquelles je fais infiniment plus confiance qu'aux gros du web. Mais tant qu'à être présent sur ce réseau, et si on en a la possibilité, autant s'héberger soi-même. Comme j'héberge déjà mon compte Jabber et plusieurs autres services que j'utilise, autant essayer de continuer dans la décentralisation et héberger son propre <em>pod</em>.</p>
972
-
973
-<p>La majeure partie des commentaires dans la suite sera donc liée à cet auto-hébergement. Si vous êtes sur un pod hébergé par quelqu'un d'autre, vous ne les rencontrerez sûrement jamais mais ils sont à mon avis très importants pour un projet qui promeut la décentralisation.</p>
974
-
975
-
976
-<h2>Ruby, mon ami…</h2>
977
-
978
-<p>Diaspora a fait le choix d'utiliser Ruby, et non PHP qui est un langage très standard, déjà largement utilisé par <a href="http://wordpress.org">Wordpress</a> et tous les autres grands CMS. La plupart des utilisateurs a l'habitude de ces scripts et sait les installer facilement&nbsp;: une base de données créée avec PHPMyAdmin, un copier/coller avec un FTP ou SCP et éventuellement un petit <em>vhost</em> et ça marche. Faire le choix d'un langage «&nbsp;exotique&nbsp;», c'est se priver d'office d'un nombre conséquent d'utilisateurs, qui ne pourront pas l'installer facilement (ne serait-ce que parce qu'ils n'ont qu'un hébergement web et pas un serveur dédié).</p>
979
-
980
-<p>Ce choix est très certainement techniquement justifié (PHP est décrié par beaucoup), mais le fait est que Ruby, c'est compliqué à utiliser pour un utilisateur moyen. Il faut installer la bonne version, les bonnes <em>gems</em>, avoir les bons droits etc. Heureusement, Diaspora* utilise RVM qui simplifie grandement l'installation… quand ça fonctionne (j'y reviens un peu plus bas). Enfin, RVM simplifie l'installation, mais la rend d'autant plus obscure&nbsp;: on enchaîne les commandes listées sur le wiki, sans vraiment savoir ce qu'elles font et on passe un temps important à les décrypter pour comprendre ce qu'il va se passer. Dans tous les cas, Node.JS et Python sont déjà largement utilisés (avec des problèmes similaires cependant), les utiliser aurait déjà pu faciliter l'accès et augmenter la documentation disponible.</p>
981
-
982
-<p><em>Note&nbsp;:</em> Diaspora* utilise aussi Node.JS, mais «&nbsp;caché&nbsp;» derrière du Ruby. On est donc surtout confronté aux problèmes avec Ruby.</p>
983
-
984
-<p>Enfin, toutes ces technologies (Node.JS / Python / Ruby / …) ne s'interfacent pas directement avec Apache. Là où pour servir un script PHP, il faut tout au plus un <em>vhost</em>, il faut ici charger tout un tas de modules spécifiques pour Apache et servir <em>via</em> <em>mod_proxy</em> l'instance de Diaspora*. Chance, le <em>vhost</em> disponible sur le wiki fonctionne directement, mais je ne doute pas que les nombreuses instructions avancées utilisées décourageront bon nombre d'utilisateurs de comprendre ce que fait réellement ce <em>vhost</em> (ce qui est fort dommage).</p>
985
-
986
-<p>C'est donc à mon avis un gros point faible du projet (et je rejoins donc Maniatux), que de reposer sur Ruby, qui est un langage quand même assez exotique, qui empêchera les possesseurs d'un hébergement web seul de l'installer chez eux. Qui plus est quand d'autres technos comme Node.JS et Python sont disponibles, et avec beaucoup plus d'utilisateurs pour aider sur les problèmes généraux et non spécifiques à Diaspora*.</p>
987
-
988
-
989
-<h2>Des technos (trop&nbsp;?) modernes</h2>
990
-
991
-<p>Diaspora* utilise Ruby, mais ce n'est pas la seule technologie moderne utilisée. On retrouve toutes les technos qui ont le vent en poupe : Node.JS, Boostrap, SASS, YAML, redis… Du coup, à chaque techno, une installation de paquets supplémentaires (redis par exemple), et un frein à la customisation (Bootstrap / SASS par exemple).</p>
992
-
993
-<p>Heureusement, les dépôts Debian sont bien fournis, et on peut désormais utiliser des paquets tout prêts pour redis et nodejs. Ça rajoute une étape à l'installation, et élimine définitivement les possesseurs de mutualisés, mais ça n'est pas la partie la plus compliquée.</p>
994
-
995
-<p>Les fichiers de configuration YAML sont très bien commentés et lisibles, c'est pratique. Par contre, l'utilisation de SASS oblige à connaître un minimum le fonctionnement de cet outil, et à compiler à chaque fois sa feuille de style. Je ne sais pas si les fonctions avancées de SASS simplifient grandement les feuilles de styles, mais la <em>bidouillabilité</em> en prend un coup =(.</p>
996
-
997
-
998
-<h2>Une documentation… minimale</h2>
999
-
1000
-<p>Sur la documentation, rien à redire. La <a href="https://wiki.diasporafoundation.org/Installation/Debian/Wheezy?db=mysql&mode=production">page de documentation</a> pour Debian Wheezy est complète.</p>
1001
-
1002
-<p>Par contre, la documentation est minimale. Comprenez bien qu'elle est complète donc contient toutes les commandes nécessaires pour s'en sortir et installer Diaspora*, mais ne contient rien de plus. Que faire après l'installation&nbsp;? Quelques vagues liens sont disponibles en fin de page, mais il faudra se lancer dans l'exploration de son instance (quelques infos sur la façon de fermer son instance aux inscriptions, quelques informations pour faire ses premiers pas auraient été super). Un problème en marge de l'installation, une configuration un peu exotique&nbsp;? Il faudra vous débrouiller par vous-même.</p>
1003
-
1004
-<p>Et se débrouiller par soi-même, c'est justement ça le problème. La doc sur RVM est assez minime, les chans IRC sont déserts (ou plus exactement il y a du monde, mais aucune activité visible)… (Merci au passage à <a href="https://github.com/Flaburgan">Flaburgan</a> qui a été un des seuls à répondre :)</p>
1005
-
1006
-<p>En particulier, j'ai eu des problèmes avec RVM. Je n'avais pas <span class="monospace">sudo</span> disponible sur mon serveur, et selon la documentation, je devais lancer <span class="monospace">rvm autolibs read-only</span>. Mais cette commande me retournait un magnifique <span class="monospace">rvm_debug: command not found</span>, quoi que je fasse et bien que tous les fichiers nécessaires aient été sourcés par bash (visiblement, il y avait un problème à ce niveau quand même). Du coup, je cherche cette erreur dans <del>Google</del> mon moteur de recherche favori, et je ne trouve qu'une <em>issue</em> vieille de 6 mois et corrigée. Je reteste plusieurs fois, en suivant scrupuleusement la <a href="https://rvm.io/development/">doc de RVM</a> (cette fois) et non celle de Diaspora* des fois qu'elle ne soit pas à jour. Rien à faire, toujours la même erreur. Je décide donc d'aller voir sur IRC, sur <span class="monospace">#diaspora</span> et <span class="monospace">#rvm</span>, aucune activité en 2 jours… Finalement, j'ai réussi à m'en sortir en bidouillant avec un <span class="monospace">export -f rvm_debug</span> et j'ai réussi à installer Diaspora*, mais je ne sais toujours pas ce qu'il se passait…</p>
1007
-
1008
-
1009
-<h2>Gourmand</h2>
1010
-
1011
-<p>Quand on lit les pré-requis dans le <a href="https://wiki.diasporafoundation.org/Installation/Debian/Wheezy?db=mysql&mode=production">wiki</a>, on trouve qu'il faut au minimum 512Mo de RAM (et 1Go de swap) et un CPU multi-cœur. Ces pré-requis sont à destination des gens souhaitant héberger un <em>pod</em> de taille moyenne. Étant le seul utilisateur de mon pod, Diaspora* consommera sûrement beaucoup moins de ressources, à voir. Sinon, ça veut dire que Diaspora* ne pourra pas tourner sur un Raspberry Pi (par exemple), ce qui peut être dommage quand on voit que Cyrille Borne <a href="http://blog-libre.org/post/2014/07/21/installer-owncloud-en-5-minutes-sur-un-raspberry-pi-et-autres">installe un petit serveur XMPP sur son Raspi</a> et qu'une instance de Diaspora aurait pu le rejoindre pour faire un Raspberry Pi social qui contrôle notre identité sur les réseaux.</p>
1012
-
1013
-
1014
-<h2>Premiers pas</h2>
1015
-<p>On retrouve les principaux éléments des réseaux sociaux traditionnels. L'interface m'a un peu rappelé (feu) <a href="http://status.net/">StatusNet</a> (ou plus exactement son successeur, <a href="http://pump.io/">pump.io</a>, la faute à Bootstrap je suppose). On arrive sur une vue des derniers posts très classique et on peut poster directement.</p>
1016
-
1017
-<p>Diaspora* met l'accent sur le contrôle de ses données, à travers les aspects (équivalents aux cercles de Google+ je pense). Du coup, chaque post peut être à destination d'un cercle différent, et ce comportement est un peu déroutant au début. En particulier, les posts sont privés par défaut, et il faut commencer à taper son message puis dérouler une liste déroulante pour modifier les aspects qui pourront voir ce post. À noter également qu'une fois un post écrit, son aspect ne peut être modifié.</p>
1018
-
1019
-
1020
-<h2>Petite déception dans les fonctions de base</h2>
1021
-<p>Diaspora* met l'accent sur le contrôle des données. Pourtant, je n'ai pas vu de moyen très simple d'exporter ses données (mais je ne doute pas que ça existe), mais surtout pour les importer. On ne peut donc pas migrer son instance sur un autre pod. C'est dommage, j'aurais bien testé sur un pod hébergé avant de passer chez moi =(.</p>
1022
-
1023
-<p><strong>EDIT&nbsp;</strong> Autre truc un peu énervant. Quand on cherche un utilisateur, le moindre espace en trop dans le champ de recherche empêche la recherche de s'exécuter correctement.</p>
1024
-
1025
-<h2>Quelques points supplémentaires</h2>
1026
-<ul>
1027
-    <li>J'ai essayé d'ajouter quelques contacts. Aucun problème avec ceux hébergés sur <a href="http://diaspora-fr.org/">diaspora-fr.org</a>, mais j'ai eu beaucoup plus de mal à ajouter un autre utilisateur qui s'auto-hébergeait. On n'a pas encore élucidé ce qu'il se passait, mais il semblerait que je me sois même fait bloqué par portsentry lorsque j'ai essayé de l'ajouter…</li>
1028
-    <li>Bien penser à cocher la case «&nbsp;permettre à tous de chercher votre profil&nbsp;» pour que les autres puissent vous ajouter.</li>
1029
-    <li><strong>EDIT&nbsp;:</strong> Je découvre petit à petit Diaspora* et pour l'instant, je regrette quand même un peu le manque de fédération. C'est décentralisé, mais c'est un gros amas de petits ilots centralisés (les <em>pods</em>). Par exemple, les contacts ne sont pas fédérés et ne s'affichent qu'au sein d'un même <em>pod</em>.</li>
1030
-    <li><strong>EDIT&nbsp;</strong> Les mentions sont bien pratiques, comme sur Twitter, mais ne sont pas utilisables dans des commentaires…</li>
1031
-</ul>
1032
-
1033
-		<footer><p class="date">Le 29/07/2014 à 22:51</p>
1034
-		<p class="tags">Tags : <a href="//phyks.me/tags/Libre.html">Libre</a></p></footer>
1035
-	</div>
1036
-</article>
1037 1012
 <p class="archives"><a href="//phyks.me/archives.html">Archives</a></p>            </div>
1038 1013
             <footer id="rss">
1039 1014
                 <p><a href="//phyks.me/rss.xml"><img src="//phyks.me/img/rss.png" alt="RSS"/></a></p>

+ 73
- 62
blog/rss.xml View File

@@ -7,7 +7,79 @@
7 7
 		<language>fr</language>
8 8
 		<copyright>CC BY</copyright>
9 9
 		<webMaster>webmaster@phyks.me (Phyks)</webMaster>
10
-		<lastBuildDate>Thu, 26 Mar 2015 15:06:01 -0000</lastBuildDate>
10
+		<lastBuildDate>Fri, 27 Mar 2015 19:59:45 -0000</lastBuildDate>
11
+		<item>
12
+			<title>Quick comparisons of solutions for 3D cross-platform (mobile) development</title>
13
+			<link>http://phyks.me/2015/03/cross_platform_app_development.html</link>
14
+			<guid isPermaLink="true">http://phyks.me/2015/03/cross_platform_app_development.html</guid>
15
+			<description>
16
+
17
+
18
+
19
+I spent some time lately comparing available development toolkits for 3D games / apps on mobile platforms (mostly for hobby / indy apps…</description>
20
+			<content:encoded><![CDATA[<div class="article">
21
+<header></header>
22
+<!-- 
23
+    @author=Phyks
24
+    @date=27032015-2200
25
+    @title=Quick comparisons of solutions for 3D cross-platform (mobile) development
26
+    @tags=Mobile, Development, Game Engine
27
+-->
28
+<p>I spent some time lately comparing available development toolkits for 3D games / apps on mobile platforms (mostly for hobby / indy apps). I do not want to have to adapt to much my base code depending on the target platform, and was then looking at a toolkit to write most of the code once, and be able to build the app for various platforms on the market. My use case is: 
29
+<em> sufficient 3D engine (not necessarily a high end thing, just the basics to be able to write 3D apps decently. I consider <a href="http://threejs.org/">Three.js</a> as sufficient for my needs for instance).
30
+</em> I am working on Linux, so the ability to dev on Linux would be a real plus.
31
+<em> of course, it should be as less expensive as possible :)
32
+</em> and finally, I am paying much attention at the EULA and licenses, as I do not want to force my users to send “anonymous” statistics, I do not want my app to need extra (and useless) permissions and so on.</p>
33
+<p><em>Note</em>: I did <em>not</em> test these toolkits deeply, and am just reporting here what I found while playing a bit with them and comparing the features, licenses and requirements. I only included</p>
34
+<h2><a href="https://cordova.apache.org/">Cordova</a></h2>
35
+<p>First toolkit I had a look at was Cordova. It allows you to write pure web apps (using standard HTML / CSS / JS and providing some extra APIs to extend the available APIs, for bluetooth for instance) and to package them into native apps distributed through the market. What it does is basically add a wrapper around your web app to render it outside a browser, using the offered web abilities provided by webviews on iOs and on Android. Writing a web app is really super easy, and then having a first working prototype using Cordova is super fast. Cordova runs on Linux without any problems.</p>
36
+<p>It works pretty well for 2D graphics and basic applications (but needs some extra permissions as it uses a web view, even if it is not communicating over internet). But when it comes to 3D graphics, using WebGL, you will be in troubles. Indeed, the webview in Android 4.x is using an old version of Chrome, even if you install the latest Chrome on your mobile. Then, you will not be able to use WebGL as it is simply not supported, unless you use some hack to actually use a more recent Chrome version, using <a href="https://crosswalk-project.org/">Crosswalk</a> for instance. On iOS, this is even worse as WebViews prior to iOS8 do not support WebGL (and as far as I know, there is no alternative which will be both stable, reliable and will go through the reviewing process of the appstore). This mean that you will not be able to target iPhones prior to (and including) iPhone 4, and iPad 1, which in my opinion is a real problem.</p>
37
+<h2><a href="https://www.unrealengine.com/">Unreal Engine</a></h2>
38
+<p>Second option is to use the Unreal Engine 4. It is a complete 3D game engine, including many tools to build 3D apps that you can deploy on many platforms (both desktop, web and mobile). You can code in C++ with it, and script using many visual tools. It includes dedicated APIs for advanced features such as Virtual Reality (VR) and may sound overkill.</p>
39
+<p>You can dev using Windows and Mac (officially supported), but not Linux (at least, not officially). However, it seems that the dev editor can be installed on Linux at the cost of a bit of hacking, and this should be even easier to install in the near future as there seems to be a Linux community.</p>
40
+<p>Unreal Engine charges you with 5% royalties passed the first 3k$.</p>
41
+<p>Here are some relevant EULA fragments:</p>
42
+<pre><code> 12. Hardware and Usage Data
43
+
44
+You acknowledge that, as a default setting, the Engine Code will collect and send to Epic anonymous hardware and usage data from end users of Products. This functionality is used by Epic to improve the  Engine Code. You may modify the Engine Code under the License to turn off that functionality in your Product, or you may include in your Product the capability for your end users to turn off that functionality in the Product.
45
+</code></pre>
46
+<p>and</p>
47
+<pre><code>You agree to keep accurate books and records related to your development, manufacture, Distribution, and sale of Products and related revenue. Epic may conduct reasonable audits of those books and records. Audits will be conducted during business hours on reasonable prior notice to you. Epic will bear the costs of audits unless the results show a shortfall in payments in excess of 5% during the period audited, in which case you will be responsible for the cost of the audit.
48
+</code></pre>
49
+<p>The second one is a standard one, as you have to pay royalties depending on your revenues. But the first one is really concerning, as by default Unreal Engine will track your users and send anonymous statistics (thus requiring extra and unneeded permissions and raising privacy concerns). However, once you are aware of it, you can freely modify your app to prevent this, according to the EULA, so this is not a big deal in the end.</p>
50
+<h2><a href="http://unity3d.com/">Unity</a></h2>
51
+<p>Latest solution I found (used by <a href="http://www.monumentvalleygame.com/">Monument Valley</a> for instance) is the Unity game engine. The personal license is sufficient in most of the cases, and is free to use up to 100k$ gross revenue. The dev tools are available on Windows and Mac, but there is no Linux version (and no hacky way to get it in Linux).</p>
52
+<p>Here are some relevant fragments from EULA as well:</p>
53
+<pre><code>(c) users will be required to complete a user survey to activate the Software. Unity Pro users who are not eligible to use Unity Personal may not develop and publish Licensee Content for the iOS and Android platforms without purchasing the applicable Unity Pro Add-On Product license. Unity may monitor your compliance with and enforce these restrictions and requirements including but not limited to monitoring the number of downloads of your Licensee Content and any available revenue estimate data.
54
+</code></pre>
55
+<p>This one is not really clear, and I am not really sure of what it really implies. However, according to <a href="http://unity3d.com/legal/eula">http://unity3d.com/legal/eula</a> and <a href="https://unity3d.com/legal/privacy-policy">https://unity3d.com/legal/privacy-policy</a>, it seems to imply that statistics are sent and that you cannot avoid it, even in the pro version.</p>
56
+<pre><code>We also include certain device data collection in the runtime of the Software which is incorporated into the applications you create with the software. You should be sure that your privacy policy explains to your players the variety of technical information that is collected and shared with third parties like Unity.
57
+</code></pre>
58
+<p>and</p>
59
+<pre><code>Q: I play a game built with Unity software, what should I know?
60
+
61
+A: Unity has probably collected some or all of the following information about your device: Unique device identifier generated from the device MAC/IMEI/MEID (which we immediately convert into a different number using a one way hash); IP address; Device manufacturer and model; the operating system and version running on your system or device; browser type; language; the make of the CPU, and number of CPUs present; the graphics card type and vendor name; graphics card driver name and version (example: "nv4disp.dll 6.10.93.71"); which graphics API is in use (example: "OpenGL 2.1" or "Direct3D 9.0c"); amount of system and video RAM present; current screen resolution; version of the Unity Player; version of the Unity Editor used to create the content; a number describing whether the player is running on Mac, Windows or other platforms; and a checksum of all the data that gets sent to verify that it did transmit correctly; application or bundle identification ("app id") of the game installed. Some Unity developers use Unity’s analytics and ad services which collect additional information. See FAQs on Unity Analytics and Unity Ads below.
62
+
63
+
64
+Q: That seems like a lot of data, why so much?
65
+
66
+A: We try to limit the collection of this information from any one player or device; however, certain operating systems do not permit us to note that the info has already been collected. This means that the data may be sent to Unity each time you start the game. We use the information to make decisions about which platforms, operating systems and versions of them should be supported by our game development software. We aggregate this data and make it available to developers at stats.unity3d.com. This data helps us improve our Services and helps developers improve their apps.
67
+
68
+
69
+8. Your choices about Unity’s collection and use of your information
70
+
71
+    You always have the option to refrain from using the Service or to discontinue using the Service if you do not want information collected about you.
72
+</code></pre>
73
+<p>They also explictly says in the FAQ that there is no opt-out, and the anonymous stats are indeed browsable at <a href="http://stats.unity3d.com/mobile/">http://stats.unity3d.com/mobile/</a>. In conclusion, contrary to Unreal Engine, I do not think you can easily prevent the engine from sending anonymous statistics, which is a pity in my opinion. Moreover, there are a number of threads talking about extra permissions required by Unity (such as network access to send the statistics) and there seems to be no way to not require those permissions and to still conform to the EULA: <a href="http://answers.unity3d.com/questions/663197/how-to-prevent-unity-from-adding-permissions-to-an.html">http://answers.unity3d.com/questions/663197/how-to-prevent-unity-from-adding-permissions-to-an.html</a> and <a href="http://forum.unity3d.com/threads/extra-permission-needed-in-android.295556">http://forum.unity3d.com/threads/extra-permission-needed-in-android.295556</a>. </p>
74
+<footer>
75
+<p class="tags">Tags : <a href="http://phyks.me/tags/Mobile.html">Mobile</a>, <a href="http://phyks.me/tags/Development.html">Development</a>, <a href="http://phyks.me/tags/Game Engine.html">Game Engine</a></p></footer>
76
+</div>]]></content:encoded>
77
+			<pubDate>Fri, 27 Mar 2015 20:00:00 -0000</pubDate>
78
+			<category>Mobile</category>
79
+			<category>Development</category>
80
+			<category>Game Engine</category>
81
+			<author>webmaster@phyks.me (Phyks)</author>
82
+		</item>
11 83
 		<item>
12 84
 			<title>“You are not selfhosting”…</title>
13 85
 			<link>http://phyks.me/2015/03/you_are_not_selfhosting.html</link>
@@ -1017,66 +1089,5 @@ Edit : Cela fait bientôt une semaine que l'API Free me renvoie un 402, en bouc
1017 1089
 			<category>Phyks</category>
1018 1090
 			<author>webmaster@phyks.me (Phyks)</author>
1019 1091
 		</item>
1020
-		<item>
1021
-			<title>Diaspora*, c'est quand même pas pour tout le monde</title>
1022
-			<link>http://phyks.me/2014/07/diaspora_pas_pour_tout_monde.html</link>
1023
-			<guid isPermaLink="true">http://phyks.me/2014/07/diaspora_pas_pour_tout_monde.html</guid>
1024
-			<description>
1025
-
1026
-
1027
-
1028
-Ça faisait quelques mois que je disais que j'allais m'héberger une instance de Diaspora* (un pod comme ça s'appelle…</description>
1029
-			<content:encoded><![CDATA[<div class="article">
1030
-<header></header>
1031
-<!--
1032
-	@author=Phyks
1033
-	@date=29072014-2251
1034
-	@title=Diaspora*, c'est quand même pas pour tout le monde
1035
-	@tags=Libre
1036
--->
1037
-<p>Ça faisait quelques mois que je disais que j'allais m'héberger une instance de <a href="ihttps://diasporafoundation.org/">Diaspora*</a> (un <em>pod</em> comme ça s'appelle). Finalement, sous la pression de <a href="http://tomcanac.com/">tmos</a> j'ai cédé et j'ai fini par m'occuper de ça ce weekend. Du coup, il est temps de faire un petit retour sur l'installation.</p>
1038
-<p><em>Note :</em> Je ne m'attarderai pas sur l'historique et le but du projet (TLDR; un réseau social décentralisé et opensource), <a href="http://blog-libre.org/tag/diaspora">d'autres</a> l'ont déjà fait, ni sur l'utilisation, car je débarque et n'ai pas encore appréhendé la bête. C'est donc juste un retour sur l'installation, l'accessibilité de Diaspora* au plus grand nombre, et les premiers pas. De plus, je n'ai pas de commentaires sur ce blog statique, donc n'hésitez pas à <a href="http://phyks.me/contact.html">me contacter</a> pour en discuter.</p>
1039
-<p>Il y a peu, <a href="http://maniatux.fr/index.php?article473/diaspora-c-est-pas-pour-moi">Maniatux</a> écrivait « Diaspora, c'est pas pour moi ». J'y suis, j'ai réussi à l'installer, mais je serai bien tenté de dire « Diaspora*, c'est pas pour tout le monde » voire même « Diaspora*, si tu n'es pas geek barbu libriste, mieux vaut passer ton chemin » (pour l'instant, j'espère). Retour sur les principaux points.</p>
1040
-<h2>S'auto-héberger</h2>
1041
-<p>Forcément, on parle de réseau social décentralisé, libre et on soulève plusieurs problématiques de vie privée avec les grands réseaux sociaux actuels (Twitter, Facebook, …). Donc si on passe sur Diaspora*, ce n'est pas a priori pour aller sur un pod pré-existant, et retomber dans un silo.</p>
1042
-<p>Attention, je ne dis pas que c'est le mal absolu que d'aller sur un pod hébergé par quelqu'un d'autre, loin de là. On a une certaine qualité de service garantie et les principaux pods français (<a href="http://diaspora-fr.org/">diaspora-fr.org</a>, <a href="https://framasphere.org">FramaSphère</a>, …) sont aux mains d'association auxquelles je fais infiniment plus confiance qu'aux gros du web. Mais tant qu'à être présent sur ce réseau, et si on en a la possibilité, autant s'héberger soi-même. Comme j'héberge déjà mon compte Jabber et plusieurs autres services que j'utilise, autant essayer de continuer dans la décentralisation et héberger son propre <em>pod</em>.</p>
1043
-<p>La majeure partie des commentaires dans la suite sera donc liée à cet auto-hébergement. Si vous êtes sur un pod hébergé par quelqu'un d'autre, vous ne les rencontrerez sûrement jamais mais ils sont à mon avis très importants pour un projet qui promeut la décentralisation.</p>
1044
-<h2>Ruby, mon ami…</h2>
1045
-<p>Diaspora a fait le choix d'utiliser Ruby, et non PHP qui est un langage très standard, déjà largement utilisé par <a href="http://wordpress.org">Wordpress</a> et tous les autres grands CMS. La plupart des utilisateurs a l'habitude de ces scripts et sait les installer facilement : une base de données créée avec PHPMyAdmin, un copier/coller avec un FTP ou SCP et éventuellement un petit <em>vhost</em> et ça marche. Faire le choix d'un langage « exotique », c'est se priver d'office d'un nombre conséquent d'utilisateurs, qui ne pourront pas l'installer facilement (ne serait-ce que parce qu'ils n'ont qu'un hébergement web et pas un serveur dédié).</p>
1046
-<p>Ce choix est très certainement techniquement justifié (PHP est décrié par beaucoup), mais le fait est que Ruby, c'est compliqué à utiliser pour un utilisateur moyen. Il faut installer la bonne version, les bonnes <em>gems</em>, avoir les bons droits etc. Heureusement, Diaspora* utilise RVM qui simplifie grandement l'installation… quand ça fonctionne (j'y reviens un peu plus bas). Enfin, RVM simplifie l'installation, mais la rend d'autant plus obscure : on enchaîne les commandes listées sur le wiki, sans vraiment savoir ce qu'elles font et on passe un temps important à les décrypter pour comprendre ce qu'il va se passer. Dans tous les cas, Node.JS et Python sont déjà largement utilisés (avec des problèmes similaires cependant), les utiliser aurait déjà pu faciliter l'accès et augmenter la documentation disponible.</p>
1047
-<p><em>Note :</em> Diaspora* utilise aussi Node.JS, mais « caché » derrière du Ruby. On est donc surtout confronté aux problèmes avec Ruby.</p>
1048
-<p>Enfin, toutes ces technologies (Node.JS / Python / Ruby / …) ne s'interfacent pas directement avec Apache. Là où pour servir un script PHP, il faut tout au plus un <em>vhost</em>, il faut ici charger tout un tas de modules spécifiques pour Apache et servir <em>via</em> <em>mod_proxy</em> l'instance de Diaspora*. Chance, le <em>vhost</em> disponible sur le wiki fonctionne directement, mais je ne doute pas que les nombreuses instructions avancées utilisées décourageront bon nombre d'utilisateurs de comprendre ce que fait réellement ce <em>vhost</em> (ce qui est fort dommage).</p>
1049
-<p>C'est donc à mon avis un gros point faible du projet (et je rejoins donc Maniatux), que de reposer sur Ruby, qui est un langage quand même assez exotique, qui empêchera les possesseurs d'un hébergement web seul de l'installer chez eux. Qui plus est quand d'autres technos comme Node.JS et Python sont disponibles, et avec beaucoup plus d'utilisateurs pour aider sur les problèmes généraux et non spécifiques à Diaspora*.</p>
1050
-<h2>Des technos (trop ?) modernes</h2>
1051
-<p>Diaspora* utilise Ruby, mais ce n'est pas la seule technologie moderne utilisée. On retrouve toutes les technos qui ont le vent en poupe : Node.JS, Boostrap, SASS, YAML, redis… Du coup, à chaque techno, une installation de paquets supplémentaires (redis par exemple), et un frein à la customisation (Bootstrap / SASS par exemple).</p>
1052
-<p>Heureusement, les dépôts Debian sont bien fournis, et on peut désormais utiliser des paquets tout prêts pour redis et nodejs. Ça rajoute une étape à l'installation, et élimine définitivement les possesseurs de mutualisés, mais ça n'est pas la partie la plus compliquée.</p>
1053
-<p>Les fichiers de configuration YAML sont très bien commentés et lisibles, c'est pratique. Par contre, l'utilisation de SASS oblige à connaître un minimum le fonctionnement de cet outil, et à compiler à chaque fois sa feuille de style. Je ne sais pas si les fonctions avancées de SASS simplifient grandement les feuilles de styles, mais la <em>bidouillabilité</em> en prend un coup =(.</p>
1054
-<h2>Une documentation… minimale</h2>
1055
-<p>Sur la documentation, rien à redire. La <a href="https://wiki.diasporafoundation.org/Installation/Debian/Wheezy?db=mysql&amp;mode=production">page de documentation</a> pour Debian Wheezy est complète.</p>
1056
-<p>Par contre, la documentation est minimale. Comprenez bien qu'elle est complète donc contient toutes les commandes nécessaires pour s'en sortir et installer Diaspora*, mais ne contient rien de plus. Que faire après l'installation ? Quelques vagues liens sont disponibles en fin de page, mais il faudra se lancer dans l'exploration de son instance (quelques infos sur la façon de fermer son instance aux inscriptions, quelques informations pour faire ses premiers pas auraient été super). Un problème en marge de l'installation, une configuration un peu exotique ? Il faudra vous débrouiller par vous-même.</p>
1057
-<p>Et se débrouiller par soi-même, c'est justement ça le problème. La doc sur RVM est assez minime, les chans IRC sont déserts (ou plus exactement il y a du monde, mais aucune activité visible)… (Merci au passage à <a href="https://github.com/Flaburgan">Flaburgan</a> qui a été un des seuls à répondre :)</p>
1058
-<p>En particulier, j'ai eu des problèmes avec RVM. Je n'avais pas <span class="monospace">sudo</span> disponible sur mon serveur, et selon la documentation, je devais lancer <span class="monospace">rvm autolibs read-only</span>. Mais cette commande me retournait un magnifique <span class="monospace">rvm_debug: command not found</span>, quoi que je fasse et bien que tous les fichiers nécessaires aient été sourcés par bash (visiblement, il y avait un problème à ce niveau quand même). Du coup, je cherche cette erreur dans <del>Google</del> mon moteur de recherche favori, et je ne trouve qu'une <em>issue</em> vieille de 6 mois et corrigée. Je reteste plusieurs fois, en suivant scrupuleusement la <a href="https://rvm.io/development/">doc de RVM</a> (cette fois) et non celle de Diaspora* des fois qu'elle ne soit pas à jour. Rien à faire, toujours la même erreur. Je décide donc d'aller voir sur IRC, sur <span class="monospace">#diaspora</span> et <span class="monospace">#rvm</span>, aucune activité en 2 jours… Finalement, j'ai réussi à m'en sortir en bidouillant avec un <span class="monospace">export -f rvm_debug</span> et j'ai réussi à installer Diaspora*, mais je ne sais toujours pas ce qu'il se passait…</p>
1059
-<h2>Gourmand</h2>
1060
-<p>Quand on lit les pré-requis dans le <a href="https://wiki.diasporafoundation.org/Installation/Debian/Wheezy?db=mysql&amp;mode=production">wiki</a>, on trouve qu'il faut au minimum 512Mo de RAM (et 1Go de swap) et un CPU multi-cœur. Ces pré-requis sont à destination des gens souhaitant héberger un <em>pod</em> de taille moyenne. Étant le seul utilisateur de mon pod, Diaspora* consommera sûrement beaucoup moins de ressources, à voir. Sinon, ça veut dire que Diaspora* ne pourra pas tourner sur un Raspberry Pi (par exemple), ce qui peut être dommage quand on voit que Cyrille Borne <a href="http://blog-libre.org/post/2014/07/21/installer-owncloud-en-5-minutes-sur-un-raspberry-pi-et-autres">installe un petit serveur XMPP sur son Raspi</a> et qu'une instance de Diaspora aurait pu le rejoindre pour faire un Raspberry Pi social qui contrôle notre identité sur les réseaux.</p>
1061
-<h2>Premiers pas</h2>
1062
-<p>On retrouve les principaux éléments des réseaux sociaux traditionnels. L'interface m'a un peu rappelé (feu) <a href="http://status.net/">StatusNet</a> (ou plus exactement son successeur, <a href="http://pump.io/">pump.io</a>, la faute à Bootstrap je suppose). On arrive sur une vue des derniers posts très classique et on peut poster directement.</p>
1063
-<p>Diaspora* met l'accent sur le contrôle de ses données, à travers les aspects (équivalents aux cercles de Google+ je pense). Du coup, chaque post peut être à destination d'un cercle différent, et ce comportement est un peu déroutant au début. En particulier, les posts sont privés par défaut, et il faut commencer à taper son message puis dérouler une liste déroulante pour modifier les aspects qui pourront voir ce post. À noter également qu'une fois un post écrit, son aspect ne peut être modifié.</p>
1064
-<h2>Petite déception dans les fonctions de base</h2>
1065
-<p>Diaspora* met l'accent sur le contrôle des données. Pourtant, je n'ai pas vu de moyen très simple d'exporter ses données (mais je ne doute pas que ça existe), mais surtout pour les importer. On ne peut donc pas migrer son instance sur un autre pod. C'est dommage, j'aurais bien testé sur un pod hébergé avant de passer chez moi =(.</p>
1066
-<p><strong>EDIT </strong> Autre truc un peu énervant. Quand on cherche un utilisateur, le moindre espace en trop dans le champ de recherche empêche la recherche de s'exécuter correctement.</p>
1067
-<h2>Quelques points supplémentaires</h2>
1068
-<ul>
1069
-<li>J'ai essayé d'ajouter quelques contacts. Aucun problème avec ceux hébergés sur <a href="http://diaspora-fr.org/">diaspora-fr.org</a>, mais j'ai eu beaucoup plus de mal à ajouter un autre utilisateur qui s'auto-hébergeait. On n'a pas encore élucidé ce qu'il se passait, mais il semblerait que je me sois même fait bloqué par portsentry lorsque j'ai essayé de l'ajouter…</li>
1070
-<li>Bien penser à cocher la case « permettre à tous de chercher votre profil » pour que les autres puissent vous ajouter.</li>
1071
-<li><strong>EDIT :</strong> Je découvre petit à petit Diaspora* et pour l'instant, je regrette quand même un peu le manque de fédération. C'est décentralisé, mais c'est un gros amas de petits ilots centralisés (les <em>pods</em>). Par exemple, les contacts ne sont pas fédérés et ne s'affichent qu'au sein d'un même <em>pod</em>.</li>
1072
-<li><strong>EDIT </strong> Les mentions sont bien pratiques, comme sur Twitter, mais ne sont pas utilisables dans des commentaires…</li>
1073
-</ul>
1074
-<footer>
1075
-<p class="tags">Tags : <a href="http://phyks.me/tags/Libre.html">Libre</a></p></footer>
1076
-</div>]]></content:encoded>
1077
-			<pubDate>Tue, 29 Jul 2014 19:51:00 -0000</pubDate>
1078
-			<category>Libre</category>
1079
-			<author>webmaster@phyks.me (Phyks)</author>
1080
-		</item>
1081 1092
 	</channel>
1082 1093
 </rss>

+ 2
- 2
blog/tags/Arch.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/2015/01/moving_known.html">Passage à Known</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/03/cross_platform_app_development.html">Quick comparisons of solutions for 3D cross-platform (mobile) development</a></li><li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 2
- 2
blog/tags/Autohébergement.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/2015/01/moving_known.html">Passage à Known</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/03/cross_platform_app_development.html">Quick comparisons of solutions for 3D cross-platform (mobile) development</a></li><li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 2
- 2
blog/tags/DIY.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/2015/01/moving_known.html">Passage à Known</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/03/cross_platform_app_development.html">Quick comparisons of solutions for 3D cross-platform (mobile) development</a></li><li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 2
- 2
blog/tags/Dev.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/2015/01/moving_known.html">Passage à Known</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/03/cross_platform_app_development.html">Quick comparisons of solutions for 3D cross-platform (mobile) development</a></li><li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 116
- 0
blog/tags/Development.html View File

@@ -0,0 +1,116 @@
1
+<!DOCTYPE html>
2
+<html lang="fr">
3
+    <head>
4
+        <meta charset="utf-8">
5
+        <title>Phyks' blog - tags/Development</title>
6
+		<link rel="stylesheet" href="//phyks.me/design.css"/>
7
+        <link type="text/plain" rel="author" href="//phyks.me/humans.txt"/>
8
+        <meta name="viewport" content="width=device-width, initial-scale=1.0">
9
+        <link rel="alternate" type="application/rss+xml" title="RSS" href="//phyks.me/rss.xml" />
10
+    </head>
11
+    <body>
12
+        <div id="wrapper">
13
+            <!-- Sidebar -->
14
+                <aside id="sidebar-wrapper">
15
+                    <header><h1><a href="//phyks.me">~Phyks</a></h1></header>
16
+
17
+                    <h2>Catégories</h2>
18
+                        <nav id="sidebar-tags">
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
20
+                        </nav>
21
+
22
+                    <h2>Derniers articles</h2>
23
+                        <ul id="sidebar-articles">
24
+                            <li><a href="//phyks.me/2015/03/cross_platform_app_development.html">Quick comparisons of solutions for 3D cross-platform (mobile) development</a></li><li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25
+                        </ul>
26
+
27
+                    <h2>Liens</h2>
28
+                        <ul id="sidebar-links">
29
+                            <li><a href="//phyks.me/contact.html" title="Contact">Me contacter</a></li>
30
+                            <li class="monospace"><a href="//links.phyks.me" title="Mon Shaarli">find ~phyks -type l</a></li>
31
+                            <li><a href="https://github.com/phyks/" rel="me" title="Github">Mon Github</a></li>
32
+                            <li><a href="//phyks.me/divers.html" title="Divers">Divers</a></li>
33
+                        </ul>
34
+                </aside>
35
+
36
+            <!-- Page content -->
37
+                <header id="header">
38
+                    <h1><a href="//phyks.me">~Phyks</a></h1>
39
+                </header>
40
+
41
+                <div id="note_responsive">
42
+                    <p><em>Note</em> : Cliquez sur la bande bleue à gauche pour faire apparaître le menu.</p>
43
+                </div>
44
+
45
+                <div id="articles">
46
+<article>
47
+	<aside>
48
+		<p class="day">27</p>
49
+		<p class="month">Mars</p>
50
+	</aside>
51
+	<div class="article">
52
+		<header><h1 class="article_title"><a href="//phyks.me/2015/03/cross_platform_app_development.html">Quick comparisons of solutions for 3D cross-platform (mobile) development</a></h1></header>
53
+		<!-- 
54
+    @author=Phyks
55
+    @date=27032015-2200
56
+    @title=Quick comparisons of solutions for 3D cross-platform (mobile) development
57
+    @tags=Mobile, Development, Game Engine
58
+-->
59
+
60
+<p>I spent some time lately comparing available development toolkits for 3D games&nbsp;/ apps on mobile platforms (mostly for hobby&nbsp;/ indy apps). I do not want to have to adapt to much my base code depending on the target platform, and was then looking at a toolkit to write most of the code once, and be able to build the app for various platforms on the market. My use case is: 
61
+<em> sufficient 3D engine (not necessarily a high end thing, just the basics to be able to write 3D apps decently. I consider <a href="http://threejs.org/">Three.js</a> as sufficient for my needs for instance).
62
+</em> I am working on Linux, so the ability to dev on Linux would be a real plus.
63
+<em> of course, it should be as less expensive as possible&nbsp;:)
64
+</em> and finally, I am paying much attention at the EULA and licenses, as I do not want to force my users to send “anonymous” statistics, I do not want my app to need extra (and useless) permissions and so on.</p>
65
+<p><em>Note</em>: I did <em>not</em> test these toolkits deeply, and am just reporting here what I found while playing a bit with them and comparing the features, licenses and requirements. I only included</p>
66
+<h2><a href="https://cordova.apache.org/">Cordova</a></h2>
67
+<p>First toolkit I had a look at was Cordova. It allows you to write pure web apps (using standard HTML&nbsp;/ CSS&nbsp;/ JS and providing some extra APIs to extend the available APIs, for bluetooth for instance) and to package them into native apps distributed through the market. What it does is basically add a wrapper around your web app to render it outside a browser, using the offered web abilities provided by webviews on iOs and on Android. Writing a web app is really super easy, and then having a first working prototype using Cordova is super fast. Cordova runs on Linux without any problems.</p>
68
+<p>It works pretty well for 2D graphics and basic applications (but needs some extra permissions as it uses a web view, even if it is not communicating over internet). But when it comes to 3D graphics, using WebGL, you will be in troubles. Indeed, the webview in Android 4.x is using an old version of Chrome, even if you install the latest Chrome on your mobile. Then, you will not be able to use WebGL as it is simply not supported, unless you use some hack to actually use a more recent Chrome version, using <a href="https://crosswalk-project.org/">Crosswalk</a> for instance. On iOS, this is even worse as WebViews prior to iOS8 do not support WebGL (and as far as I know, there is no alternative which will be both stable, reliable and will go through the reviewing process of the appstore). This mean that you will not be able to target iPhones prior to (and including) iPhone 4, and iPad 1, which in my opinion is a real problem.</p>
69
+<h2><a href="https://www.unrealengine.com/">Unreal Engine</a></h2>
70
+<p>Second option is to use the Unreal Engine 4. It is a complete 3D game engine, including many tools to build 3D apps that you can deploy on many platforms (both desktop, web and mobile). You can code in C++ with it, and script using many visual tools. It includes dedicated APIs for advanced features such as Virtual Reality (VR) and may sound overkill.</p>
71
+<p>You can dev using Windows and Mac (officially supported), but not Linux (at least, not officially). However, it seems that the dev editor can be installed on Linux at the cost of a bit of hacking, and this should be even easier to install in the near future as there seems to be a Linux community.</p>
72
+<p>Unreal Engine charges you with 5% royalties passed the first 3k$.</p>
73
+<p>Here are some relevant EULA fragments:</p>
74
+<pre><code> 12. Hardware and Usage Data
75
+
76
+You acknowledge that, as a default setting, the Engine Code will collect and send to Epic anonymous hardware and usage data from end users of Products. This functionality is used by Epic to improve the  Engine Code. You may modify the Engine Code under the License to turn off that functionality in your Product, or you may include in your Product the capability for your end users to turn off that functionality in the Product.
77
+</code></pre>
78
+<p>and</p>
79
+<pre><code>You agree to keep accurate books and records related to your development, manufacture, Distribution, and sale of Products and related revenue. Epic may conduct reasonable audits of those books and records. Audits will be conducted during business hours on reasonable prior notice to you. Epic will bear the costs of audits unless the results show a shortfall in payments in excess of 5% during the period audited, in which case you will be responsible for the cost of the audit.
80
+</code></pre>
81
+<p>The second one is a standard one, as you have to pay royalties depending on your revenues. But the first one is really concerning, as by default Unreal Engine will track your users and send anonymous statistics (thus requiring extra and unneeded permissions and raising privacy concerns). However, once you are aware of it, you can freely modify your app to prevent this, according to the EULA, so this is not a big deal in the end.</p>
82
+<h2><a href="http://unity3d.com/">Unity</a></h2>
83
+<p>Latest solution I found (used by <a href="http://www.monumentvalleygame.com/">Monument Valley</a> for instance) is the Unity game engine. The personal license is sufficient in most of the cases, and is free to use up to 100k$ gross revenue. The dev tools are available on Windows and Mac, but there is no Linux version (and no hacky way to get it in Linux).</p>
84
+<p>Here are some relevant fragments from EULA as well:</p>
85
+<pre><code>(c) users will be required to complete a user survey to activate the Software. Unity Pro users who are not eligible to use Unity Personal may not develop and publish Licensee Content for the iOS and Android platforms without purchasing the applicable Unity Pro Add-On Product license. Unity may monitor your compliance with and enforce these restrictions and requirements including but not limited to monitoring the number of downloads of your Licensee Content and any available revenue estimate data.
86
+</code></pre>
87
+<p>This one is not really clear, and I am not really sure of what it really implies. However, according to <a href="http://unity3d.com/legal/eula">http://unity3d.com/legal/eula</a> and <a href="https://unity3d.com/legal/privacy-policy">https://unity3d.com/legal/privacy-policy</a>, it seems to imply that statistics are sent and that you cannot avoid it, even in the pro version.</p>
88
+<pre><code>We also include certain device data collection in the runtime of the Software which is incorporated into the applications you create with the software. You should be sure that your privacy policy explains to your players the variety of technical information that is collected and shared with third parties like Unity.
89
+</code></pre>
90
+<p>and</p>
91
+<pre><code>Q: I play a game built with Unity software, what should I know?
92
+
93
+A: Unity has probably collected some or all of the following information about your device: Unique device identifier generated from the device MAC/IMEI/MEID (which we immediately convert into a different number using a one way hash); IP address; Device manufacturer and model; the operating system and version running on your system or device; browser type; language; the make of the CPU, and number of CPUs present; the graphics card type and vendor name; graphics card driver name and version (example: "nv4disp.dll 6.10.93.71"); which graphics API is in use (example: "OpenGL 2.1" or "Direct3D 9.0c"); amount of system and video RAM present; current screen resolution; version of the Unity Player; version of the Unity Editor used to create the content; a number describing whether the player is running on Mac, Windows or other platforms; and a checksum of all the data that gets sent to verify that it did transmit correctly; application or bundle identification ("app id") of the game installed. Some Unity developers use Unity’s analytics and ad services which collect additional information. See FAQs on Unity Analytics and Unity Ads below.
94
+
95
+
96
+Q: That seems like a lot of data, why so much?
97
+
98
+A: We try to limit the collection of this information from any one player or device; however, certain operating systems do not permit us to note that the info has already been collected. This means that the data may be sent to Unity each time you start the game. We use the information to make decisions about which platforms, operating systems and versions of them should be supported by our game development software. We aggregate this data and make it available to developers at stats.unity3d.com. This data helps us improve our Services and helps developers improve their apps.
99
+
100
+
101
+8. Your choices about Unity’s collection and use of your information
102
+
103
+    You always have the option to refrain from using the Service or to discontinue using the Service if you do not want information collected about you.
104
+</code></pre>
105
+<p>They also explictly says in the FAQ that there is no opt-out, and the anonymous stats are indeed browsable at <a href="http://stats.unity3d.com/mobile/">http://stats.unity3d.com/mobile/</a>. In conclusion, contrary to Unreal Engine, I do not think you can easily prevent the engine from sending anonymous statistics, which is a pity in my opinion. Moreover, there are a number of threads talking about extra permissions required by Unity (such as network access to send the statistics) and there seems to be no way to not require those permissions and to still conform to the EULA: <a href="http://answers.unity3d.com/questions/663197/how-to-prevent-unity-from-adding-permissions-to-an.html">http://answers.unity3d.com/questions/663197/how-to-prevent-unity-from-adding-permissions-to-an.html</a> and <a href="http://forum.unity3d.com/threads/extra-permission-needed-in-android.295556">http://forum.unity3d.com/threads/extra-permission-needed-in-android.295556</a>. </p>
106
+		<footer><p class="date">Le 27/03/2015 à 22:00</p>
107
+		<p class="tags">Tags : <a href="//phyks.me/tags/Mobile.html">Mobile</a>, <a href="//phyks.me/tags/Development.html">Development</a>, <a href="//phyks.me/tags/Game Engine.html">Game Engine</a></p></footer>
108
+	</div>
109
+</article>
110
+            </div>
111
+            <footer id="rss">
112
+                <p><a href="//phyks.me/rss.xml"><img src="//phyks.me/img/rss.png" alt="RSS"/></a></p>
113
+            </footer>
114
+        </div>
115
+    </body>
116
+</html>

+ 116
- 0
blog/tags/Game Engine.html View File

@@ -0,0 +1,116 @@
1
+<!DOCTYPE html>
2
+<html lang="fr">
3
+    <head>
4
+        <meta charset="utf-8">
5
+        <title>Phyks' blog - tags/Game Engine</title>
6
+		<link rel="stylesheet" href="//phyks.me/design.css"/>
7
+        <link type="text/plain" rel="author" href="//phyks.me/humans.txt"/>
8
+        <meta name="viewport" content="width=device-width, initial-scale=1.0">
9
+        <link rel="alternate" type="application/rss+xml" title="RSS" href="//phyks.me/rss.xml" />
10
+    </head>
11
+    <body>
12
+        <div id="wrapper">
13
+            <!-- Sidebar -->
14
+                <aside id="sidebar-wrapper">
15
+                    <header><h1><a href="//phyks.me">~Phyks</a></h1></header>
16
+
17
+                    <h2>Catégories</h2>
18
+                        <nav id="sidebar-tags">
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
20
+                        </nav>
21
+
22
+                    <h2>Derniers articles</h2>
23
+                        <ul id="sidebar-articles">
24
+                            <li><a href="//phyks.me/2015/03/cross_platform_app_development.html">Quick comparisons of solutions for 3D cross-platform (mobile) development</a></li><li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25
+                        </ul>
26
+
27
+                    <h2>Liens</h2>
28
+                        <ul id="sidebar-links">
29
+                            <li><a href="//phyks.me/contact.html" title="Contact">Me contacter</a></li>
30
+                            <li class="monospace"><a href="//links.phyks.me" title="Mon Shaarli">find ~phyks -type l</a></li>
31
+                            <li><a href="https://github.com/phyks/" rel="me" title="Github">Mon Github</a></li>
32
+                            <li><a href="//phyks.me/divers.html" title="Divers">Divers</a></li>
33
+                        </ul>
34
+                </aside>
35
+
36
+            <!-- Page content -->
37
+                <header id="header">
38
+                    <h1><a href="//phyks.me">~Phyks</a></h1>
39
+                </header>
40
+
41
+                <div id="note_responsive">
42
+                    <p><em>Note</em> : Cliquez sur la bande bleue à gauche pour faire apparaître le menu.</p>
43
+                </div>
44
+
45
+                <div id="articles">
46
+<article>
47
+	<aside>
48
+		<p class="day">27</p>
49
+		<p class="month">Mars</p>
50
+	</aside>
51
+	<div class="article">
52
+		<header><h1 class="article_title"><a href="//phyks.me/2015/03/cross_platform_app_development.html">Quick comparisons of solutions for 3D cross-platform (mobile) development</a></h1></header>
53
+		<!-- 
54
+    @author=Phyks
55
+    @date=27032015-2200
56
+    @title=Quick comparisons of solutions for 3D cross-platform (mobile) development
57
+    @tags=Mobile, Development, Game Engine
58
+-->
59
+
60
+<p>I spent some time lately comparing available development toolkits for 3D games&nbsp;/ apps on mobile platforms (mostly for hobby&nbsp;/ indy apps). I do not want to have to adapt to much my base code depending on the target platform, and was then looking at a toolkit to write most of the code once, and be able to build the app for various platforms on the market. My use case is: 
61
+<em> sufficient 3D engine (not necessarily a high end thing, just the basics to be able to write 3D apps decently. I consider <a href="http://threejs.org/">Three.js</a> as sufficient for my needs for instance).
62
+</em> I am working on Linux, so the ability to dev on Linux would be a real plus.
63
+<em> of course, it should be as less expensive as possible&nbsp;:)
64
+</em> and finally, I am paying much attention at the EULA and licenses, as I do not want to force my users to send “anonymous” statistics, I do not want my app to need extra (and useless) permissions and so on.</p>
65
+<p><em>Note</em>: I did <em>not</em> test these toolkits deeply, and am just reporting here what I found while playing a bit with them and comparing the features, licenses and requirements. I only included</p>
66
+<h2><a href="https://cordova.apache.org/">Cordova</a></h2>
67
+<p>First toolkit I had a look at was Cordova. It allows you to write pure web apps (using standard HTML&nbsp;/ CSS&nbsp;/ JS and providing some extra APIs to extend the available APIs, for bluetooth for instance) and to package them into native apps distributed through the market. What it does is basically add a wrapper around your web app to render it outside a browser, using the offered web abilities provided by webviews on iOs and on Android. Writing a web app is really super easy, and then having a first working prototype using Cordova is super fast. Cordova runs on Linux without any problems.</p>
68
+<p>It works pretty well for 2D graphics and basic applications (but needs some extra permissions as it uses a web view, even if it is not communicating over internet). But when it comes to 3D graphics, using WebGL, you will be in troubles. Indeed, the webview in Android 4.x is using an old version of Chrome, even if you install the latest Chrome on your mobile. Then, you will not be able to use WebGL as it is simply not supported, unless you use some hack to actually use a more recent Chrome version, using <a href="https://crosswalk-project.org/">Crosswalk</a> for instance. On iOS, this is even worse as WebViews prior to iOS8 do not support WebGL (and as far as I know, there is no alternative which will be both stable, reliable and will go through the reviewing process of the appstore). This mean that you will not be able to target iPhones prior to (and including) iPhone 4, and iPad 1, which in my opinion is a real problem.</p>
69
+<h2><a href="https://www.unrealengine.com/">Unreal Engine</a></h2>
70
+<p>Second option is to use the Unreal Engine 4. It is a complete 3D game engine, including many tools to build 3D apps that you can deploy on many platforms (both desktop, web and mobile). You can code in C++ with it, and script using many visual tools. It includes dedicated APIs for advanced features such as Virtual Reality (VR) and may sound overkill.</p>
71
+<p>You can dev using Windows and Mac (officially supported), but not Linux (at least, not officially). However, it seems that the dev editor can be installed on Linux at the cost of a bit of hacking, and this should be even easier to install in the near future as there seems to be a Linux community.</p>
72
+<p>Unreal Engine charges you with 5% royalties passed the first 3k$.</p>
73
+<p>Here are some relevant EULA fragments:</p>
74
+<pre><code> 12. Hardware and Usage Data
75
+
76
+You acknowledge that, as a default setting, the Engine Code will collect and send to Epic anonymous hardware and usage data from end users of Products. This functionality is used by Epic to improve the  Engine Code. You may modify the Engine Code under the License to turn off that functionality in your Product, or you may include in your Product the capability for your end users to turn off that functionality in the Product.
77
+</code></pre>
78
+<p>and</p>
79
+<pre><code>You agree to keep accurate books and records related to your development, manufacture, Distribution, and sale of Products and related revenue. Epic may conduct reasonable audits of those books and records. Audits will be conducted during business hours on reasonable prior notice to you. Epic will bear the costs of audits unless the results show a shortfall in payments in excess of 5% during the period audited, in which case you will be responsible for the cost of the audit.
80
+</code></pre>
81
+<p>The second one is a standard one, as you have to pay royalties depending on your revenues. But the first one is really concerning, as by default Unreal Engine will track your users and send anonymous statistics (thus requiring extra and unneeded permissions and raising privacy concerns). However, once you are aware of it, you can freely modify your app to prevent this, according to the EULA, so this is not a big deal in the end.</p>
82
+<h2><a href="http://unity3d.com/">Unity</a></h2>
83
+<p>Latest solution I found (used by <a href="http://www.monumentvalleygame.com/">Monument Valley</a> for instance) is the Unity game engine. The personal license is sufficient in most of the cases, and is free to use up to 100k$ gross revenue. The dev tools are available on Windows and Mac, but there is no Linux version (and no hacky way to get it in Linux).</p>
84
+<p>Here are some relevant fragments from EULA as well:</p>
85
+<pre><code>(c) users will be required to complete a user survey to activate the Software. Unity Pro users who are not eligible to use Unity Personal may not develop and publish Licensee Content for the iOS and Android platforms without purchasing the applicable Unity Pro Add-On Product license. Unity may monitor your compliance with and enforce these restrictions and requirements including but not limited to monitoring the number of downloads of your Licensee Content and any available revenue estimate data.
86
+</code></pre>
87
+<p>This one is not really clear, and I am not really sure of what it really implies. However, according to <a href="http://unity3d.com/legal/eula">http://unity3d.com/legal/eula</a> and <a href="https://unity3d.com/legal/privacy-policy">https://unity3d.com/legal/privacy-policy</a>, it seems to imply that statistics are sent and that you cannot avoid it, even in the pro version.</p>
88
+<pre><code>We also include certain device data collection in the runtime of the Software which is incorporated into the applications you create with the software. You should be sure that your privacy policy explains to your players the variety of technical information that is collected and shared with third parties like Unity.
89
+</code></pre>
90
+<p>and</p>
91
+<pre><code>Q: I play a game built with Unity software, what should I know?
92
+
93
+A: Unity has probably collected some or all of the following information about your device: Unique device identifier generated from the device MAC/IMEI/MEID (which we immediately convert into a different number using a one way hash); IP address; Device manufacturer and model; the operating system and version running on your system or device; browser type; language; the make of the CPU, and number of CPUs present; the graphics card type and vendor name; graphics card driver name and version (example: "nv4disp.dll 6.10.93.71"); which graphics API is in use (example: "OpenGL 2.1" or "Direct3D 9.0c"); amount of system and video RAM present; current screen resolution; version of the Unity Player; version of the Unity Editor used to create the content; a number describing whether the player is running on Mac, Windows or other platforms; and a checksum of all the data that gets sent to verify that it did transmit correctly; application or bundle identification ("app id") of the game installed. Some Unity developers use Unity’s analytics and ad services which collect additional information. See FAQs on Unity Analytics and Unity Ads below.
94
+
95
+
96
+Q: That seems like a lot of data, why so much?
97
+
98
+A: We try to limit the collection of this information from any one player or device; however, certain operating systems do not permit us to note that the info has already been collected. This means that the data may be sent to Unity each time you start the game. We use the information to make decisions about which platforms, operating systems and versions of them should be supported by our game development software. We aggregate this data and make it available to developers at stats.unity3d.com. This data helps us improve our Services and helps developers improve their apps.
99
+
100
+
101
+8. Your choices about Unity’s collection and use of your information
102
+
103
+    You always have the option to refrain from using the Service or to discontinue using the Service if you do not want information collected about you.
104
+</code></pre>
105
+<p>They also explictly says in the FAQ that there is no opt-out, and the anonymous stats are indeed browsable at <a href="http://stats.unity3d.com/mobile/">http://stats.unity3d.com/mobile/</a>. In conclusion, contrary to Unreal Engine, I do not think you can easily prevent the engine from sending anonymous statistics, which is a pity in my opinion. Moreover, there are a number of threads talking about extra permissions required by Unity (such as network access to send the statistics) and there seems to be no way to not require those permissions and to still conform to the EULA: <a href="http://answers.unity3d.com/questions/663197/how-to-prevent-unity-from-adding-permissions-to-an.html">http://answers.unity3d.com/questions/663197/how-to-prevent-unity-from-adding-permissions-to-an.html</a> and <a href="http://forum.unity3d.com/threads/extra-permission-needed-in-android.295556">http://forum.unity3d.com/threads/extra-permission-needed-in-android.295556</a>. </p>
106
+		<footer><p class="date">Le 27/03/2015 à 22:00</p>
107
+		<p class="tags">Tags : <a href="//phyks.me/tags/Mobile.html">Mobile</a>, <a href="//phyks.me/tags/Development.html">Development</a>, <a href="//phyks.me/tags/Game Engine.html">Game Engine</a></p></footer>
108
+	</div>
109
+</article>
110
+            </div>
111
+            <footer id="rss">
112
+                <p><a href="//phyks.me/rss.xml"><img src="//phyks.me/img/rss.png" alt="RSS"/></a></p>
113
+            </footer>
114
+        </div>
115
+    </body>
116
+</html>

+ 2
- 2
blog/tags/GeoData.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/2015/01/moving_known.html">Passage à Known</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/03/cross_platform_app_development.html">Quick comparisons of solutions for 3D cross-platform (mobile) development</a></li><li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 2
- 2
blog/tags/Known.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/2015/01/moving_known.html">Passage à Known</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/03/cross_platform_app_development.html">Quick comparisons of solutions for 3D cross-platform (mobile) development</a></li><li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 2
- 2
blog/tags/Libre.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/2015/01/moving_known.html">Passage à Known</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/03/cross_platform_app_development.html">Quick comparisons of solutions for 3D cross-platform (mobile) development</a></li><li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 2
- 2
blog/tags/Linux.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/2015/01/moving_known.html">Passage à Known</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/03/cross_platform_app_development.html">Quick comparisons of solutions for 3D cross-platform (mobile) development</a></li><li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 116
- 0
blog/tags/Mobile.html View File

@@ -0,0 +1,116 @@
1
+<!DOCTYPE html>
2
+<html lang="fr">
3
+    <head>
4
+        <meta charset="utf-8">
5
+        <title>Phyks' blog - tags/Mobile</title>
6
+		<link rel="stylesheet" href="//phyks.me/design.css"/>
7
+        <link type="text/plain" rel="author" href="//phyks.me/humans.txt"/>
8
+        <meta name="viewport" content="width=device-width, initial-scale=1.0">
9
+        <link rel="alternate" type="application/rss+xml" title="RSS" href="//phyks.me/rss.xml" />
10
+    </head>
11
+    <body>
12
+        <div id="wrapper">
13
+            <!-- Sidebar -->
14
+                <aside id="sidebar-wrapper">
15
+                    <header><h1><a href="//phyks.me">~Phyks</a></h1></header>
16
+
17
+                    <h2>Catégories</h2>
18
+                        <nav id="sidebar-tags">
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
20
+                        </nav>
21
+
22
+                    <h2>Derniers articles</h2>
23
+                        <ul id="sidebar-articles">
24
+                            <li><a href="//phyks.me/2015/03/cross_platform_app_development.html">Quick comparisons of solutions for 3D cross-platform (mobile) development</a></li><li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25
+                        </ul>
26
+
27
+                    <h2>Liens</h2>
28
+                        <ul id="sidebar-links">
29
+                            <li><a href="//phyks.me/contact.html" title="Contact">Me contacter</a></li>
30
+                            <li class="monospace"><a href="//links.phyks.me" title="Mon Shaarli">find ~phyks -type l</a></li>
31
+                            <li><a href="https://github.com/phyks/" rel="me" title="Github">Mon Github</a></li>
32
+                            <li><a href="//phyks.me/divers.html" title="Divers">Divers</a></li>
33
+                        </ul>
34
+                </aside>
35
+
36
+            <!-- Page content -->
37
+                <header id="header">
38
+                    <h1><a href="//phyks.me">~Phyks</a></h1>
39
+                </header>
40
+
41
+                <div id="note_responsive">
42
+                    <p><em>Note</em> : Cliquez sur la bande bleue à gauche pour faire apparaître le menu.</p>
43
+                </div>
44
+
45
+                <div id="articles">
46
+<article>
47
+	<aside>
48
+		<p class="day">27</p>
49
+		<p class="month">Mars</p>
50
+	</aside>
51
+	<div class="article">
52
+		<header><h1 class="article_title"><a href="//phyks.me/2015/03/cross_platform_app_development.html">Quick comparisons of solutions for 3D cross-platform (mobile) development</a></h1></header>
53
+		<!-- 
54
+    @author=Phyks
55
+    @date=27032015-2200
56
+    @title=Quick comparisons of solutions for 3D cross-platform (mobile) development
57
+    @tags=Mobile, Development, Game Engine
58
+-->
59
+
60
+<p>I spent some time lately comparing available development toolkits for 3D games&nbsp;/ apps on mobile platforms (mostly for hobby&nbsp;/ indy apps). I do not want to have to adapt to much my base code depending on the target platform, and was then looking at a toolkit to write most of the code once, and be able to build the app for various platforms on the market. My use case is: 
61
+<em> sufficient 3D engine (not necessarily a high end thing, just the basics to be able to write 3D apps decently. I consider <a href="http://threejs.org/">Three.js</a> as sufficient for my needs for instance).
62
+</em> I am working on Linux, so the ability to dev on Linux would be a real plus.
63
+<em> of course, it should be as less expensive as possible&nbsp;:)
64
+</em> and finally, I am paying much attention at the EULA and licenses, as I do not want to force my users to send “anonymous” statistics, I do not want my app to need extra (and useless) permissions and so on.</p>
65
+<p><em>Note</em>: I did <em>not</em> test these toolkits deeply, and am just reporting here what I found while playing a bit with them and comparing the features, licenses and requirements. I only included</p>
66
+<h2><a href="https://cordova.apache.org/">Cordova</a></h2>
67
+<p>First toolkit I had a look at was Cordova. It allows you to write pure web apps (using standard HTML&nbsp;/ CSS&nbsp;/ JS and providing some extra APIs to extend the available APIs, for bluetooth for instance) and to package them into native apps distributed through the market. What it does is basically add a wrapper around your web app to render it outside a browser, using the offered web abilities provided by webviews on iOs and on Android. Writing a web app is really super easy, and then having a first working prototype using Cordova is super fast. Cordova runs on Linux without any problems.</p>
68
+<p>It works pretty well for 2D graphics and basic applications (but needs some extra permissions as it uses a web view, even if it is not communicating over internet). But when it comes to 3D graphics, using WebGL, you will be in troubles. Indeed, the webview in Android 4.x is using an old version of Chrome, even if you install the latest Chrome on your mobile. Then, you will not be able to use WebGL as it is simply not supported, unless you use some hack to actually use a more recent Chrome version, using <a href="https://crosswalk-project.org/">Crosswalk</a> for instance. On iOS, this is even worse as WebViews prior to iOS8 do not support WebGL (and as far as I know, there is no alternative which will be both stable, reliable and will go through the reviewing process of the appstore). This mean that you will not be able to target iPhones prior to (and including) iPhone 4, and iPad 1, which in my opinion is a real problem.</p>
69
+<h2><a href="https://www.unrealengine.com/">Unreal Engine</a></h2>
70
+<p>Second option is to use the Unreal Engine 4. It is a complete 3D game engine, including many tools to build 3D apps that you can deploy on many platforms (both desktop, web and mobile). You can code in C++ with it, and script using many visual tools. It includes dedicated APIs for advanced features such as Virtual Reality (VR) and may sound overkill.</p>
71
+<p>You can dev using Windows and Mac (officially supported), but not Linux (at least, not officially). However, it seems that the dev editor can be installed on Linux at the cost of a bit of hacking, and this should be even easier to install in the near future as there seems to be a Linux community.</p>
72
+<p>Unreal Engine charges you with 5% royalties passed the first 3k$.</p>
73
+<p>Here are some relevant EULA fragments:</p>
74
+<pre><code> 12. Hardware and Usage Data
75
+
76
+You acknowledge that, as a default setting, the Engine Code will collect and send to Epic anonymous hardware and usage data from end users of Products. This functionality is used by Epic to improve the  Engine Code. You may modify the Engine Code under the License to turn off that functionality in your Product, or you may include in your Product the capability for your end users to turn off that functionality in the Product.
77
+</code></pre>
78
+<p>and</p>
79
+<pre><code>You agree to keep accurate books and records related to your development, manufacture, Distribution, and sale of Products and related revenue. Epic may conduct reasonable audits of those books and records. Audits will be conducted during business hours on reasonable prior notice to you. Epic will bear the costs of audits unless the results show a shortfall in payments in excess of 5% during the period audited, in which case you will be responsible for the cost of the audit.
80
+</code></pre>
81
+<p>The second one is a standard one, as you have to pay royalties depending on your revenues. But the first one is really concerning, as by default Unreal Engine will track your users and send anonymous statistics (thus requiring extra and unneeded permissions and raising privacy concerns). However, once you are aware of it, you can freely modify your app to prevent this, according to the EULA, so this is not a big deal in the end.</p>
82
+<h2><a href="http://unity3d.com/">Unity</a></h2>
83
+<p>Latest solution I found (used by <a href="http://www.monumentvalleygame.com/">Monument Valley</a> for instance) is the Unity game engine. The personal license is sufficient in most of the cases, and is free to use up to 100k$ gross revenue. The dev tools are available on Windows and Mac, but there is no Linux version (and no hacky way to get it in Linux).</p>
84
+<p>Here are some relevant fragments from EULA as well:</p>
85
+<pre><code>(c) users will be required to complete a user survey to activate the Software. Unity Pro users who are not eligible to use Unity Personal may not develop and publish Licensee Content for the iOS and Android platforms without purchasing the applicable Unity Pro Add-On Product license. Unity may monitor your compliance with and enforce these restrictions and requirements including but not limited to monitoring the number of downloads of your Licensee Content and any available revenue estimate data.
86
+</code></pre>
87
+<p>This one is not really clear, and I am not really sure of what it really implies. However, according to <a href="http://unity3d.com/legal/eula">http://unity3d.com/legal/eula</a> and <a href="https://unity3d.com/legal/privacy-policy">https://unity3d.com/legal/privacy-policy</a>, it seems to imply that statistics are sent and that you cannot avoid it, even in the pro version.</p>
88
+<pre><code>We also include certain device data collection in the runtime of the Software which is incorporated into the applications you create with the software. You should be sure that your privacy policy explains to your players the variety of technical information that is collected and shared with third parties like Unity.
89
+</code></pre>
90
+<p>and</p>
91
+<pre><code>Q: I play a game built with Unity software, what should I know?
92
+
93
+A: Unity has probably collected some or all of the following information about your device: Unique device identifier generated from the device MAC/IMEI/MEID (which we immediately convert into a different number using a one way hash); IP address; Device manufacturer and model; the operating system and version running on your system or device; browser type; language; the make of the CPU, and number of CPUs present; the graphics card type and vendor name; graphics card driver name and version (example: "nv4disp.dll 6.10.93.71"); which graphics API is in use (example: "OpenGL 2.1" or "Direct3D 9.0c"); amount of system and video RAM present; current screen resolution; version of the Unity Player; version of the Unity Editor used to create the content; a number describing whether the player is running on Mac, Windows or other platforms; and a checksum of all the data that gets sent to verify that it did transmit correctly; application or bundle identification ("app id") of the game installed. Some Unity developers use Unity’s analytics and ad services which collect additional information. See FAQs on Unity Analytics and Unity Ads below.
94
+
95
+
96
+Q: That seems like a lot of data, why so much?
97
+
98
+A: We try to limit the collection of this information from any one player or device; however, certain operating systems do not permit us to note that the info has already been collected. This means that the data may be sent to Unity each time you start the game. We use the information to make decisions about which platforms, operating systems and versions of them should be supported by our game development software. We aggregate this data and make it available to developers at stats.unity3d.com. This data helps us improve our Services and helps developers improve their apps.
99
+
100
+
101
+8. Your choices about Unity’s collection and use of your information
102
+
103
+    You always have the option to refrain from using the Service or to discontinue using the Service if you do not want information collected about you.
104
+</code></pre>
105
+<p>They also explictly says in the FAQ that there is no opt-out, and the anonymous stats are indeed browsable at <a href="http://stats.unity3d.com/mobile/">http://stats.unity3d.com/mobile/</a>. In conclusion, contrary to Unreal Engine, I do not think you can easily prevent the engine from sending anonymous statistics, which is a pity in my opinion. Moreover, there are a number of threads talking about extra permissions required by Unity (such as network access to send the statistics) and there seems to be no way to not require those permissions and to still conform to the EULA: <a href="http://answers.unity3d.com/questions/663197/how-to-prevent-unity-from-adding-permissions-to-an.html">http://answers.unity3d.com/questions/663197/how-to-prevent-unity-from-adding-permissions-to-an.html</a> and <a href="http://forum.unity3d.com/threads/extra-permission-needed-in-android.295556">http://forum.unity3d.com/threads/extra-permission-needed-in-android.295556</a>. </p>
106
+		<footer><p class="date">Le 27/03/2015 à 22:00</p>
107
+		<p class="tags">Tags : <a href="//phyks.me/tags/Mobile.html">Mobile</a>, <a href="//phyks.me/tags/Development.html">Development</a>, <a href="//phyks.me/tags/Game Engine.html">Game Engine</a></p></footer>
108
+	</div>
109
+</article>
110
+            </div>
111
+            <footer id="rss">
112
+                <p><a href="//phyks.me/rss.xml"><img src="//phyks.me/img/rss.png" alt="RSS"/></a></p>
113
+            </footer>
114
+        </div>
115
+    </body>
116
+</html>

+ 2
- 2
blog/tags/Phyks.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/2015/01/moving_known.html">Passage à Known</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/03/cross_platform_app_development.html">Quick comparisons of solutions for 3D cross-platform (mobile) development</a></li><li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 2
- 2
blog/tags/Selfhost.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/2015/01/moving_known.html">Passage à Known</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/03/cross_platform_app_development.html">Quick comparisons of solutions for 3D cross-platform (mobile) development</a></li><li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 2
- 2
blog/tags/Smartphone.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/2015/01/moving_known.html">Passage à Known</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/03/cross_platform_app_development.html">Quick comparisons of solutions for 3D cross-platform (mobile) development</a></li><li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 2
- 2
blog/tags/TupperVim.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/2015/01/moving_known.html">Passage à Known</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/03/cross_platform_app_development.html">Quick comparisons of solutions for 3D cross-platform (mobile) development</a></li><li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 2
- 2
blog/tags/Vim.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/2015/01/moving_known.html">Passage à Known</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/03/cross_platform_app_development.html">Quick comparisons of solutions for 3D cross-platform (mobile) development</a></li><li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 2
- 2
blog/tags/Web.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/2015/01/moving_known.html">Passage à Known</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/03/cross_platform_app_development.html">Quick comparisons of solutions for 3D cross-platform (mobile) development</a></li><li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 2
- 2
blog/tags/Weechat.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/2015/01/moving_known.html">Passage à Known</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/03/cross_platform_app_development.html">Quick comparisons of solutions for 3D cross-platform (mobile) development</a></li><li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 2
- 2
blog/tags/aNimble.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/2015/01/moving_known.html">Passage à Known</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/03/cross_platform_app_development.html">Quick comparisons of solutions for 3D cross-platform (mobile) development</a></li><li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 2
- 2
blog/tags/Électronique.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/2015/01/moving_known.html">Passage à Known</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/03/cross_platform_app_development.html">Quick comparisons of solutions for 3D cross-platform (mobile) development</a></li><li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 64
- 0
gen/2015/03/cross_platform_app_development.gen View File

@@ -0,0 +1,64 @@
1
+<article>
2
+	<aside>
3
+		<p class="day">27</p>
4
+		<p class="month">Mars</p>
5
+	</aside>
6
+	<div class="article">
7
+		<header><h1 class="article_title"><a href="//phyks.me/2015/03/cross_platform_app_development.html">Quick comparisons of solutions for 3D cross-platform (mobile) development</a></h1></header>
8
+		<!-- 
9
+    @author=Phyks
10
+    @date=27032015-2200
11
+    @title=Quick comparisons of solutions for 3D cross-platform (mobile) development
12
+    @tags=Mobile, Development, Game Engine
13
+-->
14
+
15
+<p>I spent some time lately comparing available development toolkits for 3D games&nbsp;/ apps on mobile platforms (mostly for hobby&nbsp;/ indy apps). I do not want to have to adapt to much my base code depending on the target platform, and was then looking at a toolkit to write most of the code once, and be able to build the app for various platforms on the market. My use case is: 
16
+<em> sufficient 3D engine (not necessarily a high end thing, just the basics to be able to write 3D apps decently. I consider <a href="http://threejs.org/">Three.js</a> as sufficient for my needs for instance).
17
+</em> I am working on Linux, so the ability to dev on Linux would be a real plus.
18
+<em> of course, it should be as less expensive as possible&nbsp;:)
19
+</em> and finally, I am paying much attention at the EULA and licenses, as I do not want to force my users to send “anonymous” statistics, I do not want my app to need extra (and useless) permissions and so on.</p>
20
+<p><em>Note</em>: I did <em>not</em> test these toolkits deeply, and am just reporting here what I found while playing a bit with them and comparing the features, licenses and requirements. I only included</p>
21
+<h2><a href="https://cordova.apache.org/">Cordova</a></h2>
22
+<p>First toolkit I had a look at was Cordova. It allows you to write pure web apps (using standard HTML&nbsp;/ CSS&nbsp;/ JS and providing some extra APIs to extend the available APIs, for bluetooth for instance) and to package them into native apps distributed through the market. What it does is basically add a wrapper around your web app to render it outside a browser, using the offered web abilities provided by webviews on iOs and on Android. Writing a web app is really super easy, and then having a first working prototype using Cordova is super fast. Cordova runs on Linux without any problems.</p>
23
+<p>It works pretty well for 2D graphics and basic applications (but needs some extra permissions as it uses a web view, even if it is not communicating over internet). But when it comes to 3D graphics, using WebGL, you will be in troubles. Indeed, the webview in Android 4.x is using an old version of Chrome, even if you install the latest Chrome on your mobile. Then, you will not be able to use WebGL as it is simply not supported, unless you use some hack to actually use a more recent Chrome version, using <a href="https://crosswalk-project.org/">Crosswalk</a> for instance. On iOS, this is even worse as WebViews prior to iOS8 do not support WebGL (and as far as I know, there is no alternative which will be both stable, reliable and will go through the reviewing process of the appstore). This mean that you will not be able to target iPhones prior to (and including) iPhone 4, and iPad 1, which in my opinion is a real problem.</p>
24
+<h2><a href="https://www.unrealengine.com/">Unreal Engine</a></h2>
25
+<p>Second option is to use the Unreal Engine 4. It is a complete 3D game engine, including many tools to build 3D apps that you can deploy on many platforms (both desktop, web and mobile). You can code in C++ with it, and script using many visual tools. It includes dedicated APIs for advanced features such as Virtual Reality (VR) and may sound overkill.</p>
26
+<p>You can dev using Windows and Mac (officially supported), but not Linux (at least, not officially). However, it seems that the dev editor can be installed on Linux at the cost of a bit of hacking, and this should be even easier to install in the near future as there seems to be a Linux community.</p>
27
+<p>Unreal Engine charges you with 5% royalties passed the first 3k$.</p>
28
+<p>Here are some relevant EULA fragments:</p>
29
+<pre><code> 12. Hardware and Usage Data
30
+
31
+You acknowledge that, as a default setting, the Engine Code will collect and send to Epic anonymous hardware and usage data from end users of Products. This functionality is used by Epic to improve the  Engine Code. You may modify the Engine Code under the License to turn off that functionality in your Product, or you may include in your Product the capability for your end users to turn off that functionality in the Product.
32
+</code></pre>
33
+<p>and</p>
34
+<pre><code>You agree to keep accurate books and records related to your development, manufacture, Distribution, and sale of Products and related revenue. Epic may conduct reasonable audits of those books and records. Audits will be conducted during business hours on reasonable prior notice to you. Epic will bear the costs of audits unless the results show a shortfall in payments in excess of 5% during the period audited, in which case you will be responsible for the cost of the audit.
35
+</code></pre>
36
+<p>The second one is a standard one, as you have to pay royalties depending on your revenues. But the first one is really concerning, as by default Unreal Engine will track your users and send anonymous statistics (thus requiring extra and unneeded permissions and raising privacy concerns). However, once you are aware of it, you can freely modify your app to prevent this, according to the EULA, so this is not a big deal in the end.</p>
37
+<h2><a href="http://unity3d.com/">Unity</a></h2>
38
+<p>Latest solution I found (used by <a href="http://www.monumentvalleygame.com/">Monument Valley</a> for instance) is the Unity game engine. The personal license is sufficient in most of the cases, and is free to use up to 100k$ gross revenue. The dev tools are available on Windows and Mac, but there is no Linux version (and no hacky way to get it in Linux).</p>
39
+<p>Here are some relevant fragments from EULA as well:</p>
40
+<pre><code>(c) users will be required to complete a user survey to activate the Software. Unity Pro users who are not eligible to use Unity Personal may not develop and publish Licensee Content for the iOS and Android platforms without purchasing the applicable Unity Pro Add-On Product license. Unity may monitor your compliance with and enforce these restrictions and requirements including but not limited to monitoring the number of downloads of your Licensee Content and any available revenue estimate data.
41
+</code></pre>
42
+<p>This one is not really clear, and I am not really sure of what it really implies. However, according to <a href="http://unity3d.com/legal/eula">http://unity3d.com/legal/eula</a> and <a href="https://unity3d.com/legal/privacy-policy">https://unity3d.com/legal/privacy-policy</a>, it seems to imply that statistics are sent and that you cannot avoid it, even in the pro version.</p>
43
+<pre><code>We also include certain device data collection in the runtime of the Software which is incorporated into the applications you create with the software. You should be sure that your privacy policy explains to your players the variety of technical information that is collected and shared with third parties like Unity.
44
+</code></pre>
45
+<p>and</p>
46
+<pre><code>Q: I play a game built with Unity software, what should I know?
47
+
48
+A: Unity has probably collected some or all of the following information about your device: Unique device identifier generated from the device MAC/IMEI/MEID (which we immediately convert into a different number using a one way hash); IP address; Device manufacturer and model; the operating system and version running on your system or device; browser type; language; the make of the CPU, and number of CPUs present; the graphics card type and vendor name; graphics card driver name and version (example: "nv4disp.dll 6.10.93.71"); which graphics API is in use (example: "OpenGL 2.1" or "Direct3D 9.0c"); amount of system and video RAM present; current screen resolution; version of the Unity Player; version of the Unity Editor used to create the content; a number describing whether the player is running on Mac, Windows or other platforms; and a checksum of all the data that gets sent to verify that it did transmit correctly; application or bundle identification ("app id") of the game installed. Some Unity developers use Unity’s analytics and ad services which collect additional information. See FAQs on Unity Analytics and Unity Ads below.
49
+
50
+
51
+Q: That seems like a lot of data, why so much?
52
+
53
+A: We try to limit the collection of this information from any one player or device; however, certain operating systems do not permit us to note that the info has already been collected. This means that the data may be sent to Unity each time you start the game. We use the information to make decisions about which platforms, operating systems and versions of them should be supported by our game development software. We aggregate this data and make it available to developers at stats.unity3d.com. This data helps us improve our Services and helps developers improve their apps.
54
+
55
+
56
+8. Your choices about Unity’s collection and use of your information
57
+
58
+    You always have the option to refrain from using the Service or to discontinue using the Service if you do not want information collected about you.
59
+</code></pre>
60
+<p>They also explictly says in the FAQ that there is no opt-out, and the anonymous stats are indeed browsable at <a href="http://stats.unity3d.com/mobile/">http://stats.unity3d.com/mobile/</a>. In conclusion, contrary to Unreal Engine, I do not think you can easily prevent the engine from sending anonymous statistics, which is a pity in my opinion. Moreover, there are a number of threads talking about extra permissions required by Unity (such as network access to send the statistics) and there seems to be no way to not require those permissions and to still conform to the EULA: <a href="http://answers.unity3d.com/questions/663197/how-to-prevent-unity-from-adding-permissions-to-an.html">http://answers.unity3d.com/questions/663197/how-to-prevent-unity-from-adding-permissions-to-an.html</a> and <a href="http://forum.unity3d.com/threads/extra-permission-needed-in-android.295556">http://forum.unity3d.com/threads/extra-permission-needed-in-android.295556</a>. </p>
61
+		<footer><p class="date">Le 27/03/2015 à 22:00</p>
62
+		<p class="tags">Tags : <a href="//phyks.me/tags/Mobile.html">Mobile</a>, <a href="//phyks.me/tags/Development.html">Development</a>, <a href="//phyks.me/tags/Game Engine.html">Game Engine</a></p></footer>
63
+	</div>
64
+</article>

+ 2
- 2
gen/header.gen View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/2015/01/moving_known.html">Passage à Known</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/03/cross_platform_app_development.html">Quick comparisons of solutions for 3D cross-platform (mobile) development</a></li><li><a href="//phyks.me/2015/03/you_are_not_selfhosting.html">“You are not selfhosting”…</a></li><li><a href="//phyks.me/2015/03/tuppervim_1503.html">TupperVim du 03/03/2015</a></li><li><a href="//phyks.me/2015/02/animble.html">Installing aNimble on Windows</a></li><li><a href="//phyks.me/2015/02/opendata_altimetry.html">Looking for altitude OpenData</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 1
- 0
gen/tags/Development.tmp View File

@@ -0,0 +1 @@
1
+2015/03/cross_platform_app_development.md

+ 1
- 0
gen/tags/Game Engine.tmp View File

@@ -0,0 +1 @@
1
+2015/03/cross_platform_app_development.md

+ 1
- 0
gen/tags/Mobile.tmp View File

@@ -0,0 +1 @@
1
+2015/03/cross_platform_app_development.md

+ 78
- 0
raw/2015/03/cross_platform_app_development.md View File

@@ -0,0 +1,78 @@
1
+<!--
2
+	@author=Phyks
3
+	@date=27032015-2200
4
+	@title=Quick comparisons of solutions for 3D cross-platform (mobile) development
5
+	@tags=Mobile, Development, Game Engine
6
+-->
7
+
8
+
9
+I spent some time lately comparing available development toolkits for 3D games / apps on mobile platforms (mostly for hobby / indy apps). I do not want to have to adapt to much my base code depending on the target platform, and was then looking at a toolkit to write most of the code once, and be able to build the app for various platforms on the market. My use case is:
10
+* sufficient 3D engine (not necessarily a high end thing, just the basics to be able to write 3D apps decently. I consider [Three.js](http://threejs.org/) as sufficient for my needs for instance).
11
+* I am working on Linux, so the ability to dev on Linux would be a real plus.
12
+* of course, it should be as less expensive as possible :)
13
+* and finally, I am paying much attention at the EULA and licenses, as I do not want to force my users to send “anonymous” statistics, I do not want my app to need extra (and useless) permissions and so on.
14
+
15
+
16
+_Note_: I did *not* test these toolkits deeply, and am just reporting here what I found while playing a bit with them and comparing the features, licenses and requirements. I only included
17
+
18
+
19
+## [Cordova](https://cordova.apache.org/)
20
+
21
+First toolkit I had a look at was Cordova. It allows you to write pure web apps (using standard HTML / CSS / JS and providing some extra APIs to extend the available APIs, for bluetooth for instance) and to package them into native apps distributed through the market. What it does is basically add a wrapper around your web app to render it outside a browser, using the offered web abilities provided by webviews on iOs and on Android. Writing a web app is really super easy, and then having a first working prototype using Cordova is super fast. Cordova runs on Linux without any problems.
22
+
23
+It works pretty well for 2D graphics and basic applications (but needs some extra permissions as it uses a web view, even if it is not communicating over internet). But when it comes to 3D graphics, using WebGL, you will be in troubles. Indeed, the webview in Android 4.x is using an old version of Chrome, even if you install the latest Chrome on your mobile. Then, you will not be able to use WebGL as it is simply not supported, unless you use some hack to actually use a more recent Chrome version, using [Crosswalk](https://crosswalk-project.org/) for instance. On iOS, this is even worse as WebViews prior to iOS8 do not support WebGL (and as far as I know, there is no alternative which will be both stable, reliable and will go through the reviewing process of the appstore). This mean that you will not be able to target iPhones prior to (and including) iPhone 4, and iPad 1, which in my opinion is a real problem.
24
+
25
+
26
+## [Unreal Engine](https://www.unrealengine.com/)
27
+
28
+Second option is to use the Unreal Engine 4. It is a complete 3D game engine, including many tools to build 3D apps that you can deploy on many platforms (both desktop, web and mobile). You can code in C++ with it, and script using many visual tools. It includes dedicated APIs for advanced features such as Virtual Reality (VR) and may sound overkill.
29
+
30
+You can dev using Windows and Mac (officially supported), but not Linux (at least, not officially). However, it seems that the dev editor can be installed on Linux at the cost of a bit of hacking, and this should be even easier to install in the near future as there seems to be a Linux community.
31
+
32
+Unreal Engine charges you with 5% royalties passed the first 3k$.
33
+
34
+Here are some relevant EULA fragments:
35
+
36
+     12. Hardware and Usage Data
37
+
38
+    You acknowledge that, as a default setting, the Engine Code will collect and send to Epic anonymous hardware and usage data from end users of Products. This functionality is used by Epic to improve the  Engine Code. You may modify the Engine Code under the License to turn off that functionality in your Product, or you may include in your Product the capability for your end users to turn off that functionality in the Product.
39
+
40
+and
41
+
42
+    You agree to keep accurate books and records related to your development, manufacture, Distribution, and sale of Products and related revenue. Epic may conduct reasonable audits of those books and records. Audits will be conducted during business hours on reasonable prior notice to you. Epic will bear the costs of audits unless the results show a shortfall in payments in excess of 5% during the period audited, in which case you will be responsible for the cost of the audit.
43
+
44
+
45
+The second one is a standard one, as you have to pay royalties depending on your revenues. But the first one is really concerning, as by default Unreal Engine will track your users and send anonymous statistics (thus requiring extra and unneeded permissions and raising privacy concerns). However, once you are aware of it, you can freely modify your app to prevent this, according to the EULA, so this is not a big deal in the end.
46
+
47
+
48
+## [Unity](http://unity3d.com/)
49
+
50
+Latest solution I found (used by [Monument Valley](http://www.monumentvalleygame.com/) for instance) is the Unity game engine. The personal license is sufficient in most of the cases, and is free to use up to 100k$ gross revenue. The dev tools are available on Windows and Mac, but there is no Linux version (and no hacky way to get it in Linux).
51
+
52
+
53
+Here are some relevant fragments from EULA as well:
54
+
55
+    (c) users will be required to complete a user survey to activate the Software. Unity Pro users who are not eligible to use Unity Personal may not develop and publish Licensee Content for the iOS and Android platforms without purchasing the applicable Unity Pro Add-On Product license. Unity may monitor your compliance with and enforce these restrictions and requirements including but not limited to monitoring the number of downloads of your Licensee Content and any available revenue estimate data.
56
+
57
+This one is not really clear, and I am not really sure of what it really implies. However, according to [http://unity3d.com/legal/eula](http://unity3d.com/legal/eula) and [https://unity3d.com/legal/privacy-policy](https://unity3d.com/legal/privacy-policy), it seems to imply that statistics are sent and that you cannot avoid it, even in the pro version.
58
+
59
+    We also include certain device data collection in the runtime of the Software which is incorporated into the applications you create with the software. You should be sure that your privacy policy explains to your players the variety of technical information that is collected and shared with third parties like Unity.
60
+
61
+and
62
+
63
+    Q: I play a game built with Unity software, what should I know?
64
+
65
+    A: Unity has probably collected some or all of the following information about your device: Unique device identifier generated from the device MAC/IMEI/MEID (which we immediately convert into a different number using a one way hash); IP address; Device manufacturer and model; the operating system and version running on your system or device; browser type; language; the make of the CPU, and number of CPUs present; the graphics card type and vendor name; graphics card driver name and version (example: "nv4disp.dll 6.10.93.71"); which graphics API is in use (example: "OpenGL 2.1" or "Direct3D 9.0c"); amount of system and video RAM present; current screen resolution; version of the Unity Player; version of the Unity Editor used to create the content; a number describing whether the player is running on Mac, Windows or other platforms; and a checksum of all the data that gets sent to verify that it did transmit correctly; application or bundle identification ("app id") of the game installed. Some Unity developers use Unity’s analytics and ad services which collect additional information. See FAQs on Unity Analytics and Unity Ads below.
66
+
67
+
68
+    Q: That seems like a lot of data, why so much?
69
+
70
+    A: We try to limit the collection of this information from any one player or device; however, certain operating systems do not permit us to note that the info has already been collected. This means that the data may be sent to Unity each time you start the game. We use the information to make decisions about which platforms, operating systems and versions of them should be supported by our game development software. We aggregate this data and make it available to developers at stats.unity3d.com. This data helps us improve our Services and helps developers improve their apps.
71
+
72
+
73
+    8. Your choices about Unity’s collection and use of your information
74
+
75
+        You always have the option to refrain from using the Service or to discontinue using the Service if you do not want information collected about you.
76
+
77
+
78
+They also explictly says in the FAQ that there is no opt-out, and the anonymous stats are indeed browsable at [http://stats.unity3d.com/mobile/](http://stats.unity3d.com/mobile/). In conclusion, contrary to Unreal Engine, I do not think you can easily prevent the engine from sending anonymous statistics, which is a pity in my opinion. Moreover, there are a number of threads talking about extra permissions required by Unity (such as network access to send the statistics) and there seems to be no way to not require those permissions and to still conform to the EULA: [http://answers.unity3d.com/questions/663197/how-to-prevent-unity-from-adding-permissions-to-an.html](http://answers.unity3d.com/questions/663197/how-to-prevent-unity-from-adding-permissions-to-an.html) and [http://forum.unity3d.com/threads/extra-permission-needed-in-android.295556](http://forum.unity3d.com/threads/extra-permission-needed-in-android.295556).