{"id":601,"date":"2016-05-09T09:36:57","date_gmt":"2016-05-09T09:36:57","guid":{"rendered":"http:\/\/demensdeum.com\/blog\/?p=601"},"modified":"2024-12-16T22:32:52","modified_gmt":"2024-12-16T19:32:52","slug":"tutorial-demons-cave-android-at-github","status":"publish","type":"post","link":"https:\/\/demensdeum.com\/blog\/fr\/2016\/05\/09\/tutorial-demons-cave-android-at-github\/","title":{"rendered":"Tutorial: Demon&#8217;s Cave Android At GitHub"},"content":{"rendered":"<p><strong>Happy victory day!<\/strong><\/p>\n<p>Today <a href=\"https:\/\/github.com\/demensdeum\/DemonsCaveAndroid\" target=\"_blank\">Demon&#8217;s Cave game code for Android<\/a> has been released at GitHub:<br \/>\n<a href=\"https:\/\/github.com\/demensdeum\/DemonsCaveAndroid\" target=\"_blank\">https:\/\/github.com\/demensdeum\/DemonsCaveAndroid<\/a><\/p>\n<p>I have no time right now for record YouTube tutorial, so here is short text version.<br \/>\nNow you can just download <a href=\"https:\/\/github.com\/demensdeum\/DemonsCaveAndroid\" target=\"_blank\">Demon&#8217;s Cave code<\/a> and compile on your machine.<br \/>\nWe are going to show Demens Deum Logo on top of Rajawali engine (OpenGL-ES 2.0)<\/p>\n<p>1. Download Demens Deum Logo png file<br \/>\n<a href=\"http:\/\/demensdeum.com\/games\/demonsCave\/data\/graphics\/demensdeumLogo.png\" target=\"_blank\">http:\/\/demensdeum.com\/games\/demonsCave\/data\/graphics\/demensdeumLogo.png<\/a><\/p>\n<p>2. Install Gimp, and<strong> flip image by horizontal<\/strong><\/p>\n<pre style=\"background: #fff; color: #3b3b3b;\">sudo apt-get install gimp\r\n<\/pre>\n<p>3. Add fullscreen activity settings<br \/>\nAdd this code to onCreate method of MainActivity.java class<\/p>\n<pre style=\"background: #fff; color: #3b3b3b;\"><span style=\"color: #ff5600;\">protected<\/span> <span style=\"color: #ff5600;\">void<\/span> onCreate(<span style=\"color: #ff5600;\">Bundle<\/span> savedInstanceState) {\r\n <span style=\"color: #0053ff; font-weight: bold;\">super<\/span><span style=\"color: #069; font-weight: bold;\">.<\/span>onCreate(savedInstanceState);\r\n getWindow()<span style=\"color: #069; font-weight: bold;\">.<\/span>setFlags(<span style=\"color: #ff5600;\">WindowManager<\/span><span style=\"color: #069; font-weight: bold;\">.<\/span><span style=\"color: #ff5600;\">LayoutParams<\/span><span style=\"color: #069; font-weight: bold;\">.<\/span>FLAG_FULLSCREEN, <span style=\"color: #ff5600;\">WindowManager<\/span><span style=\"color: #069; font-weight: bold;\">.<\/span><span style=\"color: #ff5600;\">LayoutParams<\/span><span style=\"color: #069; font-weight: bold;\">.<\/span>FLAG_FULLSCREEN);\r\n requestWindowFeature(<span style=\"color: #ff5600;\">Window<\/span><span style=\"color: #069; font-weight: bold;\">.<\/span>FEATURE_NO_TITLE);\r\n<\/pre>\n<p>Add\/replace those settings to res\/values\/styles.xml<\/p>\n<pre style=\"background: #fff; color: #3b3b3b;\"><span style=\"color: #7a7a7a;\">&lt;<span style=\"color: #016cff;\">resources<\/span>&gt;<\/span>\r\n\r\n<span style=\"color: #af82d4;\"><!-- Base application theme. --><\/span>\r\n<span style=\"color: #7a7a7a;\">&lt;<span style=\"color: #016cff;\">style<\/span> <span style=\"color: #963dff;\">name<\/span>=<span style=\"color: #666;\">\"AppTheme\"<\/span> <span style=\"color: #963dff;\">parent<\/span>=<span style=\"color: #666;\">\"Theme.AppCompat.Light.NoActionBar\"<\/span>&gt;<\/span>\r\n<span style=\"color: #af82d4;\"><!-- Customize your theme here. --><\/span>\r\n<span style=\"color: #7a7a7a;\">&lt;<span style=\"color: #016cff;\">item<\/span> <span style=\"color: #963dff;\">name<\/span>=<span style=\"color: #666;\">\"colorPrimary\"<\/span>&gt;<\/span>@color\/colorPrimary<span style=\"color: #7a7a7a;\">item<\/span>&gt;\r\n<span style=\"color: #7a7a7a;\">&lt;<span style=\"color: #016cff;\">item<\/span> <span style=\"color: #963dff;\">name<\/span>=<span style=\"color: #666;\">\"colorPrimaryDark\"<\/span>&gt;<\/span>@color\/colorPrimaryDark<span style=\"color: #7a7a7a;\">item<\/span>&gt;\r\n<span style=\"color: #7a7a7a;\">&lt;<span style=\"color: #016cff;\">item<\/span> <span style=\"color: #963dff;\">name<\/span>=<span style=\"color: #666;\">\"colorAccent\"<\/span>&gt;<\/span>@color\/colorAccent<span style=\"color: #7a7a7a;\">item<\/span>&gt;\r\n<span style=\"color: #7a7a7a;\">&lt;<span style=\"color: #016cff;\">item<\/span> <span style=\"color: #963dff;\">name<\/span>=<span style=\"color: #666;\">\"android:windowNoTitle\"<\/span>&gt;<\/span>true<span style=\"color: #7a7a7a;\">item<\/span>&gt;\r\n<span style=\"color: #7a7a7a;\">&lt;<span style=\"color: #016cff;\">item<\/span> <span style=\"color: #963dff;\">name<\/span>=<span style=\"color: #666;\">\"android:windowActionBar\"<\/span>&gt;<\/span>false<span style=\"color: #7a7a7a;\">item<\/span>&gt;\r\n<span style=\"color: #7a7a7a;\">&lt;<span style=\"color: #016cff;\">item<\/span> <span style=\"color: #963dff;\">name<\/span>=<span style=\"color: #666;\">\"android:windowFullscreen\"<\/span>&gt;<\/span>true<span style=\"color: #7a7a7a;\">item<\/span>&gt;\r\n<span style=\"color: #7a7a7a;\">&lt;<span style=\"color: #016cff;\">item<\/span> <span style=\"color: #963dff;\">name<\/span>=<span style=\"color: #666;\">\"android:windowContentOverlay\"<\/span>&gt;<\/span>@null<span style=\"color: #7a7a7a;\">item<\/span>&gt;\r\n&lt;<span style=\"color: #7a7a7a;\">style<\/span>&gt;\r\n\r\n&lt;<span style=\"color: #7a7a7a;\">resources<\/span>&gt;<\/pre>\n<p>4. Initialize Camera2D<br \/>\nAdd private value to Renderer.class<\/p>\n<pre style=\"background: #fff; color: #3b3b3b;\"><span style=\"color: #069; font-weight: bold;\">import<\/span> <span style=\"color: #ff5600;\">org.rajawali3d.cameras.Camera2D<\/span>;\r\n<\/pre>\n<p>Add new method to initialize Camera2d<\/p>\n<pre style=\"background: #fff; color: #3b3b3b;\">\u00a0\u00a0\u00a0 <span style=\"color: #ff5600;\">protected<\/span> <span style=\"color: #ff5600;\">void<\/span> initializeCamera() {\r\ngameCamera <span style=\"color: #069; font-weight: bold;\">=<\/span> <span style=\"color: #069; font-weight: bold;\">new<\/span> <span style=\"color: #ff5600;\">Camera2D<\/span>();\r\n\r\ngetCurrentScene()<span style=\"color: #069; font-weight: bold;\">.<\/span>addCamera(gameCamera);\r\ngetCurrentScene()<span style=\"color: #069; font-weight: bold;\">.<\/span>switchCamera(gameCamera);\r\n}\r\n<\/pre>\n<p>5. Add Plane primitive with demensdeum_logo.png image to Scene<br \/>\nAdd new private value Plane to Renderer.java class<\/p>\n<pre style=\"background: #fff; color: #3b3b3b;\">\u00a0\u00a0\u00a0 <span style=\"color: #ff5600;\">private<\/span> <span style=\"color: #ff5600;\">Plane<\/span> plane;\r\n<\/pre>\n<p>Add new method to initialize Plane<\/p>\n<pre style=\"background: #fff; color: #3b3b3b;\">\u00a0\u00a0\u00a0 <span style=\"color: #ff5600;\">protected<\/span> <span style=\"color: #ff5600;\">void<\/span> initializePlane() {\r\n<span style=\"color: #ff5600;\">Material<\/span> material <span style=\"color: #069; font-weight: bold;\">=<\/span> <span style=\"color: #069; font-weight: bold;\">new<\/span> <span style=\"color: #ff5600;\">Material<\/span>();\r\nmaterial<span style=\"color: #069; font-weight: bold;\">.<\/span>enableLighting(<span style=\"color: #a535ae;\">false<\/span>);\r\nmaterial<span style=\"color: #069; font-weight: bold;\">.<\/span>setDiffuseMethod(<span style=\"color: #069; font-weight: bold;\">new<\/span> <span style=\"color: #ff5600;\">DiffuseMethod<\/span>.<span style=\"color: #ff5600;\">Lambert<\/span>());\r\nmaterial<span style=\"color: #069; font-weight: bold;\">.<\/span>setColor(<span style=\"color: #a8017e;\">0<\/span>);\r\n\r\n<span style=\"color: #ff5600;\">Texture<\/span> earthTexture <span style=\"color: #069; font-weight: bold;\">=<\/span> <span style=\"color: #069; font-weight: bold;\">new<\/span> <span style=\"color: #ff5600;\">Texture<\/span>(<span style=\"color: #666;\">\"Earth\"<\/span>, <span style=\"color: #ff5600;\">R<\/span><span style=\"color: #069; font-weight: bold;\">.<\/span>drawable<span style=\"color: #069; font-weight: bold;\">.<\/span>demensdeum_logo);\r\n<span style=\"color: #069; font-weight: bold;\">try<\/span>{\r\nmaterial<span style=\"color: #069; font-weight: bold;\">.<\/span>addTexture(earthTexture);\r\n\r\n} <span style=\"color: #069; font-weight: bold;\">catch<\/span> (<span style=\"color: #ff5600;\">ATexture<\/span><span style=\"color: #069; font-weight: bold;\">.<\/span><span style=\"color: #ff5600;\">TextureException<\/span> error){\r\n<span style=\"color: #ff5600;\">Log<\/span><span style=\"color: #069; font-weight: bold;\">.<\/span>d(<span style=\"color: #666;\">\"DEBUG\"<\/span>, <span style=\"color: #666;\">\"TEXTURE ERROR\"<\/span>);\r\n}\r\n\r\nplane <span style=\"color: #069; font-weight: bold;\">=<\/span> <span style=\"color: #069; font-weight: bold;\">new<\/span> <span style=\"color: #ff5600;\">Plane<\/span>(<span style=\"color: #a8017e;\">1<\/span>, <span style=\"color: #a8017e;\">1<\/span>, <span style=\"color: #a8017e;\">2<\/span>, <span style=\"color: #a8017e;\">2<\/span>);\r\nplane<span style=\"color: #069; font-weight: bold;\">.<\/span>setPosition(<span style=\"color: #a8017e;\">0<\/span>,<span style=\"color: #a8017e;\">0<\/span>,<span style=\"color: #a8017e;\">0<\/span>);\r\nplane<span style=\"color: #069; font-weight: bold;\">.<\/span>setMaterial(material);\r\n}\r\n<\/pre>\n<p>Add changes to scene initialization code:<\/p>\n<pre style=\"background: #fff; color: #3b3b3b;\">@<span style=\"color: #ff5600;\">Override<\/span>\r\n<span style=\"color: #ff5600;\">protected<\/span> <span style=\"color: #ff5600;\">void<\/span> initScene() {\r\ninitializeCamera();\r\ninitializePlane();\r\n\r\ngetCurrentScene()<span style=\"color: #069; font-weight: bold;\">.<\/span>addChild(plane);\r\ngetCurrentCamera()<span style=\"color: #069; font-weight: bold;\">.<\/span>setZ(<span style=\"color: #a8017e;\">200.2f<\/span>);\r\n}\r\n<\/pre>\n<p>6. Add demensdeum_logo.png into res\/drawable directory<br \/>\n7. Compile and run on your android device!<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"image-shadow alignnone wp-image-610 size-full\" src=\"https:\/\/demensdeum.com\/blog\/wp-content\/uploads\/2016\/05\/screenshots.png\" alt=\"screenshots\" width=\"960\" height=\"540\" srcset=\"https:\/\/demensdeum.com\/blog\/wp-content\/uploads\/2016\/05\/screenshots.png 960w, https:\/\/demensdeum.com\/blog\/wp-content\/uploads\/2016\/05\/screenshots-300x169.png 300w, https:\/\/demensdeum.com\/blog\/wp-content\/uploads\/2016\/05\/screenshots-768x432.png 768w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/><\/p>\n<p>You will see Demens Deum company logo on your android device. If it&#8217;s flipped by horizontal, just flip it in Gimp first.<br \/>\nOr (for advanced users) try to use last Rajawali engine, this is <a href=\"https:\/\/github.com\/Rajawali\/Rajawali\/issues\/1561\" target=\"_blank\">known issue<\/a>.<\/p>\n<p>If you have questions, <a href=\"http:\/\/demensdeum.com\/blog\/2015\/12\/19\/about-us\/\" target=\"_blank\">just ask me<\/a>.<br \/>\nKeep learning!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Happy victory day! Today Demon&#8217;s Cave game code for Android has been released at GitHub: https:\/\/github.com\/demensdeum\/DemonsCaveAndroid I have no time right now for record YouTube tutorial, so here is short text version. Now you can just download Demon&#8217;s Cave code and compile on your machine. We are going to show Demens Deum Logo on top<a class=\"more-link\" href=\"https:\/\/demensdeum.com\/blog\/fr\/2016\/05\/09\/tutorial-demons-cave-android-at-github\/\">Continue reading <span class=\"screen-reader-text\">&#8220;Tutorial: Demon&#8217;s Cave Android At GitHub&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[52],"tags":[44,14,42,43,40,38],"class_list":["post-601","post","type-post","status-publish","format-standard","hentry","category-tutorials","tag-camera2d","tag-demensdeum","tag-github","tag-logo","tag-rajawali","tag-tutorial","entry"],"translation":{"provider":"WPGlobus","version":"3.0.2","language":"fr","enabled_languages":["en","ru","zh","de","fr","ja","pt"],"languages":{"en":{"title":true,"content":true,"excerpt":false},"ru":{"title":true,"content":true,"excerpt":false},"zh":{"title":false,"content":false,"excerpt":false},"de":{"title":false,"content":false,"excerpt":false},"fr":{"title":false,"content":false,"excerpt":false},"ja":{"title":false,"content":false,"excerpt":false},"pt":{"title":false,"content":false,"excerpt":false}}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/posts\/601","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/comments?post=601"}],"version-history":[{"count":16,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/posts\/601\/revisions"}],"predecessor-version":[{"id":665,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/posts\/601\/revisions\/665"}],"wp:attachment":[{"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/media?parent=601"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/categories?post=601"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/tags?post=601"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}