tag:blogger.com,1999:blog-84063843679725014512024-03-13T20:14:51.085-07:00Neutronio GamesAbout Games, Gamedev, & Motivationb5cullyhttp://www.blogger.com/profile/18226073714178896899noreply@blogger.comBlogger47125tag:blogger.com,1999:blog-8406384367972501451.post-36697688426596062922017-02-24T09:57:00.000-08:002017-03-03T14:42:45.430-08:00Don't be this kind of Developer!<style>
div.spoiler{
background: #c1c1c1;
color: #c1c1c1;
}
div.spoiler:hover{
color: black;
}
span.ng_spoiler{
background: #c1c1c1;
color: #c1c1c1;
}
span.ng_spoiler:hover{
color: black;
}
extended_list {
padding: 20px;
}
hr.ng_content {
margin-top: 32px;
margin-bottom: 32px;
}
div.ng_quote {
//border: 1px solid black;
margin: 15px;
padding: 10px;
background: rgba(255,255,255,0.7);
color: #5D385D;
outline-color: white;
outline-style: dotted;
text-align: center;
font-style: italic;
text-shadow: 1px 1px gray;
}
div.ng_intro {
background: rgba(255,255,255,0.2);
padding: 5px;
margin: 5px;
font-style: italic;
word-spacing: 4px;
letter-spacing: 2px;
text-align: justify;
line-height: 1.6;
}
p {
text-indent: 20px;
}
a.ng_crosslink {
//margin: 20px;
//padding: 10px;
//border: 1px dotted gray;
text-decoration: none;
text-align: center;
font-style: italic;
}
h1 {
text-align:center;
}
h2 {
text-align:center;
}
h3 {
text-align:center;
}
h4 {
text-align:center;
}
h5 {
text-align:center;
}
</style>
<div class="ng_intro">
<p>
Ever tried this? Planning out your entire gamedev project - at once. In every little detail.
<br />
I tried doing so - with Hack n Plan. I laid out the entire array of features as detailed as I could. It was nice in that it helped me how large it will become.
However: It did not work out at all for me. After a while, I found myself overwhelmed by the volume of tasks I've set up and ended up demotivated enough
to never touch that Hack n Plan project again.<span class="ng_spoiler">User error doesn't make the tool bad, however.</span>
</p>
</div>
<br />
<h3>So what was the problem here?</h3>
<br />
<br />
I cannot focus because of too much clutter! And I'm clutter-minded already:
<br />
<br />
It starts with detailed and seemingly endless todo-lists. If I don't clean up and these lists grow to large, this is what happens in my head:
<br />
<br />
<div class="ng_quote">
Out of 1000 important tasks let's pick the least important one because fuck progress!
</div>
<div class="ng_quote">There is SO MUCH to do!</div>
<div class="ng_quote">Where the hell am I going to even start, oh my god, oh my god</div>
<div class="ng_quote">Before I work this long list, let's take a look at this game I haven't played in forever!</div>
<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://4.bp.blogspot.com/-dVUgxPEuIbY/WK92-a1zzeI/AAAAAAAAARo/JD2bMzj0ntM3Hh3gJeD6G_ZZF_d-xDPAgCEw/s1600/tumblr_nw4vfyES431u9bgp9o1_250.gif" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://4.bp.blogspot.com/-dVUgxPEuIbY/WK92-a1zzeI/AAAAAAAAARo/JD2bMzj0ntM3Hh3gJeD6G_ZZF_d-xDPAgCEw/s1600/tumblr_nw4vfyES431u9bgp9o1_250.gif" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Developer meltdowns are BAD.</td></tr>
</tbody></table>
<br />
<hr class="ng_content" />
<a class="ng_crosslink" href="https://neutroniogames.blogspot.de/2016/05/7-ways-to-boost-your-productivity.html">READ: Ways to boost your productivity</a>
<hr class="ng_content" />
<br />
<br />
<h3>What one must do is to trick oneself into working and getting comfortable with what one is doing.</h3>
<br />
<br />
That means, getting rid of all things that's preventing you from doing it: tuning down on the "lazyness threshold"; fostering a habit that comfortably enables you to get shit done. Like, going to the gym that just happens to be on your way home when calling it a day.
<br />
<br />
Something similar can be done using this <b>5-step-iterative approach</b>:
<ol>
<li>
Evaluate
</li>
<li>
Structure
</li>
<li>
Implement
</li>
<li>
Take Notes
</li>
<li>
Repeat
</li>
</ol>
<br />
<h3>How does it work?</h3>
<br />
<hr class="ng_content" />
<ol class="extended_list">
<li> <b>Evaluate</b> the current state of your project: find out what bugs exist and what still needs work.</li>
<hr class="ng_content" />
<li> <b>Structure</b> the current iteration.
<p>
Create a todo list consisting roughly of:
<ul>
<li> 10% new features </li>
<li> 30% extending existing features/improving user experience </li>
<li> 60% bug fixes </li>
</ul>
If you have a list from step 5 in a previous iteration, use that list as basis for bug fixes and extensions.
<br />
New features should be a lower priority; if they are "spontaneous features": <b>Get rid of them. </b><i>NOW. KILL IT WITH FIRE.</i>)
<br />
Ensure the extensions/features/bugfixes are meaningful and leading you to your goal; which is finishing your game in time - NOT playing with your game mechanics until it's perfect which it will never be.
</ul>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-4W4uf0uf2po/WK9qcgcMCKI/AAAAAAAAARU/9nhChalO65AdxrVJIYWow4KbVPRZdtxFgCLcB/s1600/dont%2Bbe%2Bthis%2Bkind%2Bof%2Bdeveloper.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; margin: 20px"><img border="0" height="218" src="https://3.bp.blogspot.com/-4W4uf0uf2po/WK9qcgcMCKI/AAAAAAAAARU/9nhChalO65AdxrVJIYWow4KbVPRZdtxFgCLcB/s320/dont%2Bbe%2Bthis%2Bkind%2Bof%2Bdeveloper.png" width="320" /></a>
</p>
</li>
<hr class="ng_content"/>
<li><b>Implement</b> the todo list.
<p>Do it blindly. Do not think much. Do Shia a favor and <i>JUST DO IT</i>.</p>
</li>
<hr class="ng_content"/>
<li> While implementing, <b>take notes</b> for the next iteration:
<p>
<ul>
<li> Bugs </li>
<li> Issues </li>
<li> UX improvements </li>
<li> Code refactoring </li>
</ul>
Avoid adding new features to this list AT ALL COSTS
</p>
</li>
<hr class="ng_content"/>
<li>
<b>Repeat.</b>
</li>
</ol>
<hr class="ng_content" />
<h3> How can you implement that into your work flow?</h3>
<p>
I've started to treat the <b>changelog as my todo list</b> when I am in step 2 (Structure). I will take notes there to <b>solve problems</b> or <b>figure out</b> how to implement or improve features. When I'm <b>done implementing</b> a feature, I remove the implementation notes and <b>reword the feature for normal folk (gamers)</b> to read and understand.
</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-pxw4vPamXVM/WK94Hn0WVkI/AAAAAAAAARw/HaB17FsZ_84bMntiAUMNNVzqC8SOTH4kwCLcB/s1600/changelog.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; margin: 10px"><img border="0" height="279" src="https://3.bp.blogspot.com/-pxw4vPamXVM/WK94Hn0WVkI/AAAAAAAAARw/HaB17FsZ_84bMntiAUMNNVzqC8SOTH4kwCLcB/s320/changelog.png" width="320" /></a>
</div>
<p>
For step 3 and 4, <b>taking notes while implementing</b>, I have started to use a <b>separate text file for bugs and issues</b> I encounter in this iteration. I keep this one seperate from <i>ideas</i> for features. The file with ideas is the most spontaneous one and consequently its priority should be very low to zero.
<br />
So I don't lose track of what was done, these three files are included in my <b>git repository</b> and are <b>regularly committed</b>.
</p>
<p>
All these measures help me control the <b>flow of features</b> into my game. Ever since I've been applying this I haven't implemented new ones - most of what I do right now is improving the user experience. It seems to work well - or at the very least: better. :)
</p>
<br />
<br />
<b>
Do you have any ways to conquer your inner lazy demons? Share your story in the comments or hook me up <a href="https://twitter.com/b5cully">on twitter</a>!
</b>
<hr class="ng_content" />
<a class="ng_crosslink" href=" https://neutroniogames.blogspot.de/2016/06/get-out-of-your-comfy-zone.html">READ: The benefits of getting out of your comfort zone</a>
<hr class="ng_content" />
b5cullyhttp://www.blogger.com/profile/18226073714178896899noreply@blogger.com1tag:blogger.com,1999:blog-8406384367972501451.post-47916881825346234172017-02-19T13:29:00.002-08:002017-02-19T13:32:50.993-08:00Interface design sucks and here is why<b>You likely came here because you also had that experience: Creating an interface for a client or software, just to proceed to do tedious coding work.</b><br />
<br />
Sometimes that frustration is caused by dull coding: the kind of code you've done a dozen of times before in slightly different configurations. Creating getters and setters, adding listeners to buttons, blah blah blah.<br />
Then again other times, it's simply a lack of knowledge and perhaps communication with the users on how to do things better. <br />
<br />
In other words, UI design (often) both sucks for us programmers, who have to make it and do not like it, and for the users, who have to use the half-assed programs created by demotivated programmers.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-U2M8FAVo5-c/WKoJRbTo8rI/AAAAAAAAAQY/Yck5iHZIsPgAlBREpMSfu2WgEiiAoP6AgCLcB/s1600/smiley.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://3.bp.blogspot.com/-U2M8FAVo5-c/WKoJRbTo8rI/AAAAAAAAAQY/Yck5iHZIsPgAlBREpMSfu2WgEiiAoP6AgCLcB/s1600/smiley.png" /></a></div>
<br />
<div style="text-align: center;">
<br />
Programmers aren't necessarily designers, after all, right?<br />
<br /></div>
<div style="text-align: center;">
</div>
<br />
<b>So how can you make your life a bit easier as a programmer? I've summarized the following tips which I have collected via trial and error and pinches of design experience:</b><br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<ol>
<li><b>Group together</b> what from a user's view <b>logically belongs together</b>.<br /><br /></li>
<li><b>Visually separate</b> <b>actions</b> that are <b>functionally different</b>: don't place a delete button right next to an add button.<br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://1.bp.blogspot.com/-FzCALPybs3c/WKoM-nafIII/AAAAAAAAAQs/kSvkSzImjykyj1bTBzkJfbzAIO3xPuCEQCLcB/s1600/interface.png" style="margin-left: auto; margin-right: auto;"><img border="0" height="291" src="https://1.bp.blogspot.com/-FzCALPybs3c/WKoM-nafIII/AAAAAAAAAQs/kSvkSzImjykyj1bTBzkJfbzAIO3xPuCEQCLcB/s640/interface.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">The box on the right would make multiple problems. One is: what happens if the user clicked on the remove button instead of add?</td></tr>
</tbody></table>
<br /></li>
<li><b>Critical actions</b>, like removing data or changing a large set of data, need a <b>higher use-threshold</b> e.g. via a dialog: "Are you sure to do that...?". Those are the kind of actions you don't want to happen if you click on them by accident.<br /><br /></li>
<li><b>Important actions should be highlighted</b> through movement, form, shape and color. Like this you can control the flow of your user's attention - and where they are likely to click next.<br /><br /></li>
<li><b>Meaningful usage of icons</b> can increase the <b>intuitiveness</b> of your software - but don't overdo it. <a href="https://i.ytimg.com/vi/JcKTHPbu5GQ/maxresdefault.jpg">PaintShop Pro is basically bloated with them</a> and here they are more confusing than helping.<br /><br /></li>
<li><b>The look and design</b> of your components should be <b>aesthetically coherent</b>. Think of it like this: In code, you set the rules for your code, how it looks like via style guides and so on. This is in fact very similar to interface design: you can also set a visual rules here and apply them your components: e.g. all interactive components like buttons, menus should be blue, background stays white. <br /><br /><a href="http://neutroniogames.blogspot.com/2016/06/color-theory-for-programmers_18.html">Read: How to chose a proper color scheme for your interface?</a><br /><br /></li>
<li><b>Do not overload your interface with components or buttons.</b> Instead, make information toggleable from display and use meaningful sub-menus, while keeping those sub-menus as accessible as possible, e.g. via shortcuts. Ideally, a single sub-menu should be like a red-black tree with a maximum depth of 3 to 4.<br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://4.bp.blogspot.com/-d-9K-VWAMlY/WKoNiyM4i5I/AAAAAAAAAQw/SHC9y9KQxWE0O7hUWrfKn4WHuP-h0YyJQCLcB/s1600/menu%2Bdepth.png" style="margin-left: auto; margin-right: auto;"><img border="0" height="400" src="https://4.bp.blogspot.com/-d-9K-VWAMlY/WKoNiyM4i5I/AAAAAAAAAQw/SHC9y9KQxWE0O7hUWrfKn4WHuP-h0YyJQCLcB/s400/menu%2Bdepth.png" width="356" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Menus like this often don't have a depth more than two or three.</td></tr>
</tbody></table>
<br /><br /></li>
<li><b>The more</b> a user uses a function, button or component in a program, the <b>more accessible it should be</b>. This helps the user's workflow and makes your software easier to use.<br /><br /></li>
<li>Give users the possibility to <b>customize views </b>so they can adapt the software to their special needs and workflow.<br /><br /></li>
<li>Support the users by <b>assistants</b>, <b>in-app hints </b>or<b> tooltip texts</b>.</li>
</ol>
<br />
I hope you found these tips helpful. You are more welcome to add more suggestions in the comments! <br />
<br />
Thanks for reading! <br />
<ol>
</ol>
<br />b5cullyhttp://www.blogger.com/profile/18226073714178896899noreply@blogger.com0tag:blogger.com,1999:blog-8406384367972501451.post-5961895137452284982016-09-30T13:49:00.001-07:002017-02-23T17:28:17.249-08:00How Games Can Teach You that You're the Most Valuable Asset You haveA while ago, I started a new game in 7 Days to Die. For those who don't know: it's a game similar to Minecraft, just harder and with zombies that tear off your house. I enjoy playing it because of that difficulty.<br />
<br />
<h3>
A New Home</h3>
<br />
I spent a few hours creating a nice base, grinding all the resources required to make it. The design I was using I have trialed and tested. It provided a good basic shelter.<br />
<br />
It was a basically a roofed platform, supported by four pillars, each one about 4 blocks thick. In the middle below the platform, I would usually place some spikes. And when the hordes come, place myself in the middle of the platform with the zeds following me (they will be leaving the pillars alone).<br />
<br />
It was a stable design and easy to maintain. Sadly I didn't make any pics. <br />
<br />
<h3>
A Terrible Mistake</h3>
<br />
And so it was, the base was almost done. I just got done placing the roof, but I left the blocks in the middle unfinished. I made the base extra large this time to fit my needs.<br />
<br />
This turned out to be a terrible mistake.<br />
<br />
So it was horde night with an extra dose of zombies that spawn and are out to get you. And the moment I placed a torch in the middle of my platform, my entire house started falling apart.<br />
<br />
First the wood in the middle.<br />
<br />
Then ate its way to the outside. <br />
<br />
With a horde of +30 zombies down below me.<br />
<br />
Leaving only the stone pillars on the edges.<br />
<br />
<h3>
Everything was in vain...</h3>
<br />
I too, fell down as my house collapsed. I was in shock because the base I spent hours just completely vanished. Including all my stuff I had in my chest, which too was destroyed.<br />
<br />
Quite frankly, I ragequit very soon after. I mean, with +30 running zombies going to get you, you can prepare your bum to run or die. Normally the latter. Repeatedly. Because you have limited stamina and the night is long. And that's no fun.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-Xhpott20MJ4/V-7QVhoacRI/AAAAAAAAAP0/PrMbdjkFkcIUnUctpjOFBufOYzexu_-iACLcB/s1600/20160930225028_1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="225" src="https://1.bp.blogspot.com/-Xhpott20MJ4/V-7QVhoacRI/AAAAAAAAAP0/PrMbdjkFkcIUnUctpjOFBufOYzexu_-iACLcB/s400/20160930225028_1.jpg" width="400" /></a></div>
<div style="text-align: center;">
<span style="font-size: x-small;">FFS I can't see shit pls help :'((</span></div>
<br />
(Before continuing, you must know that 7 Days to Die has its own skill system. So even if you die, you keep all your skills and crafting recipes.)<br />
<br />
<h3>
...or was it? A Realization</h3>
<br />
So recently, I got back to this saved game. What happened next is very interesting. <br />
<br />
It was still horde night with those many zombies coming for me. Just as I left it. I already died once and respawned somewhere random. My bed at my base collapsed too so I was practically homeless. However as I ran through the night, not knowing where to go or to escape the horde, I had a realization:<br />
<br />
<ul>
<li>Despite of all materials I lost -</li>
<li>Despite of the home that I lost -</li>
<li>Despite of the lost time that I spent gathering and building...</li>
</ul>
<br />
...I still had my skills, my recipes, a partially explored map. <i>The knowledge to create things better and safer.</i><br />
<br />
<div style="text-align: center;">
<span style="font-size: large;"><b>And then it occurred to me: this is exactly how real life works.</b></span></div>
<br />
You can lose everything and still have everything - <i>for the sole fact that you still have yourself:</i><br />
<br />
The knowledge, skill, talent to create and rebuild.<br />
<br />
<b>You are the most valuable asset you have.</b><br />
<br />
Thanks for reading!b5cullyhttp://www.blogger.com/profile/18226073714178896899noreply@blogger.com0tag:blogger.com,1999:blog-8406384367972501451.post-70481012089344595812016-09-18T07:31:00.003-07:002017-02-23T17:48:14.279-08:006 Tipps Boosting Your Productivity With HackNPlanThe tool Hack 'N' Plan is a very sophisticated project managing tool <a href="http://hacknplan.com/">made by gamedevs for gamedev</a>s. I have been working with it for about 5 months and my productivity sparked ever since. I am more focused and notice when my game is suffering from the infamous scope creep syndrome.<br />
<br />
In the following I want to present you 5 tipps how to work with this piece of software. These may work without making use of Hack 'N' Plan, too!<br />
<br />
<hr />
<ol>
<li><b>Plan out the most important features first.</b> Focus on those.<br /><br /></li>
<li><b>Avoid spontaneously added tasks as much as possible.</b>Bugs and improvements of existing code/assets are an exception. This serves mainly the purpose to prevent a scope creep. I know it's tempting to add one idea after the other, but like this you will never get your game done. Ever.<br /><br /></li>
<li><b>Use the game model feature to set a design direction</b>(e.g. game mechanics you want to have). This will be your focus. Do not add tasks that do not support your game model (except bug fixing)! Push them down the abyss of the forgotten mercilessly if you find any. <br /><br /><a href="https://1.bp.blogspot.com/-Z_c5g_dz_o4/V96iST0sNiI/AAAAAAAAAPg/ivwNMVZEd3U6Aj-t3I6XJFuynFnlcrRJQCLcB/s1600/Game%2BDesign%2BModel.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="292" src="https://1.bp.blogspot.com/-Z_c5g_dz_o4/V96iST0sNiI/AAAAAAAAAPg/ivwNMVZEd3U6Aj-t3I6XJFuynFnlcrRJQCLcB/s640/Game%2BDesign%2BModel.png" width="640" /></a><br /><br />Or just dump sidetracking tasks into a "unimportant brainfarts" milestone if you're not a ruthless task-murderer like me.<br /><br /><a href="https://1.bp.blogspot.com/-kKpgbryPYVY/V96iSMx9ITI/AAAAAAAAAPc/4UuijSn3tIoxDyvxFJzTQQI2FJDPj76UwCEw/s1600/Misc%2Bbullshit.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="253" src="https://1.bp.blogspot.com/-kKpgbryPYVY/V96iSMx9ITI/AAAAAAAAAPc/4UuijSn3tIoxDyvxFJzTQQI2FJDPj76UwCEw/s320/Misc%2Bbullshit.png" width="320" /></a><br /><br />In fact, I'm still trying to find a most effective way on how to use this.<br /><br /></li>
<li><b>Make many milestones with small scope.</b>Keep it 10 tasks and below, add a max of 5 tasks spontaneously (thus a maximum of 15 tasks in total). You need ruthless focus and this will help you establish it.<br /><br /></li>
<li><b>Cut tasks into the smallest chunks.</b>You don't have to (and shouldn't) plan out every detail of your project, but if you notice you need more tasks, make them small.<br /><br /></li>
<li><b>Group together tasks that cover a similar topic.</b>Not doing so has a chance of making you feel scatter-headed because you are jumping from one section in your code to the other. This is ok when you fix bugs, but not when you need focus to do progress.<br /><br />Do not make a clutter like this:<br /><br /><a href="https://3.bp.blogspot.com/-ABnMfXdgye4/V96iSCwi5LI/AAAAAAAAAPY/sdf07knvC0MFCMfc6CBkdvEP2SGkhldtwCEw/s1600/Clutter.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="395" src="https://3.bp.blogspot.com/-ABnMfXdgye4/V96iSCwi5LI/AAAAAAAAAPY/sdf07knvC0MFCMfc6CBkdvEP2SGkhldtwCEw/s400/Clutter.png" width="400" /></a><br /><br />...but keep it more like this. <br /><br /><a href="https://2.bp.blogspot.com/-zen92yMBYOc/V96iSSFEqDI/AAAAAAAAAPk/3u7iuMfuFoQNj19PNG2zxfKGBFDm2MwSACEw/s1600/ordered.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://2.bp.blogspot.com/-zen92yMBYOc/V96iSSFEqDI/AAAAAAAAAPk/3u7iuMfuFoQNj19PNG2zxfKGBFDm2MwSACEw/s400/ordered.png" width="227" /></a><br /><br />Those are all UI-tasks I got done very quickly because I grouped them ruthlessly. Kept the scope of these tasks small, too.</li>
</ol>
<br />
I hope this helped with your gamedev endeavours. Keep on rocking, keep on coding!<br />
<br />b5cullyhttp://www.blogger.com/profile/18226073714178896899noreply@blogger.com0tag:blogger.com,1999:blog-8406384367972501451.post-48078806029600195562016-09-18T06:48:00.000-07:002017-02-23T17:26:09.229-08:00How Introverts and Extroverts can get alongI have a very close friend of mine who I have been friends for almost a decade. We couldn't be more different, as he is mostly extroverted, a persuader, a good joke teller, and I am more of an introvert who is shy and withdrawn. But despite of that, we get along very well. Heres some tipps on how (these points may pose as dating advice too).<br />
<br />
<br />
<table style="border: 1px; text-align: left;">
<tbody>
<tr>
<th>Extroverts dealing with Introverts</th>
<th>Introverts dealing with Extroverts</th>
</tr>
<tr>
<td><br />
Introverts need a lot of time to process what happens around them as they feel often uneasy and overwhelmed by a sudden influx of attention, or information. Give them time to think and process what you are saying. If you overload them too much, they may try to escape and avoid any further conversation. To them, this is the natural way of dealing with things. They may be able to react better and give you more useful information the next time as they may have processed the previous conversation and prepared themselves for it. So for you when discussing important issues, it may be better to approach them twice.<br />
They also may say something to you, but the fact they are not repeating that doesn't mean they stopped thinking that way, e.g. when you do something they do not like. They won't say anything, but that doesn't mean they suddenly started liking it. When an introvert says something to you, you should generally take it seriously - they do not say it primarily to persuade or negotiate with you, they say it because it's the way it is. But even then, they may something very clumsily and come off wrong saying something completely different than they wanted to say. It's hard for them and it's even harder to read them right, but that's why it's important to communicate.</td>
<td>Not everything extroverts say is objectively truthful. They exaggerate or sugarcoat things to persuade you, get you into doing something, test you, figure you out, or simply to get out of trouble. That's not a bad thing at all - just a reminder for an introvert that they may say things that seem negative to you, when its them trying to gain your support or trust. Sometimes lying is the right way for them to do this, too. This may seem wrong from a introvert's point of view. From the outside, introverts often communicate on a very factual level, and want to say whats important and true, while extroverts focus on negotiating and persuading. I think that's something you can learn from an extrovert. Market yourself better!</td>
</tr>
<tr>
<td><br />
<br />
Introverts only say something when its absolutely necessary, when it constructively contributes to the discussion, and when they want to enhance it with meaning. They are often quiet observers. They acknowledge what is being said, but they do not chose to comment on it. They enjoy having their thoughts for themselves as it deflects undesired attention that makes them feel uneasy. If you as an extrovert want to have a meaningful conversation with an introvert, you should chose a quiet place with not too many people around you, ideally just you and the introvert. If they feel comfortable with you, they may open up and tell you their deepest secrets. Once they are familiar with you, they will not get enough from your attention.
</td>
<td>This is probably one of the hardest to understand for an introvert. An extrovert generally carries their thoughts and emotions outwards. So if an extrovert is mad or angry, they will let everyone know they are. But that's reckless and unfair to take out your anger on others, right? As long as they aren't taking it too far, no. It is really just the way they deal with their feelings and thoughts. They often don't even know what tumult they may cause in an introvert by directing their emotion towards them. So next time you find yourself in this situation ask yourself: did they really mean that or could they not find another way of processing their emotions?
</td>
</tr>
<tr>
<td>The fact that introverts are easily overwhelmed with information, causes them to require a lot of time for themselves, putting a lot of energy to reflect and process what is happening around them. Because of this, introverts do not have this much energy and often appear lazy. They also do not like it when you tell them they are lazy - when in fact their mind is in a "healing state" of daydreaming, thinking about the world, and doing mind experiments in their heads. They need this to stay sane in this insane world. Since their attention and energy is so limited, its truly a gift to be in the world of an introvert.
</td>
<td>Extroverts like attention. A lot. They like to be around people because it gives them security and confidence. They love their community and are devoted to keep it strong and motivated. They enjoy hearing praise when they did a good job, because this is the language they speak. And that's exactly the catch as an introvert: How do you compete with all these people for an extrovert's attention? How do you do appreciate an extrovert's friendship when you're directing your thoughts and emotions inward? So the best thing you can do about maintaining a friendship with an extrovert, is to show or tell them you want them as a friend as often as you can (and feel is appropriate) by complimenting them, approaching them, offering them support etc. etc. I know for one that I often have positive thoughts about people, but I am voicing that too rarely. Be more open towards your extroverts. Of course, it has to be the right person in the right moment (which can be hard to figure out as an introvert) - but they will appreciate it.
</td>
</tr>
</tbody></table>
b5cullyhttp://www.blogger.com/profile/18226073714178896899noreply@blogger.com0tag:blogger.com,1999:blog-8406384367972501451.post-11643511226963975342016-08-27T07:56:00.000-07:002017-02-23T17:28:54.626-08:00Vote & Help Developing CamoTactics!<br />
Involving the gaming community is important making a great game. For this purpose I have created two polls that allow you to share your thoughts on CamoTactics.<br />
<br />
<br />
<br />
<table border="0" style="padding: 5px;">
<tbody>
<tr>
<td><h4>
Future Content</h4>
<br />
The first poll is all about future content to be added to the game.
You can<a href="https://goo.gl/forms/0NqIKUBvmiVyYOwA3"> give it a shot on Google Forms</a>. By filling this out you help me focusing on the feature you would like to play most. Make sure to share your ideas, no matter how silly they may sound! They may lead to other interesting ideas. :)
</td>
<td><a href="https://3.bp.blogspot.com/-k5xMrn5KZgo/V8GlWhrePcI/AAAAAAAAAO8/BOiyGCa7SjkT7iZHyKbdHaj2gsMI2m7LQCLcB/s1600/Poll%2B1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="185" src="https://3.bp.blogspot.com/-k5xMrn5KZgo/V8GlWhrePcI/AAAAAAAAAO8/BOiyGCa7SjkT7iZHyKbdHaj2gsMI2m7LQCLcB/s200/Poll%2B1.png" width="200" /></a></td>
</tr>
<tr>
<td><br /></td>
</tr>
<tr>
<td><a href="https://4.bp.blogspot.com/-qPPZs28kVy0/V8GlWjgN4sI/AAAAAAAAAO4/KcEmGqHd3QMIvgZt2j0lfaETTJRQa68BwCLcB/s1600/Poll%2B2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="185" src="https://4.bp.blogspot.com/-qPPZs28kVy0/V8GlWjgN4sI/AAAAAAAAAO4/KcEmGqHd3QMIvgZt2j0lfaETTJRQa68BwCLcB/s200/Poll%2B2.png" width="200" /></a></td>
<td><h4>
Your User Experience</h4>
<br />
The second poll is about your gaming experience with CamoTactics. If you played the game you can <a href="https://goo.gl/forms/wOLryhuACfQKXITm2">submit your feedback here on Google Forms</a>. If you didn't play CamoTactics yet, <a href="https://neutroniogames.blogspot.de/p/downloads.html#CamoTactics">go do it nao</a>!</td></tr>
</tbody>
</table>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
Happy voting and thank you for playing CamoTactics!<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
b5cullyhttp://www.blogger.com/profile/18226073714178896899noreply@blogger.com0tag:blogger.com,1999:blog-8406384367972501451.post-12223968573009644692016-08-26T17:11:00.002-07:002017-02-23T17:47:26.571-08:00Life is like GamedevIt happens to me when I code all the time: Create something just to later discard it and start new from scratch. You make two steps forward just to make one step back again. It's frustrating sometimes.<br /><br />Come to think of it, it's just like real life. Sometimes you're trying to make a change in your life, trying to adapt some habits, like trying to stick to your marketing schedule or diet plan. Then there's times when things happen, you slack and fall back to your old habits.<br /><br />It's a bit like marble in a funnel that's slowly rolling towards the hole in the center. You're trying to roll towards the center, but sometimes you go too fast and bounce back to the outer edge. You do this until you finally achieve your final breakthrough: when your good habits finally stick and your code finally works (well... mostly ;) ). <br /><br />Just like in gamedev. <br /><br />So when you practice going through this with gamedev, it will likely spread over other parts of your life. <br /><br />Code away, never stop creating and keep making awesome games!<br /><br /><br />b5cullyhttp://www.blogger.com/profile/18226073714178896899noreply@blogger.com2tag:blogger.com,1999:blog-8406384367972501451.post-81498106814758579462016-08-25T08:03:00.001-07:002017-02-23T17:55:01.112-08:00CamoTactics Arena Mode & Missions in 7.2!Despite of delays because of real life stuff (I HATE moving twice within two months D;) progress was still made on CamoTactics!<br />
<br />
<h3>
Prepare your sitting device for new features, pics and gifs:</h3>
<center>
<br /><br /><b>For one, enjoy feeding your foes some lead in arena mode!</b> This isn't just a dummy feature, this has functionality and the character/weapon you've chosen will be carried into the arena.<br /><br /><br />
<img alt="" data-mce-src="http://media.indiedb.com/images/games/1/33/32621/CamoTactics_Arena_UI.1.gif" src="http://media.indiedb.com/images/games/1/33/32621/CamoTactics_Arena_UI.1.gif" height="331" width="442" /><br /><br />
<br /><b>Sail through the tutorial mission with ease!</b>
Missions now feature a very handy command line style trigger handling
that lets you do almost anything on mission/objective start, success or
failure. This is very important for the campaign of the game.<br /><br /><br /><img alt="" data-mce-src="http://media.indiedb.com/images/games/1/33/32621/Missions.png" src="http://media.indiedb.com/images/games/1/33/32621/Missions.png" height="270" width="444" /><br /><br />
<br />
<b>Your positional awareness is now provided by this very useful HUD aiming aid!</b> You will see why you need this when moving around and shooting...<br /><br />
<br /><img alt="" data-mce-src="http://media.indiedb.com/images/games/1/33/32621/Aiming_Helper.png" src="http://media.indiedb.com/images/games/1/33/32621/Aiming_Helper.png" height="283" width="444" /><br />
</center>
<h3>
<br /><br />A few fixes and improvements include but are not limited to:</h3>
<ul>
<li>Better infantry graphics</li>
<li>Fixes for picking up items</li>
<li>Fixes for mounting vehicles</li>
<li>Fixes for wrong light positions</li>
<li>Faster renderer (very noticable if you compare it to 7.1)</li>
<li>Mission and Statistics Screen</li>
<li>Better Camouflage implementation</li>
</ul>
Making
this game is a lot like wading in deep water not knowing what features
fit and which to discard, considering a lot of that is experimental (not
to mention lost time when discarding one). That process takes ages but
the results are promising already and I have no doubt the end product
will be amazing!<br />
<br />
These features are to come very soon with CamoTactics Alpha 7.2. Until then, please check out CamoTactics Alpha 7.1 here:<br />
<center>
<br /><br /><a data-mce-href="http://www.indiedb.com/games/camo-tactics/downloads/camotactics-71" href="http://www.indiedb.com/games/camo-tactics/downloads/camotactics-71" target="_blank" title="Download CamoTactics Alpha 7.1 - Indie DB"><img alt="CamoTactics Alpha 7.1" data-mce-src="http://button.indiedb.com/download/medium/105322.png" src="http://button.indiedb.com/download/medium/105322.png" /></a><br />
</center>
b5cullyhttp://www.blogger.com/profile/18226073714178896899noreply@blogger.com0tag:blogger.com,1999:blog-8406384367972501451.post-33312897001207007172016-07-16T07:52:00.002-07:002017-02-23T17:31:52.582-08:00Why PokemonGo is such a successOnly a few weeks in after its release, PokemonGo has become a hit for gamers world wide. It even goes so far that people <a href="http://www.nbcsandiego.com/news/local/Two-Men-Fall-Down-Cliff-While-Playing-Pokemon-Go-386743551.html" target="_blank">are paying less attention and getting themselves hurt</a> and <a href="http://www.politico.com/states/new-york/albany/story/2016/07/assemblyman-ponders-pokemon-go-legislation-103747" target="_blank">deputies making demands to regulate the game</a>.<br />
<br />
But what exactly made it such a success?<br />
<br />
First off, the player base of Pokemon is huge. Pokemon has been around for decades and influenced generations of gamers and accumulated a vast following during that time. It's a game that can be played with your smartphone everywhere at anytime (that is if the servers aren't shitting the bed). Another side effect is, you also connect with people as they venture to the same Pokemon hotspots as you.<br />
<br />
While the gameplay isn't much at the moment, it still taps into <a href="http://neutroniogames.blogspot.com/2016/05/exploring-concepts-of-fun-and-challenge.html">the desire of discovery and collecting</a> all Pokemon - or collecting enough Pokemon candy to level up your favorites. What is genius about it is that it takes the act of catching them to real life - no doubt that for some gamers, dreams came true!<br />
<br />
<br />
So in other words, you have:<br />
<ul>
<li>a high accessibility mobile game </li>
<li>a giant following of fans of all ages</li>
<li>bringing a well-selling gaming franchise to real life</li>
<li>game mechanics that stimulate the urge to collect and discover (Pokemon and their spawning points, in this case)</li>
</ul>
They really got out the best of what they already had and struck a real hit on the mobile market. <br />
<br />
I remember back a year or so Nintendo's decision to go mobile was generally met with skepticism. Now they have managed to create a hype that will not only change the game industry, but also society. Forever.<br />
<br />
Well done, Nintendo. Well done.<br />
<br />
<br />b5cullyhttp://www.blogger.com/profile/18226073714178896899noreply@blogger.com0tag:blogger.com,1999:blog-8406384367972501451.post-48332971154988961182016-07-06T22:32:00.001-07:002017-02-23T17:26:56.476-08:00Creating a Mission System in Java<br />
So... how do you create a Mission System?<br />
<br />
I asked myself this question twice so far and recently I came up with the following approach. This system is relatively simple but you can do most of basic missions with it. It consists of a tree with depth 3: Mission, Objectives. Conditions. Each of the components has a mission state, consisting of PENDING, SUCCESS and FAILURE.<br />
<br />
First, I will describe the classes needed, which is then followed by their java code at the end of this article. <br />
<br />
<br />
The general structure is as follows:<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-fetk2gcPM48/V4oJqx2ZKgI/AAAAAAAAAOg/9JZfo8wY61MD56MgoKSXrwEgfDWuuepQgCEw/s1600/mission%2Bsystem.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="136" src="https://4.bp.blogspot.com/-fetk2gcPM48/V4oJqx2ZKgI/AAAAAAAAAOg/9JZfo8wY61MD56MgoKSXrwEgfDWuuepQgCEw/s400/mission%2Bsystem.png" width="400" /></a></div>
<br />
<br />
<hr />
<br />
<span style="font-size: large;">Mission:</span><br />
<ul>
<li>A Mission has a title, a debrief description and a short description. </li>
<li>A Mission has multiple objectives. </li>
<li>As general rule, a mission is deemed a success if all its child objectives are deemed successful.</li>
</ul>
<br />
<span style="font-size: large;">Objective:</span><br />
<ul>
<li>An Objective has numerous conditions. </li>
</ul>
<ul>
<li>Objectives have a different behavior per type, described below:<br /><br /><b>Default:</b> All objectives must be set to success for a mission to return success.<br /><b>Failure:</b> If this objective is failed, the entire mission fails.<br /><b>Optional:</b> The objective is effectively ignored by the mission, but can be used to, say, determine a score.<br /> </li>
<li>By default, they are not being updated once a condition was met or failed, but you can change them to run permanent updates.</li>
</ul>
<br />
<span style="font-size: large;">Conditions</span><br />
<ul>
<li>All conditions must be met for an Objective to be successful.
Behavior types (default, failure, optional) do not apply here to keep it
simple. To make up for that, I've added the possibility to invert them.</li>
<li>Conditions are implemented by you via an interface and an abstract helper
class. </li>
<li>For GUI purposes, there's also methods to display the condition
as string for the end user.</li>
</ul>
<br />
To use it, you setup your Mission, Objectives and Conditions and call Mission.update() each time you update your game.<br />
<br />
Here's the code:<br />
<br />
<hr />
<br />
<span style="font-size: large;">Mission</span><br />
<br />
<br />
<span style="font-size: x-small;"><code>/**<br /> *<br /> * @author B5cully<br /> */<br />public class Mission {<br /> <br /> public String title;<br /> public String debrief;<br /> public String summary; <br /> public LinkedList<Objective> objectives = new LinkedList();<br /> Objective.State state = Objective.State.PENDING;<br /><br /> public Mission() {<br /> }<br /> <br /> public Mission(String title) {<br /> this.title = title;<br /> }<br /><br /> <br /> public Objective.State getState() {<br /> return state;<br /> }<br /> <br /> public void addObjective(Objective obj) {<br /> objectives.add(obj);<br /> }<br /> <br /> public void start() {<br /> for( Objective objective : objectives ) {<br /> objective.start();<br /> }<br /> }<br /> <br /> public void stop() {<br /> for( Objective objective : objectives ) {<br /> objective.stop();<br /> }<br /> }<br /><br /> /**<br /> * Updates this mission's state<br /> * @return <br /> */<br /> public void update() {<br /> int i=0;<br /> boolean success = true;<br /> boolean failure = false;<br /> for( Objective objective : objectives ) {<br /> switch (objective.state) {<br /> case SUCCESS:<br /> if( objective.constant_check ) objective.checkState();<br /> break;<br /> case FAILURE:<br /> if( objective.constant_check ) objective.checkState();<br /> break;<br /> case PENDING:<br /> objective.checkState();<br /> break;<br /> }<br /> switch( objective.type ) {<br /> case NORMAL: {<br /> success = i == 0 ? objective.state.equals(Objective.State.SUCCESS) :<br /> success && objective.state.equals(Objective.State.SUCCESS); <br /> } break;<br /> case OPTIONAL: {<br /> //ignore the objective<br /> } break;<br /> case FAIL: {<br /> //only consider fail state<br /> failure = failure || objective.state.equals(Objective.State.FAILURE); <br /> } break;<br /> <br /> }<br /> i++;<br /> }<br /> if( success ) {<br /> state = Objective.State.SUCCESS;<br /> }<br /> if( failure ) {<br /> state = Objective.State.FAILURE;<br /> }<br /> }</code></span><br />
<span style="font-size: x-small;"><code>} </code></span> <br />
<br />
<hr />
<br />
<span style="font-size: large;">Objective</span><br />
<br />
<span style="font-size: x-small;"><code>/**<br /> *<br /> * @author B5cully<br /> */<br />public class Objective {<br /> <br /> public enum Type{<br /> /**<br /> * The objective contributes to success of the mission.<br /> */<br /> NORMAL, <br /> /**<br /> * The objective counts as fail condition of the mission.+<br /> * If one objective of this type closes with failure, <br /> * the entire mission fails. The pending state of<br /> * FAIL objectives are ignored in the total outcome.<br /> */<br /> FAIL,<br /> /**<br /> * The objective is optional, it has no effect<br /> * on the total outcome.<br /> */<br /> OPTIONAL;<br /> }<br /> public enum State{<br /> PENDING, SUCCESS, FAILURE;<br /> }<br /> <br /> public String title;<br /> /**if this is true, the objective is constantly validated. If false,<br /> the objective is validated once and succeeds permanently once triggered.*/<br /> public boolean constant_check;<br /> /***/<br /> public Type type = Type.NORMAL;<br /> State state = State.PENDING;<br /> /**<br /> * All conditions must be met in order for na objective to<br /> * succeed.<br /> */<br /> LinkedList<ConditionImpl> conditions = new LinkedList<ConditionImpl>();<br /><br /> public Objective() {<br /> }<br /> <br /> public Objective(String title) {<br /> this.title = title;<br /> }<br /> <br /> public void addCondition(ConditionImpl condition) {<br /> conditions.add(condition);<br /> }<br /> <br /> public void start() {<br /> for( ConditionImpl condition : conditions ) {<br /> condition.start();<br /> }<br /> }<br /> <br /> public void stop() {<br /> for( ConditionImpl condition : conditions ) {<br /> condition.stop();<br /> }<br /> }<br /> <br /><br /> @Override<br /> public String toString() {<br /> String s = "";<br /> int i =0;<br /> for( ConditionImpl condition : conditions ) {<br /> s += condition.getName() + ": " + condition.getDisplayedText();<br /> if( i > 0 && i < conditions.size()) s += "\n";<br /> i++;<br /> }<br /> return s;<br /> }<br /><br /> public State getState() {<br /> return state;<br /> }<br /> <br /> public void checkState() {<br /> boolean success = false;<br /> int i =0;<br /><br /> //check the conditions<br /> for( ConditionImpl condition : conditions ) {<br /> <br /> state = condition.getState();<br /> <br /> if( !state.equals(State.PENDING) && constant_check) {<br /> //still update the condition if constant check enabled<br /> condition.checkState();<br /> } else<br /> if( state.equals(State.PENDING) ) {<br /> //pending: simply update. No updates if failed or succeeded.<br /> condition.checkState();<br /> }<br /> success = i == 0 ? state.equals(Objective.State.SUCCESS) :<br /> success && state.equals(Objective.State.SUCCESS);<br /> switch( state ) {<br /> case FAILURE: {<br /> this.state = State.FAILURE;<br /> return;<br /> }<br /> default: break;<br /> }<br /> i++;<br /> }<br /> if( success) this.state = State.SUCCESS;<br /> else this.state = State.PENDING;<br /> }<br />}</code></span><code></code> <br />
<hr />
<br />
<span style="font-size: large;">Condition </span><br />
<br />
<span style="font-size: x-small;"><br /></span>
<span style="font-size: x-small;"><code>/**<br /> *<br /> * @author B5cully<br /> */<br />public interface ConditionImpl {<br /> <br /><br /> /**<br /> * Invoked on condition start.<br /> */<br /> public void start();<br /> <br /> /**<br /> * Gets the name of this condition<br /> * @return <br /> */<br /> public String getName();<br /> /**<br /> * A Localized, properly formatted display <br /> * text for this condition.<br /> * @return <br /> */<br /> public String getDisplayedText();<br /> <br /> /**<br /> * @return the state of the condition<br /> */<br /> public Objective.State getState();<br /> <br /> /**<br /> * Evaluates the state of this condition. This normally involves<br /> * calculations.<br /> */<br /> public void checkState();<br /> <br /> /**<br /> * Invoked on condition stop (e.g. when<br /> * it has failed or is being reset)<br /> */<br /> public void stop();</code></span><br />
<span style="font-size: x-small;"><code>}</code></span><br />
<hr />
Here's the helper class for Condition, followed by an example implementation.<code><span style="font-size: small;"> </span></code><br />
<code><span style="font-size: small;"></span></code><br />
<br />
<span style="font-size: x-small;"><code>/**<br /> *<br /> * @author B5cully<br /> */<br />public abstract class Condition implements ConditionImpl {<br /> <br /> protected Objective.State state = Objective.State.PENDING;<br /> protected boolean inverted = false;<br /> /**<br /> * The name of this condition.<br /> */<br /> protected String name;<br /> /**<br /> * A format string to display the condition.<br /> */<br /> protected String format_string;<br /> /**<br /> * The string returned for display. This is usually<br /> * name + String.format(format_string, args), where<br /> * args is relevant info about the condition.<br /> */<br /> protected String displayed_text;<br /><br /> public Condition(String name, String format_string) {<br /> this.name = name;<br /> this.format_string = format_string;<br /> }<br /> <br /> @Override<br /> public String getName() {<br /> return name;<br /> }<br /> <br /> /**<br /> * Inverts the result. E.g. Instead of delivering<br /> * SUCCESS by default, FAILED is being returned.<br /> * @param inverted <br /> */<br /> public void setInverted(boolean inverted) {<br /> this.inverted = inverted;<br /> }<br /> <br /> @Override<br /> public void start() {<br /> }<br /><br /> @Override<br /> public Objective.State getState() {<br /> return state;<br /> }<br /><br /> @Override<br /> public void stop() {<br /> }<br />}</code></span><br />
<br />
<span style="font-size: x-small;"><code>/**<br /> *<br /> * @author B5cully<br /> */<br />public class ConditionKilledEnemies extends Condition{<br /><br /> LinkedList<Entity> enemies = new LinkedList<Entity>();<br /> LinkedList<ListenerEntityImpl> listeners = new LinkedList<ListenerEntityImpl>();<br /> int size = 0;<br /> <br /> String current_displayed_text = "";<br /> <br /> {<br /> format_string = "%d/%d";<br /> }<br /><br /> public ConditionKilledEnemies() {<br /> super("Killed", "%d/%d");<br /> }<br /> <br /> public void registerEnemy(Entity enemy) {<br /> //add enemy to list<br /> //add a entity listener that tracks the enemy death<br /> //and adds to the counter here<br /> ListenerEntityImpl listener = getListener(enemy);<br /> enemy.addEntityListener( listener);<br /> enemies.add(enemy);<br /> listeners.add(listener);<br /> size++;<br /> current_displayed_text = String.format(format_string, enemies.size(), size);<br /> }<br /> <br /> public ListenerEntityImpl getListener(Entity enemy) {<br /> return new ListenerEntityImpl() {<br /><br /> @Override<br /> public void onDeath(EntityMobile object) {<br /> super.onDeath(object);<br /> int index = enemies.indexOf(object);<br /> if( index >= 0 ) {<br /> enemies.remove(index);<br /> listeners.remove(index);<br /> current_displayed_text = String.format(format_string, enemies.size(), size);<br /> }<br /> }<br /> };<br /> }<br /> <br /> @Override<br /> public String getDisplayedText() {<br /> return current_displayed_text;<br /> }<br /><br /> @Override<br /> public void checkState() {<br /> //success if the list is empty<br /> if( enemies.isEmpty() ) state = Objective.State.SUCCESS;<br /> else state = Objective.State.PENDING;<br /> }<br /> <br />} </code></span> b5cullyhttp://www.blogger.com/profile/18226073714178896899noreply@blogger.com0tag:blogger.com,1999:blog-8406384367972501451.post-80157653214868828552016-06-23T15:26:00.000-07:002017-02-23T17:32:20.156-08:00How to Make Leaving Your Comfort Zone a HabitIn an earlier article, I talked about <a href="http://neutroniogames.blogspot.com/2016/06/get-out-of-your-comfy-zone.html">how important it is to get out of your comfort zone</a>. But how do you actually get out of it?<br />
<br />
Before I start, it's important to keep in mind the following:<br />
<ol>
<a href="https://4.bp.blogspot.com/-tvzerwJZhO0/VzuFVl8y2mI/AAAAAAAAAKM/C-PVZu2JtvIJ5TY_Or3mp_WvND8ipAVqACKgB/s1600/life.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="275" src="https://4.bp.blogspot.com/-tvzerwJZhO0/VzuFVl8y2mI/AAAAAAAAAKM/C-PVZu2JtvIJ5TY_Or3mp_WvND8ipAVqACKgB/s320/life.jpg" width="320" /></a>
<li><b>If you want to achieve goals, you must acquire habits that help you accomplish them. </b></li>
<li><b>Nothing will change if you don't stop making excuses. </b>If the time to make a change isn't now, then when?</li>
</ol>
<br />
<br />
These two things are essential in understanding what I'm about to tell you next.<br />
<br />
"Getting out of your comfort zone" may be one goal in a larger chain of goals you have in mind.Once you achieve it, all other goals can be accomplished with greater ease. So how could a habit look like that helps you get off your lazy bumcheeks?<br />
<br />
<hr />
Find something...<br />
<ul>
<li>that doesn't require a huge effort to start doing (highly accessible)</li>
<li>that pushes you to the limit, at your own discretion </li>
<li>lets you explore and expand said limits.</li>
</ul>
<hr />
Let me show you two of these habits I acquired:<br />
<br />
<ul>
<li><b>Taking cold showers.</b> Cold showers expand your blood vessels, thus <a href="http://www.medicaldaily.com/benefits-cold-showers-7-reasons-why-taking-cool-showers-good-your-health-289524">giving your metabolism a rush of energy</a>. They may help if you are struggling with making physical exercise a habit, too. The fact you are forcing yourself to cold water exposure is a perfect way to teach yourself to get out of your comfort zone (and defeat the "innere Schweinehund" - the "inner lazy skunk" - as we Germans say). If you shower everyday make it a habit! That being said, you don't have to jump right into cold water. What I do is to wash myself normally, then proceed with cold shower, gradually making the water colder - and remain in the shower for a maximum of two minutes. Next time I'd shower I will try to make it even colder, trying to push my own limits.<b><i> Keep in mind that if you notice you start shivering or feel your limbs are getting numb, you should stop with the shower and get yourself warm as soon as possible. Push your limits, but never drive it too far!<br /><br /></i></b></li>
<li><b>Physical exercise. </b>Similarly to taking cold showers, it fires up your metabolism. Besides it keeps you fit and healthy. To make exercise a habit, I started doing situps before going to shower in the evening. For me personally I choose a familiar environment for exercise (the bed in my room), which meant less effort for me to start doing it. You can do whatever exercise you feel most comfortable with, like stretch lessons, situps, yoga - simply chose the lesser evil ;). Just keep in mind that workout - if done wrong - can be damaging to your health (like kickboxing with limb weights on). So if in doubt, I highly recommend seeking professional advice.<br /><br /></li>
</ul>
With these two habits I am fostering I basically got used to getting out
of my comfort zone. Slowly I am expanding this to other parts of my
life. I must say it helped me getting to know the unknown called
"discipline".<br />
<br /><br />
But beware: Do not ever think about slipping on any of these habits. If you don't have time for them now, you're not going to have time for them later - because you are more inclined to find an excuse for not doing them at all. Try to remember this: <i>If you're not investing in good habits now, then when? </i> <br />
<br /><br />
What will remain if you lost everything you have? <u><b>You</b></u>. So invest in yourself. <b>Because you are the most valuable asset you have.</b>b5cullyhttp://www.blogger.com/profile/18226073714178896899noreply@blogger.com0tag:blogger.com,1999:blog-8406384367972501451.post-53230238841254132532016-06-18T11:03:00.000-07:002017-02-23T17:36:15.942-08:00How to avoid bad Color Schemes<i>Notice: you may want to <a href="https://krita.org/">get Krita</a> in order to follow the steps </i><i><i>described </i>below.</i><br />
<br />
I've adviced a few indie programmers with their games already. And all of them had a common issue: color choice. Good old infamous programmer art. How do you get better at it?!<br />
<br />
<br />
Now I could bombard you guys with dry color theory in this post. But eventually this is all just "theory" and not necessarily helpful for you in practice (especially if you lack the understanding for it).<br />
<br />
So let's start off with applied color theory. I'll show you some pics while explaining the basic concepts, adapted to gamedev.<br />
<br />
<br />
<br />
<b><span style="font-size: large;">Contrast</span></b><br />
<br />
<br />
<br />
Every picture can be minimized to black and white, right? You have hotspots here and there that attract your attention. You have dark areas that create contrast and can be used to create multiple effects in the audience (like emotion or tension).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-w3kwwk6M5x0/V2Vnj6a4dYI/AAAAAAAAALw/ykbCVoCG4y8VRnPojZtt4xp2WOklzClYwCKgB/s1600/turmoil_small.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="171" src="https://1.bp.blogspot.com/-w3kwwk6M5x0/V2Vnj6a4dYI/AAAAAAAAALw/ykbCVoCG4y8VRnPojZtt4xp2WOklzClYwCKgB/s320/turmoil_small.png" width="320" /></a></div>
<br />
<br />
In the above picture, there seems to be a dark blue cloud luring over what appears to be a yellow valley. Notice the white areas on the right and left top corners of the picture that surround the darker areas. The contrast of the cloud is rather prominent, creating a tense scenery. The tilted angle adds to the dramatic display.<br />
<br />
<br />
Now the interesting thing about this is, that a lot of this can be applied to games. You want your enemies to stand out, peaceful items also needs to be highlighted (the white areas) and obstacles that cannot be passed (dark blue cloud). And then you have your environment, that balances out those two elements (yellow/purple valley).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-S_nuZiZSJi8/V2VrgYvm50I/AAAAAAAAAL8/xd_Gf9cijWASInlZ7Uf6xRKciK5vDoqeQCKgB/s1600/programmer%2Bart%2B-%2Bcontrast.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="176" src="https://3.bp.blogspot.com/-S_nuZiZSJi8/V2VrgYvm50I/AAAAAAAAAL8/xd_Gf9cijWASInlZ7Uf6xRKciK5vDoqeQCKgB/s400/programmer%2Bart%2B-%2Bcontrast.png" width="400" /></a></div>
<br />
<br />
You do not want to have a very similar contrast for your background and your walls, for example. Or all your backgrounds, obstacles and player in the same brightness of color. It will look mushy and they won't stand out, making your game look worse and harder to play.<br />
<br />
<br />
Look at this picture here:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-qGfbUT2iYds/V2WDvhTO3jI/AAAAAAAAANc/VXuSeTQ25j41Jr0QPGpg034GxPTYMH--ACKgB/s1600/programmer%2Bart%2B-%2Btiles%2B1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="228" src="https://4.bp.blogspot.com/-qGfbUT2iYds/V2WDvhTO3jI/AAAAAAAAANc/VXuSeTQ25j41Jr0QPGpg034GxPTYMH--ACKgB/s320/programmer%2Bart%2B-%2Btiles%2B1.png" width="320" /></a></div>
<br />
This looks like a ornamented floor, right? Let me show you what happens when I make the green tiles darker.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-MDu1VTOES3Y/V2WDvwJpf8I/AAAAAAAAANk/Rd_IWKj3-S0wPleK2CD9xfHIBAEzKniJACKgB/s1600/programmer%2Bart%2B-%2Btiles%2B2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="228" src="https://2.bp.blogspot.com/-MDu1VTOES3Y/V2WDvwJpf8I/AAAAAAAAANk/Rd_IWKj3-S0wPleK2CD9xfHIBAEzKniJACKgB/s320/programmer%2Bart%2B-%2Btiles%2B2.png" width="320" /></a></div>
<br />
<br />
Now these tiles actually look more like walls that encase a tiny room. Darker. Impassable. Something you probably should not even bother messing around with!<br />
<br />
<b>Contrast is an important tool to set apart different elements in your game. </b>If you have moving entities, they must be distinguishable from the rest of the environment.<br />
<br />
Let's take a look at this screenshot of Sonic The Hedgehog (Genesis).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-l3XqiB9enqM/V2WLcj7zcwI/AAAAAAAAAOQ/oM4YiwioBYcJseCQa1h7kY4lLMbuxOYngCLcB/s1600/sonic1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://1.bp.blogspot.com/-l3XqiB9enqM/V2WLcj7zcwI/AAAAAAAAAOQ/oM4YiwioBYcJseCQa1h7kY4lLMbuxOYngCLcB/s1600/sonic1.png" /></a></div>
<div style="text-align: center;">
<a href="https://upload.wikimedia.org/wikipedia/en/d/d3/MD_Sonic_the_Hedgehog.png">(Source: wikimedia)</a></div>
<br />
<br />
The overall environment is relatively bright, happy even. Yet the enemies are still easily to spot and distinguishable from the rest because they have a very strong color (red) that does not appear in the rest of the environment. Sonic himself has a different hue than the water, too.<b> </b><br />
<br />
<br />
<br />
<b><span style="font-size: large;">Color</span></b><br />
<br />
<br />
<a href="https://4.bp.blogspot.com/-35pa4o-lcfQ/V2WEtvVZpzI/AAAAAAAAANw/DBXkkt7KwnsiDYfQL9KpU65QPa9bgtibwCLcB/s1600/programmer%2Bart%2B-%2Bcolor%2Bwheel.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="https://4.bp.blogspot.com/-35pa4o-lcfQ/V2WEtvVZpzI/AAAAAAAAANw/DBXkkt7KwnsiDYfQL9KpU65QPa9bgtibwCLcB/s1600/programmer%2Bart%2B-%2Bcolor%2Bwheel.png" /></a>So much for contrast. How to choose the correct color?<br />
<br />
<br />
You can choose colors using color wheels or similar provided by graphics programs. If you keep moving the color wheel towards cyan in Krita and pick one color every now and then, it's a very good starting point to figure out rough colors that fit.<br />
<br />
<br />
<br />
Like this, I've chosen this color palette. Let's imagine I want these colors in my game. These aren't perfect, but definitely usable.<br />
<br />
The color picture looks like this:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-_mgUGRex6Ak/V2WDvTnxSdI/AAAAAAAAANs/x8p5Ax2gh_YfzvwatM_S86RfNCovCzrrACKgB/s1600/programmer%2Bart%2B-%2Bcolor%2B0.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="176" src="https://2.bp.blogspot.com/-_mgUGRex6Ak/V2WDvTnxSdI/AAAAAAAAANs/x8p5Ax2gh_YfzvwatM_S86RfNCovCzrrACKgB/s400/programmer%2Bart%2B-%2Bcolor%2B0.png" width="400" /></a></div>
<br />
<br />
So let's apply the contrast lesson here. I put the color picture layer over the contrast the black and white contrast layer. Then I applied blend mode "Darken" in Krita on the color picture layer. <a href="http://www.mediafire.com/download/pq2c86700vdgfc5/color+theory+for+programmers.kra">You can download this file here, by the way!</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-Rzt6ih4aRUA/V2WDvRmqZbI/AAAAAAAAANs/qLfGsd-SUuc8DBE3-B0WjbSIC2iycvdEgCKgB/s1600/programmer%2Bart%2B-%2Bblend%2Bmode.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://4.bp.blogspot.com/-Rzt6ih4aRUA/V2WDvRmqZbI/AAAAAAAAANs/qLfGsd-SUuc8DBE3-B0WjbSIC2iycvdEgCKgB/s1600/programmer%2Bart%2B-%2Bblend%2Bmode.png" /></a></div>
<br />
<br />
<br />
So the result looks like this:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-o8jtAvZIMg8/V2V1iTJICSI/AAAAAAAAAM0/h-eZojAE5H0qU-We6W2eOPfwtL6LnA_CACKgB/s1600/programmer%2Bart%2B-%2Bcolor%2B1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="176" src="https://4.bp.blogspot.com/-o8jtAvZIMg8/V2V1iTJICSI/AAAAAAAAAM0/h-eZojAE5H0qU-We6W2eOPfwtL6LnA_CACKgB/s400/programmer%2Bart%2B-%2Bcolor%2B1.png" width="400" /></a></div>
<br />
...which is a pretty solid color scheme to use for your game. To modify it, you can use the HSV tool of Krita to make further adjustments. Keep in mind you will have to readjust colors to the correct contrast if
you do that. The second color of "player, enemies" is too similar to the first
color of "backgrounds" and may make problems in a final game!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-YbVNKGaN37U/V2WDvvRWyGI/AAAAAAAAANs/-EvnfA0WIc4tI675kwChlpvCvpIXJ091gCKgB/s1600/programmer%2Bart%2B-%2Bhsv.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="242" src="https://1.bp.blogspot.com/-YbVNKGaN37U/V2WDvvRWyGI/AAAAAAAAANs/-EvnfA0WIc4tI675kwChlpvCvpIXJ091gCKgB/s400/programmer%2Bart%2B-%2Bhsv.png" width="400" /></a></div>
<br />
<br />
<span style="font-size: large;"><br /></span>
<b><span style="font-size: large;">Getting Color Schemes</span></b><br />
<br />
<br />
You don't have to do this process all the time. There are numerous websites and tools that help you chose a fitting color palette. One of these tools is <a href="http://paletton.com/">paletton</a>:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-zUxwJxDyOyg/V2WGlOqzcBI/AAAAAAAAAN8/9lke838mTcQNvJlif-kpwhNw7WY9iazXgCKgB/s1600/paletton.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="312" src="https://3.bp.blogspot.com/-zUxwJxDyOyg/V2WGlOqzcBI/AAAAAAAAAN8/9lke838mTcQNvJlif-kpwhNw7WY9iazXgCKgB/s400/paletton.png" width="400" /></a></div>
<br />
<br />
Another website that is very useful is <a href="http://www.colourlovers.com/">www.colourlovers.com</a>. It provides very handy, user-created palettes. The palettes displayed below are actually very interesting colors to use in a game already.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-EDwBbVvDT70/V2WGlONhrII/AAAAAAAAAOA/OVtRt6JEx-A9fc4No_23a4qqWODsdQOLgCKgB/s1600/colorlovers.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://3.bp.blogspot.com/-EDwBbVvDT70/V2WGlONhrII/AAAAAAAAAOA/OVtRt6JEx-A9fc4No_23a4qqWODsdQOLgCKgB/s400/colorlovers.png" width="351" /></a></div>
<br />
<br />
<br />
<b><span style="font-size: large;">Choosing the right Color Scheme for your game</span></b><br />
<br />
<br />
<i>So how do you choose the correct coloring scheme for your game? </i><br />
<br />
It always depends what kind of game you are making and what kind of atmosphere, experience and emotion you want to create. Colors can be a <b>very powerful tool </b>to help achieve this, as they have a strong subconscious effect.<br />
<br />
If you make a post-apocalyptic game, you should probably use pastel colors (colors without high saturation) - as long as it looks rotten and pale, you're good to go!<br />
When making a horror game, you may want to do the same. Or you maybe want to use dark colors only, with red being the only brighter color.<br />
<br />
But not only the colors themselves are important, but also the <b>context</b> they are perceived. If the gameplay makes it clear there is danger near, I will perceive a red-black color scheme differently than say, a blue-black. The cold, blue colors may even create a sense of despair!<br />
<br />
In the picture below, I created a few color combinations and listed the words that came to my mind when looking at them.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-ztMThiqHszA/V2WDvdulAGI/AAAAAAAAANs/Ofzwc7UXcfQ7U9J3KyHZbJFx8euARVEQgCKgB/s1600/impact%2Bof%2Bcolors.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://4.bp.blogspot.com/-ztMThiqHszA/V2WDvdulAGI/AAAAAAAAANs/Ofzwc7UXcfQ7U9J3KyHZbJFx8euARVEQgCKgB/s320/impact%2Bof%2Bcolors.png" width="320" /></a></div>
<br />
You can do the same experiment by looking at other games, movies or art and asking yourself how what you see make you feel. That also helps you figuring out a good color mood for your own game. <br />
<br />
<br />
I hope this article helped you figure out more about colors and color schemes! What are your favorite games in terms of colors and atmosphere? <br />
<br />
<br />
<br />b5cullyhttp://www.blogger.com/profile/18226073714178896899noreply@blogger.com0tag:blogger.com,1999:blog-8406384367972501451.post-18427842041136693782016-06-16T16:04:00.002-07:002017-02-23T17:36:54.314-08:00Good reasons to get out of your Comfy ZoneI often see opportunities. Opportunities like, working together with someone to make a game, someone from the press asking indiedevs to send their games over to getting them covered on their website, people messaging me about my blog and whether I want to write for them.<br />
<br />
Life is giving me MANY possibilities like this if I really think about it. Possibilities I could use to grow.<br />
<br />
The thing is: I often don't even know how to respond or react to that. Things like this make me feel anxious. Scared to do it, even. It triggers an escape´mechanism inside of me. Often, I silently opt out pretending these opportunities <i>never happened.</i><br />
<br />
But then I realize that if I don't do things that are out of my comfy zone, I firstly waste so many opportunities to be a more successful indiedev, and secondly <b>I will never ever grow beyond the limits my fears impose on me</b>. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-Cj0oVMPW8hc/V2Mv9BwMM-I/AAAAAAAAALY/OFb0bnGngQw7i8wuvt1y_3_GagJ38SPDACLcB/s1600/comfort_zone.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="266" src="https://2.bp.blogspot.com/-Cj0oVMPW8hc/V2Mv9BwMM-I/AAAAAAAAALY/OFb0bnGngQw7i8wuvt1y_3_GagJ38SPDACLcB/s400/comfort_zone.jpg" width="400" /></a></div>
<br />
<br />
<span style="font-size: large;">So I try to take my chances, allow myself to be a complete noob and just do it. </span><br />
<br />
I will likely fail for everyone to see, on the internet that never forgets, but you know, <b>you do it wrong until you learned how to do it right. </b>If you're not doing it, how are you supposed to get better? The entire process is important - not just the end results (= you being successful).<br />
<br />
The struggle can be exceptionally hard if you've had a trouble past like me - but know if you manage to do this, keep at it with outstanding persistence, passion and determination, you can say of yourself you went from "living in a dump" to "happy and rich".<br />
<br />
<br />
<span style="font-size: large;">Allow yourself to fail. Allow yourself to be rewarded for what you do - that's the only way to grow. </span><br />
<br />
<span style="font-size: small;">And don't forget those who helped you along the way, too. </span>b5cullyhttp://www.blogger.com/profile/18226073714178896899noreply@blogger.com0tag:blogger.com,1999:blog-8406384367972501451.post-53717053523537104692016-06-16T14:37:00.004-07:002017-02-23T17:47:48.297-08:00Why You shouldn't Always Translate Advice to Your Own LifeSome motivational sites claim that if you want to be successful, you sleep much less than the average person. The argument is that if you sleep less you have more time to get work done and be productive.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-Ll_GyeoeBfU/V2MZKVYwjOI/AAAAAAAAAK8/weGg-8Kh9a04TZOf0Y_JOslQ5zN7MzJeQCLcB/s1600/sleepmeme.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="317" src="https://2.bp.blogspot.com/-Ll_GyeoeBfU/V2MZKVYwjOI/AAAAAAAAAK8/weGg-8Kh9a04TZOf0Y_JOslQ5zN7MzJeQCLcB/s320/sleepmeme.jpg" width="320" /></a></div>
<br />
<br />
<br />
I have a few problems with this type of advice. I have no doubt people who can pull this off exists. But you have to adjust that to<b> yourself individually</b>, to the <b>tasks you perform</b> and <b>to your schedule</b>.<br />
<br />
I have a dayjob and are ~9 hours per week in the office (including commute). I still can squeeze in a few hours of gamedev into my schedule depending how draining the task at work were. In my experience, sleep deprivation is extremely bad for my productivity and will eliminate these few hours of gamedev in the evening. Instead, I spent these hours taking a nap because I am exhausted, later unable to go to bed at a reasonable time. <br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-1rk2yZWiWOU/V2MZaiFSW5I/AAAAAAAAALE/P21E_rpXjKYp443tF7JEo-Krxvf_H9EdgCKgB/s1600/Funny-Work-Meme-3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="224" src="https://1.bp.blogspot.com/-1rk2yZWiWOU/V2MZaiFSW5I/AAAAAAAAALE/P21E_rpXjKYp443tF7JEo-Krxvf_H9EdgCKgB/s320/Funny-Work-Meme-3.jpg" width="320" /></a></div>
<br />
<br />
From the start of this month my productivity hit a low because I have screwed with my sleeping schedule, sleeping an average of 5 to 4 hours per day (6 including naps) this and last week. You can probably tell by the fact I haven't written many blogs this month so far. In order to be productive (whether it is coding or writing blogs), my brain needs to be in good shape in order to perform them.<br />
<br />
<br />
That means: enough sleep, enough sun exposure ("recharging" my nerves), a bit of workout (taking a walk and doing sit-ups in my case), healthy diet (lotsa bluebewwies!) and being in peace of mind (I can't code when I am emotional distress). If one or more of these things are lacking, I am simply not <i>in the shape for these kind of tasks</i>. When tired, I am much better at doing art or music, which flows much better then.<br />
<br />
<br />
Contrary to the initial advice (sleep less, get more work done) sleeping less actually impacts my ("logical") productivity negatively. However, <a href="https://neutroniogames.blogspot.de/2016/05/7-ways-to-boost-your-productivity.html">your aim should create the conditions and environment required that enables you to be productive.</a> If getting enough sleep is one of them, <i>you shouldn't ignore that</i>.<br />
<br />
(There may be other reasons why sleep is a requirement for me to be productive, namely that my energy in general is low; it can be raised by correct posture or working out more. Still working on myself :])<br />
<br />
<br />
<b>It's always good to foster good habits to grow. </b>See the basic point in advice given and see what you can adapt, keeping
in mind your own strengths, weaknesses, daily routine and habits. <br />
<br />
Just keep in mind not every advice is useful to you or directly applicable to your life. You are on a unique journey and your journey is never the same as someone else's.<br />
<br />
<br />b5cullyhttp://www.blogger.com/profile/18226073714178896899noreply@blogger.com0tag:blogger.com,1999:blog-8406384367972501451.post-36544320865125103322016-06-11T15:41:00.001-07:002017-02-23T17:41:36.999-08:00CamoTactics: Where will it go?<b><br /></b>
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/ojTxwlueNqA/0.jpg" frameborder="0" height="366" src="https://www.youtube.com/embed/WAPyS2rIyMk?feature=player_embedded" width="620"></iframe></div>
<br />
<b><br /></b>
<b>CamoTactics is a top down shooter set in a futuristic and turbulent future, where mankind has ventured into the depths of space and crashed into a planet with strange and bizarre alien life. Despite the hostility of this world, mankind finally has managed to get over its blood-thirsty past that exploited its environment - Until events turned around and tensions between two countries, Rubia, known as the cradle of mankind, and Panta rose again. Someone has gotten hold of ancient war technology and is trying to stumble the entire planet into chaos. Can you identify and stop the evil forces trying to disrupt the fragile peace?</b><br />
<br />
<br />
<hr />
<br />
<div style="text-align: center;">
<a href="http://www.indiedb.com/games/camo-tactics/downloads/camotactics-70" target="_blank">Click here to download CamoTactics! </a></div>
<br />
<br />
Read more about its gameplay concepts below. This article applies to CamoTactics 7.1.<br />
<br />
<br />
<b>Environment, Stealth & Camouflage:</b><br />
<br />
<i>What's already in:</i> Enemies won't see you if you are <a data-saferedirecturl="https://www.google.com/url?hl=de&q=https://1.bp.blogspot.com/-aXEDh6ooecQ/V0m9opH1FXI/AAAAAAAAAKo/pL9P15PznI4Ruldj-fw7tMdr9UI4DLQ0ACLcB/s1600/CamoTactics%252Bsuprisebuttsex.gif&source=gmail&ust=1465597318881000&usg=AFQjCNEl-cev7QGM5UhbLgyYkzdZ_ifJhg" href="https://1.bp.blogspot.com/-aXEDh6ooecQ/V0m9opH1FXI/AAAAAAAAAKo/pL9P15PznI4Ruldj-fw7tMdr9UI4DLQ0ACLcB/s1600/CamoTactics%2Bsuprisebuttsex.gif" target="_blank">well camouflaged or behind them</a>. How well you are camouflaged depends on how well your current camouflage color matches the terrain color. It also depends on the distance from the target. A sensor system makes sure that even if you cannot be seen, you still can be heard. The soon to be released demo version 7.1 features day and night cycles and lighting effects.<br />
<br />
<i>What's to come:</i> hiding in bushes and being in the shadow will make you harder to spot. Appropriate sound design, weather conditions like fog, rain, thunder, snow, many strange and bizarre plants and animals that you may encounter (who may eat you alive while you sleep) are planned. The game plays on a alien planet and as such I want to display an
adequate atmosphere and make the impression of a whole new world for you
to explore. I want this game not only be fun, but also an unique experience for YOU. <br />
<br />
<br />
<b>Detailed Combat:</b><br />
<br />
<i>What's already in:</i> Weapons have attachments like scopes and magazines that <a data-saferedirecturl="https://www.google.com/url?hl=de&q=https://pbs.twimg.com/media/CjjpxENWsAAtvga.jpg:large&source=gmail&ust=1465597318882000&usg=AFQjCNFvkUZboNNJuTYOjVyAyEc39w3Shw" href="https://pbs.twimg.com/media/CjjpxENWsAAtvga.jpg:large" target="_blank">can be edited</a>. They affect overall weapon performance. I want players to discover and collect new guns and mods. This mechanic is very similar to weapon modding in Fallout 4. Weapons overheat and break as you use them, too. To shield you from different types of projectiles <a data-saferedirecturl="https://www.google.com/url?hl=de&q=http://media.indiedb.com/images/games/1/33/32621/equipment.png&source=gmail&ust=1465597318882000&usg=AFQjCNGn1Sji12JCGP_5zICRU4UrBLMfRg" href="http://media.indiedb.com/images/games/1/33/32621/equipment.png" target="_blank">you can equip armor</a>. It's possible to use health kits and repair kits as well. If you're not boarding and driving them, <a data-saferedirecturl="https://www.google.com/url?hl=de&q=http://media.indiedb.com/images/members/2/1151/1150829/profile/animation.1.gif&source=gmail&ust=1465597318882000&usg=AFQjCNEdSYwg-7DVabl0qwwTCYGjglFPpQ" href="http://media.indiedb.com/images/members/2/1151/1150829/profile/animation.1.gif" target="_blank">vehicles explode if you destroy them.</a><br />
<br />
<i>What's to come:</i> The possibility to freely assemble your own guns is subject of future versions. Earlier versions included rocket launchers and shotguns, which will definitely come back. That will include close combat weapons.<br />
<div>
</div>
<div>
<br />
<br /></div>
<b>World and Character Depth</b><i><br /><br />What's to come:</i> The
game gives the player a whole new world to explore. It's a
futuristic society that sometime 2000 years ago crashed on an alien and
hostile planet (that happened to be home planet of an ancient precursor
alien race). That also means: spaceships! Well, ancient wrecks for you to explore, that is! With notes, dialog, and speech bubbles the player can
explore the characters, animals, plants, locations, technology, history and structure of society humanity
has adapted in this strange world.<br />
<br />
The story is written out for the most part and was as described as "inspirational" and "giving a different perspective" by some proofreaders. It will be delivered via missions and presentation-style cut scenes.<br />
<br />
<br />
<br />
<b>Inspiration</b><br />
<br />
CamoTactics started out as simple prototype that has grown a lot in two years. Many games inspired me to make it what it is today. Let me list the most prominent ones:<br />
<br />
<ul>
<li>ARMA II</li>
<li>Thing Thing Arena</li>
<li>Metro 2033</li>
<li>Metal Gear Solid 3</li>
<li>Fallout 3</li>
</ul>
<br />
<i>During those two years developing this game, I've readjusted it quite
a few times. There was a huge setback, too, considering I switched
frameworks halfway through which delayed its release. But it's back, being better
than ever.</i><br />
<br />
<br />
<br />b5cullyhttp://www.blogger.com/profile/18226073714178896899noreply@blogger.com0tag:blogger.com,1999:blog-8406384367972501451.post-65460550680929318452016-05-29T09:44:00.000-07:002017-02-23T17:39:26.733-08:00Game Localization using Java Bundles<br />
I toyed around with two ways how to implement Localization in Java. Let me present you the two ways I've implemented and which are better for you to use. I am assuming you know how to use Java Resource Bundles. If not, the check <a href="http://docs.oracle.com/javase/6/docs/api/java/util/ResourceBundle.html">oracle the tutorial here</a> or check <a href="https://youtu.be/mnDogLKY014">this video I made here</a>. In my examples, I will be using LibGDX, however, the code is almost the same. <br />
<br />
<br />
The methods have both up and downsides which I'll discuss later.<br />
<br />
<br />
<span style="font-size: x-large;">Using Object Reflection</span><br />
<br />
This method I worked out runs over all fields of one class and translates String types of fields (including fields in superclasses). The value of that field is being used as localization variable. Fields to be translated are marked with an annotation. This is helpful when you don't want to translate every single String in a class, and say, use untranslated Strings for object IDs.<br />
<br />
You have a localization annotation like this:<br />
<br />
<code>/**<br /> * Marks a field to be localized.<br /> * The content of the field is being used to localize it.<br /> * @author B5cully<br /> */<br />@Retention(RetentionPolicy.RUNTIME)<br />@Target(ElementType.FIELD)<br />public @interface Localized {<br /> <br />}</code>
<br />
<br />
A very simple class. It's just a marker, after all.<br />
<br />
The object is being localized like this:<br />
<span style="font-size: x-small;"><br /></span>
<span style="font-size: x-small;"><code> </code></span><br />
<span style="font-size: x-small;"><code> private static I18NBundle translations= ... </code></span><span style="font-size: x-small;"><code>// init the the bundle. This is libgdx specific, </code></span><br />
<span style="font-size: x-small;"><code> // but works the same with a java resource bundle</code></span><br />
<span style="font-size: x-small;"><code> // the call may look a bit different</code></span><br />
<span style="font-size: x-small;"><code> /**<br /> * Localizes an object.<br /> * @param o <br /> */<br /> public static void localize(Object o) {<br /> Class current = o.getClass();<br /> do{<br /> try { <br /> Field[] fields = current.getDeclaredFields();<br /> for( Field field : fields ) {</code></span><br />
<span style="font-size: x-small;"><code> //the following is a hack to make the field temporarily accessible<br /> boolean accessible = field.isAccessible();<br /> field.setAccessible(true);<br /> //check if the annotation exist<br /> Localized annotation = field.getAnnotation(Localized.class);<br /> if( annotation != null ) {</code></span><br />
<span style="font-size: x-small;"><code> //localize the content of the field here<br /> String localized = translations.get((String) field.get(o));<br /> field.set(o, localized);<br /> }<br /> field.setAccessible(accessible);<br /> }<br /> } catch (SecurityException ex) {<br /> ex.printStackTrace();<br /> } catch (IllegalArgumentException ex) {<br /> Logger.getLogger(Localization.class.getName()).log(Level.SEVERE, null, ex);<br /> } catch (IllegalAccessException ex) {<br /> Logger.getLogger(Localization.class.getName()).log(Level.SEVERE, null, ex);<br /> }<br /> current = current.getSuperclass();<br /> } while( current != null ); <br /> }</code></span><br />
<br />
An object I want to translate may look like this:<br />
<br />
<code> public class CTWindow {<br /><br /> @Localized<br /> public String title = "loc_window";</code><br />
<code><code> public String id = "Window001";</code> </code><br />
<code>} </code>
<br />
<br />
Using this code, only the title will be translated by the localize() method. However, this may not work as elegantly for switching languages in a live system. <br />
<br />
<br />
<br />
<span style="font-size: x-large;">Using Field Names as identifiers</span><br />
<br />
The other method is to use canonical names in your properties file. For example, your property file has an entry like this: <i>com.neutronio.Infantry.hitpoints = Hitpoints</i>. When you translate the field of an object, all you have to do is to get its class and field to obtain the localization.<br />
<br />
What sounds nice in theory, isn't as easy in practice. We need multiple methods to achieve this.<br />
<br />
<span style="font-size: x-small;"><code> private static I18NBundle translations= ... // init the the bundle. This is libgdx specific, </code></span><br />
<span style="font-size: x-small;"><code> // but works the same with a java resource bundle</code></span><br />
<span style="font-size: x-small;"><code> // the call may look a bit different </code></span><br />
<span style="font-size: x-small;"><code> /**<br /> * Gets the standard file path for a locale. This is required to</code></span><br />
<span style="font-size: x-small;"><code> * to turn a path of a properties file into desired format using its tag.<br /> * @param locale<br /> * @return <br /> */<br /> public static String convertPath( Locale locale) {<br /> String tag = locale.toLanguageTag().replace('-', '_');<br /> return tag; <br /> }<br /> <br /> /**<br /> * Obtains a localized variable by<br /> * a simple field name and class.<br /> * @param field<br /> * @return <br /> */<br /> public static String localizedVar(Field field) {<br /> if( field == null) return "";<br /> return field.getDeclaringClass()</code></span><br />
<span style="font-size: x-small;"><code> .getCanonicalName()+"."+field.getName(); <br /> }<br /> <br /> /**<br /> * Gets a field by name and class. Null if none was found.</code></span><br />
<span style="font-size: x-small;"><code> * This method works recursively in all superclasses. </code></span><br />
<span style="font-size: x-small;"><code> * @param name<br /> * @return <br /> */<br /> public static Field getField(Class clazz, String name) {<br /> Exception exception1 = null;<br /> Exception exception2 = null;<br /> Class current = clazz;<br /> Field result = null;<br /> do{<br /> try { <br /> Field[] fields = current.getDeclaredFields();<br /> for( Field field : fields ) {<br /> boolean accessible = field.isAccessible();<br /> field.setAccessible(true);<br /> if( Objects.equals(field.getName(), name) ) {<br /> result = field;<br /> break;<br /> }<br /> field.setAccessible(accessible);<br /> }<br /> } catch (SecurityException ex) {<br /> ex.printStackTrace();<br /> exception2 = ex;<br /> Logger.getLogger(Localization.class.getName()).log(Level.SEVERE, <br /> "No acess to Field " + name + " in " + </code></span><br />
<span style="font-size: x-small;"><code> clazz.getCanonicalName() + ".", ex);<br /> }<br /> current = current.getSuperclass();<br /> if( result != null) break;<br /> } while( current != null );<br /> return result;<br /> }<br /> <br /> /**<br /> * This is the method that ultimately translates the field.</code></span><br />
<span style="font-size: x-small;"><code> * Obtains a statically defined localized string.<br /> */<br /> public static String getLocale(Class clazz, String name) {<br /> Field field = getField(clazz, name);<br /> if( field == null) return name;<br /> return translations.get(localizedVar(field));<br /> }</code></span>
<br />
<br />
While this sounds like a handy approach there is one huge downside to it: Say my CTWindow class is extended with a MainMenuScreen. So what happens? Due to the nature of this algorithm, I can't define anything like <i>MainMenuScreen.title = Main Menu</i> instead of <i>CTWindow.title= Some Title </i>in my properties file. That means the String in the CTWindow.title local variable is stuck and cannot be redefined by subclasses. That is because of the <i>field.getDeclaringClass()</i> part in <i>localizedVar()</i>. You can work around this if you change the methods by providing the class of the object instead class where the field is being declared, like so:<br />
<br />
<span style="font-size: x-small;"><code> /**<br /> * Obtains a localized variable by<br /> * a simple field name and class.<br /> * @param field<br /> * @return <br /> */<br /> public static String localizedVar(Class declaring, Field field) {<br /> if( field == null) return "";</code></span><br />
<span style="font-size: x-small;"><code><span style="font-size: x-small;"><code> if( declaring == null) return "";</code></span></code></span><br />
<span style="font-size: x-small;"><code><span style="font-size: x-small;"><code> </code></span> return declaring.getCanonicalName()+"."+field.getName(); </code></span><br />
<span style="font-size: x-small;"><code> } </code></span><br />
<br />
I haven't tried this out yet, so I cannot say for sure if this works! Let me know if it does. ;)<br />
<br />
You also can still use the localize() method ontop of this, as described further above, so both of these methods can be combined together. If combined, they may actually offer the possibility to change language in a live system, as the field names are used directly for translation. <br />
<br />
But how do you treat lists or collections of Strings?!<br />
<br />
That's a topic for another article!<br />
<br />
<br />
I hope I brought you closer to the topic of localization. Thanks for reading! I hope you enjoyed it.b5cullyhttp://www.blogger.com/profile/18226073714178896899noreply@blogger.com0tag:blogger.com,1999:blog-8406384367972501451.post-55100956097173063082016-05-28T16:14:00.005-07:002017-02-23T17:42:50.759-08:007 Ways to Boost Your ProductivityWe've all been there once, wasting our time then wondering where it went. So how do you actually boost your productivity? <br />
<br />
I collected a few helpful tips here:<br />
<br />
<br />
<ol>
<li><b>Get rid of all distractions. </b>Get your focus right! Log out to all your social network accounts. Turn of your phone. Turn off internet, too, if it's not crucial. Spend a few hours doing what you planned without any distractions. DO IT! <br /><br /><br /><div style="text-align: center;">
<img alt="https://i.ytimg.com/vi/Z6gG3tKDBlk/maxresdefault.jpg" class="shrinkToFit" height="179" src="https://i.ytimg.com/vi/Z6gG3tKDBlk/maxresdefault.jpg" width="320" /></div>
<br /></li>
<li><b>Find a way to organize yourself</b>. Keep a to-do list. If you're an indiedev, you can use <a href="http://hacknplan.com/">HackNPlan</a>. Don't lose track of what you're doing - which leads me to the third point.<br /> <br /></li>
<li><b>Review how far you've come</b> and ask yourself if it helps <b>achieving your goals</b>. You HAVE to do this no matter what you're trying to achieve (no matter if you want to become better as a person, live a better life, or fulfill your biggest dreams). Dream big and make it happen!<br /><br /></li>
<li><b>Make sure your work environment is well-lit.</b> Bright light encourages your brain to focus more. Too less and you get in sleepy mode!<br /><br /></li>
<li><b>Make sure your work environment is tidy</b> if you work on tasks requiring a lot of brain juice. For creative tasks, a bit of a chaos may actually help finding ideas. <br /><br /></li>
<li><b>Make sure you don't work with a full belly.</b> That's when all your blood is in your intestines instead of your brain. The best time for mental work is with empty stomach after a walk, workout, or cold shower, when your metabolism is all fired up, feeding your brain with valuable oxygen. Breathing exercises in fresh air may help, too.<br /><br /></li>
<li>A <a href="http://www.dailymail.co.uk/health/article-1212579/A-bowl-blueberries-day-keeps-brain-active-afternoon.html">cup of blueberries and other fruit</a> can help <b>boosting your mental capabilities</b>.<br /><br /><div style="text-align: center;">
<img alt="https://upload.wikimedia.org/wikipedia/commons/0/0b/Blueberries-In-Pack.jpg" class="overflowing" height="275" src="https://upload.wikimedia.org/wikipedia/commons/0/0b/Blueberries-In-Pack.jpg" width="320" /></div>
</li>
</ol>
<br /><br />
How do you keep your productivity high? How do you keep it? Let me know in the comments!b5cullyhttp://www.blogger.com/profile/18226073714178896899noreply@blogger.com0tag:blogger.com,1999:blog-8406384367972501451.post-10876708622734915552016-05-28T08:49:00.002-07:002017-02-23T17:54:50.737-08:00CamoTactics 7.0 is out! [+Download]I am very happy to announce the CamoTactics 7.0 Build is FINALLY online. Get it here!<br />
<div data-mce-style="text-align: center;" style="text-align: center;">
<br /><a data-mce-href="http://www.indiedb.com/games/camo-tactics/downloads/camotactics-70" href="http://www.indiedb.com/games/camo-tactics/downloads/camotactics-70" target="_blank" title="Download CamoTactics 7.0 - Indie DB"><img alt="CamoTactics 7.0" data-mce-src="http://button.indiedb.com/download/medium/103826.png" src="http://button.indiedb.com/download/medium/103826.png" /></a></div>
<br /><br />I hope you enjoy stealing your enemies' stuff...<br />
<br data-mce-bogus="1" />
<div data-mce-style="clear: both; text-align: center;" style="clear: both; text-align: center;">
<a data-mce-href="https://3.bp.blogspot.com/-23XWYzg2YS8/V0m9p1rGMOI/AAAAAAAAAKs/NvkVZtQiB0MKB1XuDITShhPcsltZ7UELwCLcB/s1600/CamoTactics%2Bstealing%2Bdem%2Bturrets.gif" data-mce-style="margin-left: 1em; margin-right: 1em;" href="https://3.bp.blogspot.com/-23XWYzg2YS8/V0m9p1rGMOI/AAAAAAAAAKs/NvkVZtQiB0MKB1XuDITShhPcsltZ7UELwCLcB/s1600/CamoTactics%2Bstealing%2Bdem%2Bturrets.gif" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-mce-src="https://3.bp.blogspot.com/-23XWYzg2YS8/V0m9p1rGMOI/AAAAAAAAAKs/NvkVZtQiB0MKB1XuDITShhPcsltZ7UELwCLcB/s320/CamoTactics%2Bstealing%2Bdem%2Bturrets.gif" height="287" src="https://3.bp.blogspot.com/-23XWYzg2YS8/V0m9p1rGMOI/AAAAAAAAAKs/NvkVZtQiB0MKB1XuDITShhPcsltZ7UELwCLcB/s400/CamoTactics%2Bstealing%2Bdem%2Bturrets.gif" width="400" /></a></div>
<br /><br />... and sneaking up behind them! <br /><br />
<div data-mce-style="clear: both; text-align: center;" style="clear: both; text-align: center;">
<br /><a data-mce-href="https://1.bp.blogspot.com/-aXEDh6ooecQ/V0m9opH1FXI/AAAAAAAAAKo/pL9P15PznI4Ruldj-fw7tMdr9UI4DLQ0ACLcB/s1600/CamoTactics%2Bsuprisebuttsex.gif" data-mce-style="margin-left: 1em; margin-right: 1em;" href="https://1.bp.blogspot.com/-aXEDh6ooecQ/V0m9opH1FXI/AAAAAAAAAKo/pL9P15PznI4Ruldj-fw7tMdr9UI4DLQ0ACLcB/s1600/CamoTactics%2Bsuprisebuttsex.gif" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-mce-src="https://1.bp.blogspot.com/-aXEDh6ooecQ/V0m9opH1FXI/AAAAAAAAAKo/pL9P15PznI4Ruldj-fw7tMdr9UI4DLQ0ACLcB/s320/CamoTactics%2Bsuprisebuttsex.gif" height="288" src="https://1.bp.blogspot.com/-aXEDh6ooecQ/V0m9opH1FXI/AAAAAAAAAKo/pL9P15PznI4Ruldj-fw7tMdr9UI4DLQ0ACLcB/s400/CamoTactics%2Bsuprisebuttsex.gif" width="400" /></a></div>
<br data-mce-bogus="1" />
After you have finished them off, of course!<br />
<br data-mce-bogus="1" />
<center>
<img alt="animation 1" height="284" src="http://media.indiedb.com/images/members/2/1151/1150829/profile/animation.1.gif" width="393" /></center>
<br /><br />Got praise? Got suggestions? Got something you don't like? Please share that with me!<br /><br />Make sure to check out <a data-mce-href="http://neutroniogames.blogspot.de/" href="http://neutroniogames.blogspot.de/">my blog</a>. Follow <a data-mce-href="https://twitter.com/camotacticsgame" href="https://twitter.com/camotacticsgame">CamoTactics official twitter</a> for updates or <a data-mce-href="https://twitter.com/b5cully" href="https://twitter.com/b5cully">my personal twitter</a> for&nbsp;indiedev ramblings! b5cullyhttp://www.blogger.com/profile/18226073714178896899noreply@blogger.com0tag:blogger.com,1999:blog-8406384367972501451.post-44153442941074414012016-05-26T05:10:00.000-07:002017-02-23T17:43:04.319-08:00Censorship in games: A Means of Control & Power<b>There have been quite a few outcries in the gaming scene lately. People have asked developers to remove the suggestive animations of Mika from Streetfighter and Tracer from Overwatch. Now disregarding the hilarity of people getting offended by moving 3D models of women and considering the scope this phenomenon seem to have acquired - I personally do not think this is about "<i>sexual objectification of women</i>" anymore. This is about control. Control over content creators (here: game developers) and their creative decisions.</b><br />
<br />
Let me elaborate and put this into a bigger context.<br />
<br />
Society needs ideas and information to grow. In order to figure out the ideal living circumstances, and mind set for their personal growth and the ideal, humans need both of these things. Because humans are gregarious creatures, we are <strike>always</strike> often in contact with others and learning from those around us. Not only we learn for ourselves, but also as a community. We are in a constant state of "collective learning". <br />
The more information we have, the likelier we are to connect the dots - and thus find new ideas and perspectives (if equipped with the appropriate intelligence). I think you can call this an "evolution of ideas": the more diverse these ideas, the better. They evolve faster than laws, rules, hierarchy and (infra-)structure of a society, too.<br />
<br />
And this is where it gets interesting. <br />
<br />
<span style="font-size: large;">An attempt to control this process is an attempt to control humans and the society we live in.</span><br />
<br />
Individuals with their own thinking capability can have powerful thoughts. Thoughts that may pose a danger to established rules and holders of power. Remember: ideas evolve faster than laws and rules. It's why we are still stuck with fossil fuels (coal and oil) that have been around society for 200 years or more. And that's exactly what suppressing new things does: make society slow down or even move backwards.<br />
<br />
<br />
<span style="font-size: large;">If an idea gets enough momentum, it may pose a danger to the current status quo.</span> <br />
<br />
See why censorship is a powerful tool, no matter the form? (Not only in gaming... just look over to the tech scene...)<br />
<br />
If game developers give in to "sexually objectified" 3D depictions of women, they will easily give in to other demands as well. Give them mobs a finger - they'll take the entire hand. Happens a lot if you raise children the wrong way, too.<br />
<br />
It is important to censors to feed and maintain an angry mob of cronies (mentally unstable, desperate people) that transform into a state of outcry when something is not going as they want. Then, they will fire up their outlets and moles disguised as independent journalists to mobilize the mobs and fabricate outrage. <a href="https://twitter.com/hashtag/ReclaimtheInternet?src=hash" target="_blank">Gaming isn't the only media this is happening to, either.</a><br />
<br />
I<b>t does not matter what political spectrum this mob aligns itself with. They are all pawns in the same game. </b><br />
<br />
Feeding these angry mobs is an invaluable asset, as it kills multiple birds with one stone. For one, it thwarts those whose ideas are ahead of their time (or at least attempts to). It distracts people from the real issues and the ones pulling the strings. Someone who is in distress and seeking comfort in authority and being part of a <strike>cult</strike> group cannot form critical thoughts themselves - and therefore cannot become a dangerous wolf in the process.<br />
<br />
<span style="font-size: large;">The aim is to create a downwards spiral of negativity, outrage and despair to keep as many people as possible away from the feat of creativity and critical thinking.</span><br />
<br />
After all, you wouldn't want those wolves to destroy your <strike>shitty click-bait site </strike>business you've built up over the years.<br />
<br />
Oh wait...<br />
<br />
<div style="text-align: center;">
<img alt="https://pbs.twimg.com/media/Chj35u3VEAAx_aB.jpg" height="203" src="https://pbs.twimg.com/media/Chj35u3VEAAx_aB.jpg" width="320" /> </div>
<br />
<br />
So if you are a creator let me tell you this. Create whatever you want with whatever ideas you have, even if they are controversial - know that controversy is needed for human society to evolve.<br />
<br />
<b>Know that just because someone has a megaphone doesn't mean they are the majority or an actual or potential costumer (or in other words: matter). </b><br />
<br />
If you piss off the right people, know that you're doing something right: <a href="http://neutroniogames.blogspot.de/2016/05/a-message-to-fellow-indiedevs.html" target="_blank">namely standing up for yourself and what you believe in</a>.<br />
<br />
And that's what life should be all about.<br />
<br />
Cheers!<br />
<br />b5cullyhttp://www.blogger.com/profile/18226073714178896899noreply@blogger.com0tag:blogger.com,1999:blog-8406384367972501451.post-26084364238866539292016-05-25T15:09:00.000-07:002017-02-23T17:45:04.679-08:00CamoTactics Devlog #2: Weapon Mods, Camouflage<div class="separator" style="clear: both; text-align: left;">
<b>With the switch to libGDX as framework CamoTactics received a huge
setback in development. However, this is compensated by a much more
powerful framework that allows me to polish up the game more than
before. More precise graphics, lighting systems, improved camouflage
mechanics, better physics simulation are only a few examples.</b></div>
<br /><br />
I hope you enjoy this demonstration of the soon to be released demo version 7.0!<br />
<br /><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-sghtirb9eug/V0YhQK6R-dI/AAAAAAAAAKY/eOjyLscH59ItOBbTF2a_nFBSobZXvNfjgCLcB/s1600/battle.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="232" src="https://4.bp.blogspot.com/-sghtirb9eug/V0YhQK6R-dI/AAAAAAAAAKY/eOjyLscH59ItOBbTF2a_nFBSobZXvNfjgCLcB/s400/battle.png" width="400" /> </a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /><br />Watch how camouflage, stealth and customized weapons work here. Includes insight on versions to come.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div style="text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/OS2CeMPHKHY/0.jpg" frameborder="0" height="350" src="https://www.youtube.com/embed/ojTxwlueNqA?feature=player_embedded" width="500"></iframe></div>
<br />
<br />
<br />
<br />
7 is my lucky number - I hope it's yours too!<br />
<br />
Thanks for reading!<br />
<br />
Stay tuned for the demo! <br />
<br />
<br />b5cullyhttp://www.blogger.com/profile/18226073714178896899noreply@blogger.com0tag:blogger.com,1999:blog-8406384367972501451.post-10028204723081041952016-05-17T14:28:00.000-07:002017-02-23T17:45:13.391-08:00A Message To Fellow IndiedevsHello fellow Indiedevs.<br />
<br />
I want to speak to you about something.<br />
<br />
About something I think is very important.<br />
<br />
We live in an age where people lose trust to large faceless corporations. All over the world people are distancing themselves from institutions that neglected their will, looking for real faces who are authentic and human. Anyone who is not will not survive on the market in long-term, I am sure.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-eO-9uL6d9tU/VzuDrjmSJjI/AAAAAAAAAJ4/CSsHoL-ZQWwX1UtSAG5EmG-Wq1v3rV3aQCLcB/s1600/anonymous-550.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://2.bp.blogspot.com/-eO-9uL6d9tU/VzuDrjmSJjI/AAAAAAAAAJ4/CSsHoL-ZQWwX1UtSAG5EmG-Wq1v3rV3aQCLcB/s1600/anonymous-550.png" /></a></div>
<br />
<br />
Considering all these changes, I want to encourage you to be true to yourself and your principles. Be yourself. Be authentic. Be honorable. Do good deeds. Do not hide yourself or your talents.<br />
<br />
Eventually, you WILL attract the right people (and the right consumers) in your life. Quality before quantity.<br />
<br />
Why do you need to buy followers, readers, views or clicks if you can have a few loyal friends and customers? People that actually engage with you and care enough for you and whatever you are producing?<br />
<br />
Why hide yourself when it could be used to coin your brand? You know, giving it a personal touch. Why not making use of it to promote yourself and the games you are making? <br />
<br />
That being said, we both know that there are forces in the works that take influence in the process of making games. I want you to not bow to anyone when you are creating your works of art. Do not give in to no matter what side they may come from. Do whatever you think is right with your game. If you're rustling people's jimmies, know that you are doing something right. Know that this is exactly what a real artist is supposed to do.<br />
<br />
Know that you are born strong by nature. It's important to realize and acknowledge that strength. You don't have to please everyone - only yourself. You only grow if you struggle.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-tvzerwJZhO0/VzuFVl8y2mI/AAAAAAAAAKI/g_uQ73hr9uYb1xwadUS9JqTuSGC8CYnBACLcB/s1600/life.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="275" src="https://4.bp.blogspot.com/-tvzerwJZhO0/VzuFVl8y2mI/AAAAAAAAAKI/g_uQ73hr9uYb1xwadUS9JqTuSGC8CYnBACLcB/s320/life.jpg" width="320" /></a></div>
<br />
<br />
Find niches... serve and please those who appreciate your genuineness - and reward you for it. Those very same people will have your back if you are being attacked by whoever. <br />
<br />
Make a business out of who you are and market your game along with it to the right people. It's a tricky task but I am persuaded it can be achieved.<br />
<br />
Be living proof of this!<br />
<br />
Thanks for taking the time to read me!<br />
Happy creating!b5cullyhttp://www.blogger.com/profile/18226073714178896899noreply@blogger.com0tag:blogger.com,1999:blog-8406384367972501451.post-23444692202531537912016-05-16T15:54:00.001-07:002017-02-23T17:45:33.973-08:006 Things that make Your Box2D world freezeEver encountered problems with your Box2D setup freezing or locking up and you don't know why?<br />
<br />
<br />
Yes?<br />
<br />
Then read on! <br />
<br />
There are quite a few things you can do wrong with Box2D. I have collected a few common mistakes here. These mistakes include...<br />
<br />
<br />
<span style="font-size: x-large;">1) ... Changing the position of a body manually!</span><br />
Generally, it's a bad idea to modify any body information directly, e.g. by using Body.setTransform() or changing position with Body.getPosition().set(x,y). This makes all contacts currently processed by the simulation invalid and ocreates unpredictable behavior.<br />
<br />
<b>Solution</b>: Applying changes to velocity or position (including setting transformation) should always happen after the world has stepped. To do this, you can create a list of operations that is then processed after the world step. This can look a bit like this:<br />
<br />
<code> world.step(...);</code><br />
<code> if (!operations.isEmpty() )</code><br />
<code> {</code><br />
<code> operations.perform();</code><br />
<code> }</code><br />
<br />
See <a href="http://stackoverflow.com/questions/9611847/jbox2d-hangs-on-world-step" target="_blank">stackoverflow</a> for more of this issue. You can also try copying the vector to avoid modifying it when using vector math.<br />
<br />
<br />
<span style="font-size: x-large;">2) ... Destroying physic bodies during a callback! </span><br />
Raycasts and Queues are solved during a timestep. Modifying bodies during that process will cause Box2D to crash. Do not ever do this!<br />
<br />
<b>Solution: </b>The code setup in 1) can help you out here. Send your destroy operations to a list containing bodies to be destroyed, where it is processed after the world has stepped. I do this in my game and it works perfectly fine.<br />
<br />
<br />
<span style="font-size: x-large;">3) ... Vectors getting NaN as values!</span><br />
This happens if you apply an enormous amount of angular or linear impulses to your physic bodies, to the point they get catapulted to nowhere, because they adopt infinite velocity (and thus position).<br />
<br />
<b>Solution:</b> Check your formulas and make sure the values are usable! It's a good idea to include a check on whether your values are valid when doing calculations; and throwing an error in case they don't.<br />
<br />
<br />
<span style="font-size: x-large;">4) ... References to destroyed physic bodies!</span><br />
<span style="font-size: small;">Once you have destroyed a body, it should not be referenced anywhere again.</span><br />
<br />
<span style="font-size: small;"><b>Solution:</b> Once destroyed, a body reference should always be set to null!</span><br />
<br />
<br />
<span style="font-size: x-large;">5) ... </span><span style="font-size: large;"><span style="font-size: x-large;">Creating physic bodies when the world is in the middle of a time step</span>!</span><br />
<span style="font-size: large;"><span style="font-size: small;">Because if you do, </span></span><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;">granted, </span></span>you will get a freeze! This has caused me a lot of headaches personally<span style="font-size: large;">.</span></span></span><br />
<br />
<span style="font-size: large;"><span style="font-size: small;"><b>Solution:</b> You can use a similar solution as in 1): creating your objects after the world has stepped by putting them in your operations queue. </span></span><br />
<br />
<br />
<span style="font-size: x-large;">6) ... Creating physic bodies that are created inside other physic bodies!</span><br />
This causes your created physic bodies to be slung away like a bowl of peanuts gone crazy - if it doesn't crash first! In my experience, this happens when you have shooting mechanics, but the spawned projectiles touch the entity they were shot from.<br />
<br />
<b>Solution: </b>There are numerous ways to solve this. You can either make sure your bodies are small enough and far away enough from a defined projectile spawning point - or if collision behavior doesn't matter too much, you can use <a href="http://www.aurelienribon.com/blog/2011/07/box2d-tutorial-collision-filtering/" target="_blank">collision groups and masking</a> to avoid them touching each other.<br />
<br />
<br />
<br />
<span style="font-size: large;"><span style="font-size: x-large;"><span style="font-size: small;">I hope this helped you with any issues you had! If you still have problems, <a href="https://twitter.com/b5cully" target="_blank">let me know</a> - I'll be happy to help you out.</span></span></span>b5cullyhttp://www.blogger.com/profile/18226073714178896899noreply@blogger.com0tag:blogger.com,1999:blog-8406384367972501451.post-12040741061694179842016-05-16T13:19:00.001-07:002017-02-23T17:39:56.168-08:005 Reasons Why Your Game Should have Achievements<br />
A while back <a href="https://twitter.com/b5cully/status/727954564255653890" target="_blank">I was asking my twitter followers</a> about achievements and their significance in a game. <br />
The general sentiment was that achievements were an important feature that you should consider adding. Let me present you the results and explain why.<br />
<br />
Achievements...<br />
<br />
<br />
<span style="font-size: x-large;">1. ...Make Players Stick to your Game</span><br />
Gamers want challenges. So by providing them achievements they can complete you are also giving them a sense of accomplishment once they finished them. They will want to complete as many achievements as possible and play your game longer, too. Even better if you're also giving them rewards while doing so!<br />
<br />
<br />
<span style="font-size: x-large;">2. ...Make Players explore Your Game</span><br />
When a player sees a certain achievement, they will spend time trying to do things that may help them get it. This gives them a very good reason to explore your game and scoop out all possibilities.<br />
<br />
<br />
<span style="font-size: x-large;">3. ...Add Replayability & Variety </span><br />
In case your game has mechanics that allow usage of different strategies or play styles, achievements are the best way to let many gamers experience as many aspects of the game as possible. If you want to promote creativity, reward players for doing things differently. Having your hands on the knob called variety is, in my opinion, a very crucial tool of game design. I think Team Fortress 2 does this very well - even though in practice it doesn't always turn out so well!<br />
<br />
<div style="text-align: center;">
<img alt="http://65.media.tumblr.com/35534564b0c069dc16e53688db64aeb9/tumblr_mhrbwedGhv1qmp4f4o1_500.jpg" src="http://65.media.tumblr.com/35534564b0c069dc16e53688db64aeb9/tumblr_mhrbwedGhv1qmp4f4o1_500.jpg" height="400" width="400" /></div>
<br />
<span style="font-size: x-large;">4. ...Provide Guidance</span><br />
Achievements can give important information to the player, such as how the game is being played or what else can be done in your game. Players will know what gameplay, items etc. to look after just by checking the list of achievements - if you are providing them with one.<br />
<br />
<br />
<span style="font-size: x-large;">5. ...Encourage Competition </span><br />
Especially in online gaming communities, achievements are often worn as a badge of honor and proudly shown off to others. Paired with a leaderboard, that also increases the chance someone plays your game longer. <br />
<br />
<div style="text-align: center;">
<img alt="http://www.mememaker.net/static/images/memes/4342839.jpg" src="http://www.mememaker.net/static/images/memes/4342839.jpg" /></div>
<br />
I remember playing too much agar.io trying to get on the leaderboard in the first place...<br />
<br />
<br />
<span style="font-size: large;">Summary</span><br />
<span style="font-size: large;"><span style="font-size: small;">Achievements are a great way to enhance your game, even if it is a small one. They increase variety, add more challenges and makes players explore your game more. All of which that, if done right, eventually results in more fun and time spent playing.</span></span><br />
<br />
<span style="font-size: large;"><span style="font-size: small;">For further reading, you can check this video on <a href="https://youtu.be/hFM4eIAou5M" target="_blank">which types of achievements are the best ones (Youtube)</a>. Thanks for Mr. Aqua for showing me this, you know who you are!</span></span><br />
<br />
<span style="font-size: large;"><span style="font-size: small;">Thanks for reading! </span></span>b5cullyhttp://www.blogger.com/profile/18226073714178896899noreply@blogger.com0tag:blogger.com,1999:blog-8406384367972501451.post-2040000008071600862016-05-10T14:23:00.002-07:002017-02-23T17:40:17.190-08:00What really makes a game fun and worth playing? <br />
<div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em; text-align: center;">
<br /></div>
<br />
<span style="font-size: large;">What makes a game fun?</span><br />
<br />
That seems like a so simple question. The more I contemplate it, the more multilayered it becomes.<br />
<br />
<span style="font-size: large;">What is fun? </span><br />
<span style="font-size: large;"> </span><span style="font-size: large;"> </span><br />
<span style="font-size: large;">What triggers a fun experience?</span><br />
<br />
<span style="font-size: large;">How to create something that is fun?</span><br />
<br />
<br />
Fun is all about:<br />
<ul>
<li>challenge</li>
<li>reward</li>
<li>taking risks</li>
<li>exploration</li>
<li>the rush of the unknown</li>
<li>taking opportunities</li>
<li>collecting things</li>
<li>messing around and testing out limits</li>
<li>answering the question, "what would happen, if...?"</li>
</ul>
...all in a playful way. It's how nature makes all life learns its lessons. Fun can also be something that brings back childish wonder and curiosity and allows us
to reconnect to this deepest part of ourselves many of us learned to
"grow away" from. Maybe that's why games are generally liked by many people - whether it be tabletop games, video games, or also the games you played on the playground, or later the "mind games" adults play (games that sometimes turn into not so funny ones..).<br />
<br />
<br />
<span style="font-size: large;">How does fun in games look like? </span><br />
<br />
I can think of a couple of things. Generally spoken, flashy-ness and the right aesthetic can make a HUGE difference in making a game fun.<br />
<br />
If your explosions look amazing, the player will have endless fun making things blow up. For a while, they'll try to cause explosions whenever they can (<i>exploration</i> & <i>testing out your limits</i>).<br />
<br />
If your GUI features detailed LED displays that lighten up, players may act similarly. Good sign: when you're coding something like this and notice you end up playing with it instead of just testing it!<br />
<br />
If the sound design is exceptional, like in Don't Starve, only the act of opening up the build menu already contributes to the user having fun.<br />
<br />
<span style="font-size: large;"><br /></span>
<span style="font-size: large;">But it's not only aesthetics that make a game fun.</span><br />
<br />
<i>Rewarding</i> the player for interacting with the environment, like loot drops from enemies or treasure chests, is also a good way to make a game more enjoyable.<br />
<br />
To a degree, randomized outcomes (loot) gives uncertainty and make the player strive for more (<i>rush of the unknown</i>). Even if procedural generated content potentially becomes repetitive after a while, it can still give variety and spice up a game considerably. This is very well demonstrated in the game DoomRL or Phantasmal: House of the Shunned Ones, where each run will be different due to the fact the maps are generated and you find different equipment and enemies each time. Then, if you're lucky and good enough, you might even get to the end!<br />
<br />
Let's take a look at Minecraft. The sheer amount of possibilities to play the game and build whatever is on your mind is probably the most important reason why it has gotten so popular. Players would create new <i>challenges</i> for themselves and take on them as they build whatever is on their minds.<br />
<br />
In Fallout 4, I had a lot of fun just by <i>collecting</i> all weapon mods and using the best mods for my guns, because I am little perfectionist gun nut! Collecting things generally is a good idea, no matter what you collect: achievements, items, coins, badges, titles, obligatory notes that - as a whole - tell a story... or just screenshots of Fallout teddy bears!<br />
<a href="https://pbs.twimg.com/media/CWIptp3XIAADnF8.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img alt="https://pbs.twimg.com/media/CWIptp3XIAADnF8.jpg" border="0" class="shrinkToFit" height="400" src="https://pbs.twimg.com/media/CWIptp3XIAADnF8.jpg" width="300" /></a><br />
In games like the Fallout series, it was also fun to <i>test out your limits</i> in dialogue with the characters and see how they react - without suffering from potential backlash, as would happen real life. This can be a valuable social learning tool.<br />
<br />
<span style="font-size: large;">Things that can spoil fun a game:</span><br />
<br />
A reliance on too much luck can potentially spoil a game if the outcome becomes <i>too unpredictable</i>. It's important to mix in an adequate amount of player skill required if the player wants to advance in a level.<br />
<br />
Game mechanics that don't go too well and are in <i>conflict with each other </i>are another aspect that can spoil much of the fun. <br />
<br />
For example, take a look at Don't Starve: it's a survival game taking place in a procedural generated world, but exploration is actually discouraged by the fact time is very limited and you die in the dark. Damn Charlie stealing your soul at night! This also puts the player under a lot of pressure. Of course, this can be fun for certain players, but after a while patience runs low and most just prefer to quit the game instead. Something you, as someone who makes games, should avoid!<br />
<br />
<br />
I hope my insights gave you an interesting perspective on the topic "fun". Thanks to <a href="https://twitter.com/TheSnee" target="_blank">@TheSnee</a> for giving me some ideas for this article!<br />
<br />
If you want to check some more game development related articles, you may be interested in <a href="http://neutroniogames.blogspot.de/2016/05/guide-how-to-store-data-in-java.html" target="_blank">how to store your data in a Java game</a> or check these <a href="http://neutroniogames.blogspot.de/2016/05/5-free-must-have-tools-to-start-out.html" target="_blank">5 useful tools to start out gamedev</a>.b5cullyhttp://www.blogger.com/profile/18226073714178896899noreply@blogger.com0tag:blogger.com,1999:blog-8406384367972501451.post-42445112140378159892016-05-09T09:35:00.000-07:002017-02-23T17:55:22.342-08:00CamoTactics Report #8: Gifs Galore & Version 7 imminent!Hello my friends, b5cully reporting in with some new stuff to show to you!<br />
I'm proud and happy to announce that a new build is in the works and that it will be ready in 30th this May. Finally!<br />
<br data-mce-bogus="1" />
<br data-mce-bogus="1" />
With
the port to libgdx framework, 70% of the game had to be completely
redone from scratch. That practically means I created a new game using
ideas and a bit of code from the old prototypes I had. The result of
that you can see here: Blood, sweat and tears, but <i>oh boy, it is worth it!</i> <b>Let me show off some awesome features of the new build while it's still hot!</b><br />
<br data-mce-bogus="1" />
<br data-mce-bogus="1" />
Camouflage is now more interesting than before: Tanks got a <b>camo pattern</b> now and become <b>more transparent</b>
the more the camouflage color matches the ground color. This not only
affects your own vision - this stuff also affects the vision of all bots
you will play against!<br />
<br data-mce-bogus="1" />
<br data-mce-bogus="1" />
<div style="text-align: center;">
<img alt="camo2" src="http://media.indiedb.com/images/members/2/1151/1150829/profile/camo2.png" height="208" width="292" /><img alt="camo1" src="http://media.indiedb.com/images/members/2/1151/1150829/profile/camo1.png" height="208" width="292" /></div>
<br data-mce-bogus="1" />
<br />
<b>The interface got a complete makeover</b>, for example with a better <b>attachment editor</b> for your customized weapons:<br />
<br data-mce-bogus="1" />
<br data-mce-bogus="1" />
<div style="text-align: center;">
<img alt="CamoTactics Attachments 2" src="http://media.indiedb.com/images/members/2/1151/1150829/profile/CamoTactics_Attachments_2.gif" height="165" width="454" /></div>
<br />
<br />
<span class="spoiler">Weapons
also change size once you attach a scope or magazine to it (something
that didn't work before Version 7). Attachments do not have a function
yet (except the magazine). Oh and you can change equipment in a very
similar fashion!</span><br />
<span class="spoiler"><br /></span>
<span class="spoiler"><br /></span>
Check this fancy main menu that slides out when you hover over it:<br />
<br />
<br />
<div style="text-align: center;">
<img alt="CamoTactics Slide Menu" src="http://media.indiedb.com/images/members/2/1151/1150829/profile/CamoTactics_Slide_Menu.gif" height="115" width="456" /></div>
<br data-mce-bogus="1" />
<br data-mce-bogus="1" />
<b>Items that lay on the ground</b> use their original icon and change their scale to highlight they can be picked up. The <b>HUD</b> <b>below the soldier</b> is also noteworthy, as it <b>displays</b> <b>health, ammunition and reload status</b>. It will be later replaced by a better, more stylish HUD and the possibility to set your current target by pressing a button.<br />
<br data-mce-bogus="1" />
<br data-mce-bogus="1" />
<div style="text-align: center;">
<img alt="CamoTactics Wobble" src="http://media.indiedb.com/images/members/2/1151/1150829/profile/CamoTactics_Wobble.gif" height="242" width="436" /></div>
<br data-mce-bogus="1" />
<br data-mce-bogus="1" />
Inspired by an older dev build I had, I also made this nifty parallax main menu.<br />
<br />
<br />
<div style="text-align: center;">
<img alt="CamoTactics MainMenu 2" src="http://media.indiedb.com/images/members/2/1151/1150829/profile/CamoTactics_MainMenu_2.gif" height="306" width="455" /></div>
<br data-mce-bogus="1" />
<br data-mce-bogus="1" />
There are still a lot of features unnamed, and few more left to port from older versions!<br />
<br data-mce-bogus="1" />
<br data-mce-bogus="1" />
I hope you're as hyped as I am for this demo version 7! <br />
Stay tuned and thank you for reading!<br />
<br data-mce-bogus="1" />b5cullyhttp://www.blogger.com/profile/18226073714178896899noreply@blogger.com0