tag:blogger.com,1999:blog-27939459470397504062024-03-05T10:47:16.303-03:00StrikerX3's AdventuresStrikerX3 hacking through enemies and codeAnonymoushttp://www.blogger.com/profile/15191258139689524539noreply@blogger.comBlogger33125tag:blogger.com,1999:blog-2793945947039750406.post-37064347291040567702015-07-02T17:59:00.000-03:002015-07-02T17:59:27.021-03:00TCPRelay 0.4 beta 3TCPRelay 0.4 beta 3 is now available! Download the <a href="http://www88.zippyshare.com/v/v272ph9n/file.html" target="_blank" title="TCPRelay 0.3 alpha 3 32-bit download">32-bit</a> or <a href="http://www88.zippyshare.com/v/AE4ANH6n/file.html" target="_blank" title="TCPRelay 0.3 alpha 3 64-bit download">64-bit</a> version. You may also need to install the <a href="http://www.microsoft.com/en-us/download/details.aspx?id=17851" target="_blank" title="Microsoft .NET Framework 4 download">Microsoft .NET Framework 4</a>.<br />
<br />
<strong>What's new in this version:</strong><br />
<ul>
<li><strong>GUI</strong><ul>
<li><b>FIXED</b>: TCPRelay would fail on startup under some circumstances if there was no IP address configured in Bind to Interface.</li>
<ul></ul>
<ul></ul>
</ul>
</li>
</ul>
Check out the <a href="http://www.xsplit.com/forum/viewtopic.php?f=2&t=7159" target="_blank">official topic on XSplit's forums</a> and see for yourself all the great feedback people gave me.Anonymoushttp://www.blogger.com/profile/15191258139689524539noreply@blogger.com3tag:blogger.com,1999:blog-2793945947039750406.post-73046225678416912102015-07-02T07:58:00.004-03:002015-07-02T08:05:00.703-03:00ARK: Survival Evolved and Android AppOh boy, I've been playing <a href="http://store.steampowered.com/app/346110/">ARK: Survival Evolved</a> for a couple of weeks now and having a <i>ton</i> of fun! This is a game about survival in a world filled with pre-historical creatures, mostly dinosaurs, where you can tame almost all of them and ride them around! The guys behind the game are constantly updating it with new creatures almost every week, tons of bug fixes and new stuff to build and explore.<br />
<br />
I've been recording my adventures in ARK (in Portuguese) and <a href="https://www.youtube.com/playlist?list=PLjx1MfplQlk3cv6pNEnmivO9PBB5e2yIf">uploading them to YouTube</a>. Check that out:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/0-Ildo2BFNo/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/0-Ildo2BFNo?feature=player_embedded" width="320"></iframe></div>
<br />
In addition to that, I also took the time to learn some <a href="http://developer.android.com/index.html">Android development</a> and wrote a fairly simple app called <a href="https://play.google.com/store/apps/details?id=com.ivan.anacruse">Anacruse</a> where you have to tell the note name from a staff. Go download it!Anonymoushttp://www.blogger.com/profile/15191258139689524539noreply@blogger.com1tag:blogger.com,1999:blog-2793945947039750406.post-31398233638793892342015-03-20T18:42:00.000-03:002015-08-21T07:53:45.944-03:00TCPRelay 0.4 beta 2NOTE: there is a <a href="http://strikerx3.blogspot.com.br/2015/07/tcprelay-04-beta-3.html">newer version of TCPRelay here</a>.<br />
<br />
TCPRelay 0.4 beta 2 is now available! Download the <a href="http://www69.zippyshare.com/v/SXXMvvuN/file.html" target="_blank" title="TCPRelay 0.3 alpha 3 32-bit download">32-bit</a> or <a href="http://www69.zippyshare.com/v/93uXhcTD/file.html" target="_blank" title="TCPRelay 0.3 alpha 3 64-bit download">64-bit</a> version. You may also need to install the <a href="http://www.microsoft.com/en-us/download/details.aspx?id=17851" target="_blank" title="Microsoft .NET Framework 4 download">Microsoft .NET Framework 4</a>.<br />
<br />
<strong>What's new in this version:</strong><br />
<ul>
<li><strong>GUI</strong><ul>
<li><b>IMPROVED</b>: cosmetic improvements to the Advanced Settings window.</li>
<li><b>FIXED</b>: Advanced Settings window would fail to open again if closed by clicking the X button.</li>
<ul></ul>
<ul></ul>
</ul>
</li>
</ul>
Check out the <a href="http://www.xsplit.com/forum/viewtopic.php?f=2&t=7159" target="_blank">official topic on XSplit's forums</a> and see for yourself all the great feedback people gave me.Anonymoushttp://www.blogger.com/profile/15191258139689524539noreply@blogger.com5tag:blogger.com,1999:blog-2793945947039750406.post-57158771009967194602015-03-07T17:09:00.002-03:002015-08-21T07:53:39.930-03:00TCPRelay 0.4 beta 1NOTE: there is a <a href="http://strikerx3.blogspot.com.br/2015/07/tcprelay-04-beta-3.html">newer version of TCPRelay here</a>.<br />
<br />
TCPRelay 0.4 beta 1 is now available! Download the <a href="http://www75.zippyshare.com/v/sKD7iHYf/file.html" target="_blank" title="TCPRelay 0.3 alpha 3 32-bit download">32-bit</a> or <a href="http://www75.zippyshare.com/v/IVH3TIwE/file.html" target="_blank" title="TCPRelay 0.3 alpha 3 64-bit download">64-bit</a> version. You may also need to install the <a href="http://www.microsoft.com/en-us/download/details.aspx?id=17851" target="_blank" title="Microsoft .NET Framework 4 download">Microsoft .NET Framework 4</a>.<br />
<br />
<strong>What's new in this version:</strong><br />
<ul>
<li><strong>GUI</strong><ul>
<li><b>NEW</b>: added a new Advanced Settings window for tuning socket parameters</li>
<ul>
<li>Socket Send Buffer Size moved to this window</li>
<li>Added Receive Buffer Size</li>
<li>Added No Delay</li>
<li>Added Connection Timeout</li>
<li>Can set up parameters for both the application- and the remote-facing sockets</li>
<li>[b1] Added an option to allow binding remote connections to a different IP address</li>
</ul>
<ul></ul>
</ul>
</li>
</ul>
Check out the <a href="http://www.xsplit.com/forum/viewtopic.php?f=2&t=7159" target="_blank">official topic on XSplit's forums</a> and see for yourself all the great feedback people gave me.Anonymoushttp://www.blogger.com/profile/15191258139689524539noreply@blogger.com0tag:blogger.com,1999:blog-2793945947039750406.post-60554625313497435712015-03-03T23:06:00.001-03:002015-08-21T07:53:36.864-03:00TCPRelay 0.4 alpha 4NOTE: there is a <a href="http://strikerx3.blogspot.com.br/2015/07/tcprelay-04-beta-3.html">newer version of TCPRelay here</a>.<br />
<br />
TCPRelay 0.4 alpha 4 is now available! Download the <a href="http://www70.zippyshare.com/v/EaHWmNax/file.html" target="_blank" title="TCPRelay 0.3 alpha 3 32-bit download">32-bit</a> or <a href="http://www70.zippyshare.com/v/kaZbS5dp/file.html" target="_blank" title="TCPRelay 0.3 alpha 3 64-bit download">64-bit</a> version. You may also need to install the <a href="http://www.microsoft.com/en-us/download/details.aspx?id=17851" target="_blank" title="Microsoft .NET Framework 4 download">Microsoft .NET Framework 4</a>. Keep in mind that this is an alpha version; some features may not behave correctly.<br />
<br />
<strong>What's new in this version:</strong><br />
<ul>
<li><strong>GUI</strong><ul>
<li><b>NEW</b>: added a new Advanced Settings window for tuning socket parameters</li>
<ul>
<li>Socket Send Buffer Size moved to this window</li>
<li>Added Receive Buffer Size</li>
<li>Added No Delay</li>
<li>Added Connection Timeout</li>
<li>Can set up parameters for both the application- and the remote-facing sockets</li>
</ul>
<ul></ul>
</ul>
</li>
</ul>
Check out the <a href="http://www.xsplit.com/forum/viewtopic.php?f=2&t=7159" target="_blank">official topic on XSplit's forums</a> and see for yourself all the great feedback people gave me.Anonymoushttp://www.blogger.com/profile/15191258139689524539noreply@blogger.com2tag:blogger.com,1999:blog-2793945947039750406.post-38322813815845913732015-02-26T17:13:00.001-03:002015-08-21T07:53:32.206-03:00TCPRelay 0.4 alpha 3NOTE: there is a <a href="http://strikerx3.blogspot.com.br/2015/07/tcprelay-04-beta-3.html">newer version of TCPRelay here</a>.<br />
<br />
TCPRelay 0.4 alpha 3 is now available! Download the <a href="http://www61.zippyshare.com/v/IaHMLA1h/file.html" target="_blank" title="TCPRelay 0.3 alpha 3 32-bit download">32-bit</a> or <a href="http://www61.zippyshare.com/v/kGkIMvBX/file.html" target="_blank" title="TCPRelay 0.3 alpha 3 64-bit download">64-bit</a> version. You may also need to install the <a href="http://www.microsoft.com/en-us/download/details.aspx?id=17851" target="_blank" title="Microsoft .NET Framework 4 download">Microsoft .NET Framework 4</a>. Keep in mind that this is an alpha version; some features may not behave correctly.<br />
<br />
<strong>What's new in this version:</strong><br />
<ul>
<li><strong>General</strong><ul>
<li><b>NEW</b>: socket send buffer size can be tweaked from the console and GUI.</li>
<ul>
<li>Console: use the -sbs:## parameter.</li>
<li>GUI: use the newly added Send Buffer field to adjust the buffer size.</li>
<li>The default size is 8 KB.</li>
<li>Increasing this might help reduce or eliminate dropped frames, especially on connections with high latency to the server.</li>
</ul>
</ul>
</li>
</ul>
Check out the <a href="http://www.xsplit.com/forum/viewtopic.php?f=2&t=7159" target="_blank">official topic on XSplit's forums</a> and see for yourself all the great feedback people gave me.Anonymoushttp://www.blogger.com/profile/15191258139689524539noreply@blogger.com0tag:blogger.com,1999:blog-2793945947039750406.post-61850095684753895572014-12-04T20:22:00.000-02:002015-03-07T23:04:01.284-03:00TCPRelay is now open source!Some people have been requesting that I made TCPRelay open source. I finally decided to put it up on <a href="https://github.com/StrikerX3" target="_blank">GitHub</a> after adjusting the build processes for them.<br />
<br />
Here's the <a href="https://github.com/StrikerX3/TCPRelay-Java" target="_blank">Java version of TCPRelay</a>. The latest released version is <a href="http://strikerx3.wordpress.com/2012/07/01/tcprelay-0-1-1-beta/" target="_blank">0.1.1 beta</a>. The current code base is 0.2 and has a few small improvements.<br />
Here's the <a href="https://github.com/StrikerX3/TCPRelay.NET" target="_blank">.NET version of TCPRelay</a>. The latest released version is <a href="http://strikerx3.blogspot.com.br/2015/03/tcprelay-04-beta-1.html" target="_blank">0.4 beta 1</a>. The latest released versions are based on this.<br />
<br />
Have fun coding!Anonymoushttp://www.blogger.com/profile/15191258139689524539noreply@blogger.com0tag:blogger.com,1999:blog-2793945947039750406.post-70717554739739488752014-11-05T21:41:00.006-02:002014-11-05T21:44:53.016-02:00New YouTube channel and stuffHey there guys! A couple of friends and I have started an YouTube channel about our geeky interests: video games, comic books, fiction books, movies, TV shows, and much more! It's The Geek Salad! (We are not edible.) We're just starting out, so <a href="https://www.youtube.com/user/GeekSaladChannel">check us out</a>!<br />
<br />
I have not forgotten about <a href="http://strikerx3.blogspot.com.br/2014/05/getting-into-github.html">publishing the TCPRelay source code</a>, the <a href="http://strikerx3.blogspot.com.br/2014/08/writing-synthesizer-in-java.html">Java synthesizer</a>, the <a href="http://strikerx3.blogspot.com.br/2013/01/natural-selection-2-is-so-much-fun.html">gaming stream</a>, and <a href="http://strikerx3.blogspot.com.br/2012/07/the-entity-component-model.html">other stuff</a> I have <a href="http://strikerx3.blogspot.com.br/2012/07/using-xbox-360-controller-as-mouse-on.html">talked about</a> here. I'm just... <a href="http://tvtropes.org/pmwiki/pmwiki.php/Main/RidiculousProcrastinator">a little bit lazy</a>. :PAnonymoushttp://www.blogger.com/profile/15191258139689524539noreply@blogger.com0tag:blogger.com,1999:blog-2793945947039750406.post-69430911934381462952014-10-21T00:03:00.000-02:002015-08-21T07:53:28.358-03:00TCPRelay 0.4 alpha 2NOTE: there is a <a href="http://strikerx3.blogspot.com.br/2015/07/tcprelay-04-beta-3.html">newer version of TCPRelay here</a>.<br />
<br />
TCPRelay 0.4 alpha 2 is now available! Download the <a href="http://www9.zippyshare.com/v/48114524/file.html" target="_blank" title="TCPRelay 0.3 alpha 3 32-bit download">32-bit</a> or <a href="http://www13.zippyshare.com/v/96775790/file.html" target="_blank" title="TCPRelay 0.3 alpha 3 64-bit download">64-bit</a> version. You may also need to install the <a href="http://www.microsoft.com/en-us/download/details.aspx?id=17851" target="_blank" title="Microsoft .NET Framework 4 download">Microsoft .NET Framework 4</a>. Keep in mind that this is an alpha version; some features may not behave correctly.<br />
<br />
<strong>What's new in this version:</strong><br />
<ul>
<li><strong>General</strong><ul>
<li><strong>NEW</strong>: partial localization support for:</li>
<ul>
<li>[es-AR] Spanish (Argentina) (thanks to Nicolás Sigal)</li>
<li>[nl-NL] Dutch (The Netherlands) (thanks to TalbotEv)</li>
</ul>
<li>If you wish to add your language, <a href="http://www56.zippyshare.com/v/27470314/file.html">fill this table</a> (make sure to fill both sheets: WinFormStrings and ControlsStrings) and send me via e-mail with the subject <b>TCPRelay translations for [language] [country]</b>.</li>
<li>NOTE: only the GUI version has support for localization for now.</li>
</ul>
</li>
<li><strong>GUI</strong><ul>
<li><strong>FIXED</strong>: [a1] status tooltip did not clear when TCPRelay was started sucessfully after an error.</li>
<li><strong>FIXED</strong>: [a1] added localization support for several hard-coded strings.</li>
<li><strong>FIXED</strong>: [a1] component layout updated manually for localization.</li>
<li><b>FIXED</b>: [a2] old Twitch.tv ingest server list was shut down. Updated to the new Kraken REST API. Fixes an error when starting TCPRelay.</li>
</ul>
</li>
<ul></ul>
</ul>
<div>
Check out the <a href="http://www.xsplit.com/forum/viewtopic.php?f=2&t=7159" target="_blank">official topic on XSplit's forums</a> and see for yourself all the great feedback people gave me.</div>
<div>
<br /></div>
Anonymoushttp://www.blogger.com/profile/15191258139689524539noreply@blogger.com0tag:blogger.com,1999:blog-2793945947039750406.post-38386682158722357532014-08-29T22:24:00.000-03:002014-08-29T22:24:45.788-03:00Writing a synthesizer... in JavaJava. A synthesizer. I am writing the latter with the former. The first questions most people ask me are: why are you writing a synthesizer? Why Java?<br />
<br />
I am writing a <a href="http://en.wikipedia.org/wiki/Subtractive_synthesis" target="_blank">subtractive synthesizer</a> in Java, indeed. "Why?," you would ask. I have two objectives with this project:<br />
<br />
<ol>
<li>Challenge myself, learn something new, and write a piece of software that I'll enjoy to use frequently.</li>
<li>Demonstrate that Java is powerful enough to synthesize decent audio in real time.</li>
</ol>
<div>
In these series of posts, I am going to describe the challenges and share the knowledge I acquire as I go through this adventure.</div>
<div>
<br /></div>
<h2>
Why a synthesizer?</h2>
<div>
Most people don't know about this, but I enjoy electronic music a whole lot (in particular: many forms of <a href="http://en.wikipedia.org/wiki/Trance_(music_genre)" target="_blank">Trance</a>, including <a href="http://en.wikipedia.org/wiki/Uplifting_trance" target="_blank">Uplifting Trance</a>, <a href="http://en.wikipedia.org/wiki/Goa_trance" target="_blank">Goa Trance</a>, <a href="http://en.wikipedia.org/wiki/Psychedelic_trance" target="_blank">Psychedelic Trance</a>; <a href="http://en.wikipedia.org/wiki/Drum_and_bass" target="_blank">Drum & Bass</a> and variations such as <a href="http://en.wikipedia.org/wiki/Neurofunk" target="_blank">Neurofunk</a>; some <a href="http://en.wikipedia.org/wiki/Breakbeat" target="_blank">Breakbeats</a>; and a few other things), enough to actually dabble into production. I have studied a bit of music theory, looked for tutorials, tips and tricks everywhere and followed some YouTube channels from great producers out there to learn more about the tricks of the trade. I have played with lots of different synthesizers and effects and experimented some <a href="http://en.wikipedia.org/wiki/Digital_audio_workstation" target="_blank">DAWs</a>, my favorite being <a href="http://www.image-line.com/flstudio/" target="_blank">FL Studio</a>.</div>
<div>
<br /></div>
<div>
The natural step after playing with those, as an avid programmer who is always looking for a challenge, is to learn more about how these things work from the inside. The best way to do that? Why yes, to write code!</div>
<div>
<br /></div>
<div>
Of course, writing a synthesizer (or any piece of software, for that matter) is not only about writing code. You need to know the concepts behind what you're going to do.</div>
<div>
<br /></div>
<div>
To build the inner workings of a synthesizer, you need a solid foundation on <a href="http://en.wikipedia.org/wiki/Digital_signal_processing" target="_blank">Digital Signal Processing</a>, or DSP for short, and a working knowledge of <a href="http://en.wikipedia.org/wiki/MIDI" target="_blank">MIDI</a> if you want it to respond to real instruments and DAWs. It is also useful to learn about Steinberg's <a href="http://en.wikipedia.org/wiki/Virtual_Studio_Technology" target="_blank">VST</a>, one of the most popular software interfaces for audio synthesizers and effects, and similar technologies, such as <a href="http://en.wikipedia.org/wiki/DirectX_plugin" target="_blank">DXi</a>, <a href="http://en.wikipedia.org/wiki/Real_Time_AudioSuite" target="_blank">RTAS</a> and <a href="http://en.wikipedia.org/wiki/Audio_Units" target="_blank">Audio Units</a>, as these will allow you to use your plugin on pretty much any DAW in existence.</div>
<div>
<br /></div>
<div>
As an added bonus, writing my own synthesizer means I can add my own touch to my songs. (Although I have yet to finish and publish one...)</div>
<div>
<br /></div>
<h2>
Why Java?</h2>
<div>
My language of choice was Java in part due to the experience I have with it, but mostly because I wanted an extra bit of challenge by writing the synthesizer in a language that is usually regarded as inadequate for real-time number-crunching (and prove that it actually is up to the task).</div>
<div>
<br /></div>
<div>
Since I wanted this synthesizer to integrate with FL Studio, I had to look for a Java library that provided me an implementation of one of the audio plugin interfaces supported by the DAW. <a href="http://jvstwrapper.sourceforge.net/" target="_blank">jVSTwRapper</a> was my choice; it does a great job of keeping the native-Java overhead very low and provides an API that closely resembles the native one in C++ while providing a bit of object-oriented flavor.</div>
<div>
<br /></div>
<div>
I also had to write a simple GUI to test the synthesizer itself in Java without having to go through the build process and restart my DAW anytime I made any changes to the code. That in itself was not as challenging as before, as I had written a <a href="http://en.wikipedia.org/wiki/Module_file" target="_blank">module music</a> player in Java (supporting <a href="http://en.wikipedia.org/wiki/MOD_(file_format)" target="_blank">MOD</a>, <a href="http://en.wikipedia.org/wiki/S3M_(file_format)" target="_blank">S3M</a> and <a href="http://en.wikipedia.org/wiki/Impulse_Tracker" target="_blank">IT</a>) and the workings are very similar.</div>
<div>
<br /></div>
<div>
Oh, and Java is the primary language of Android apps. Maybe in the future you could be playing with my synthesizer on your smartphone. How cool is that?</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
Stay tuned!</div>
Anonymoushttp://www.blogger.com/profile/15191258139689524539noreply@blogger.com0tag:blogger.com,1999:blog-2793945947039750406.post-59725980462220231342014-05-10T14:14:00.001-03:002014-05-10T14:16:10.402-03:00Getting into GitHubI think it's about time I did it. I'm finally on <a href="https://github.com/StrikerX3" target="_blank">GitHub</a>!<br />
<br />
To start things off, I uploaded two of my personal projects: a bunch of <a href="https://github.com/StrikerX3/java-utils" target="_blank">Java utility classes</a>, not unlike <a href="https://code.google.com/p/guava-libraries/" target="_blank">Guava</a>, and an <a href="https://github.com/StrikerX3/JXInput" target="_blank">XInput library for Java</a> which enables coders to use Xbox 360 controllers (and possibly other XInput devices) in Java. Both projects are released under the <a href="http://opensource.org/licenses/MIT" target="_blank">MIT license</a>, i.e. do whatever you want with them.<br />
<br />
Some people have requested that I make TCPRelay open source. I feel that I need to fix a few things before doing that. The Java version was abandoned on version 0.1.1 beta, back when Twitch.tv and Justin.tv were still one and the same, because many people were having issues with Java. I wrote the C# version for that very reason, and because it was just much more comfortable to write a graphical interface with it.<br />
<br />
Both projects have very manual methods of building the packages. I'll be honest: I haven't put enough effort into their build processes because, as stated in the readme file, it was just a quick-n-dirty test that I decided to make usable.<br />
<br />
I don't know. I might put them up as is so you can point and laugh at how ugly the code looks... or you can help me fix their build processes. :)Anonymoushttp://www.blogger.com/profile/15191258139689524539noreply@blogger.com1tag:blogger.com,1999:blog-2793945947039750406.post-81290939154025088572013-07-30T23:51:00.001-03:002015-08-21T07:53:08.877-03:00TCPRelay 0.4 alpha 1NOTE: there is a <a href="http://strikerx3.blogspot.com.br/2015/07/tcprelay-04-beta-3.html">newer version of TCPRelay here</a>. It fixes a problem with Twitch.tv ingest server listing when starting up, so if you still have the problem, make sure to upgrade now.<br />
<br />
TCPRelay 0.4 alpha 1 is now available! Download the <a href="http://www48.zippyshare.com/v/3045980/file.html" target="_blank" title="TCPRelay 0.3 alpha 3 32-bit download">32-bit</a> or <a href="http://www74.zippyshare.com/v/102607/file.html" target="_blank" title="TCPRelay 0.3 alpha 3 64-bit download">64-bit</a> version. You may also need to install the <a href="http://www.microsoft.com/en-us/download/details.aspx?id=17851" target="_blank" title="Microsoft .NET Framework 4 download">Microsoft .NET Framework 4</a>. Keep in mind that this is an alpha version; some features may not behave correctly.<br />
<br />
<strong>What's new in this version:</strong><br />
<ul>
<li><strong>General</strong><ul>
<li><strong>NEW</strong>: localization support for:</li>
<ul>
<li>[es-AR] Spanish (Argentina) (thanks to Nicolás Sigal)</li>
</ul>
<li>If you wish to add your language, <a href="http://www56.zippyshare.com/v/27470314/file.html">fill this table</a> (make sure to fill both sheets: WinFormStrings and ControlsStrings) and send me via e-mail with the subject <b>TCPRelay translations for [language] [country]</b>.</li>
<li>NOTE: only the GUI version has support for localization for now.</li>
</ul>
</li>
<li><strong>GUI</strong><ul>
<li><strong>FIXED</strong>: status tooltip did not clear when TCPRelay was started sucessfully after an error.</li>
<li><strong>FIXED</strong>: added localization support for several hard-coded strings.</li>
<li><strong>FIXED</strong>: component layout updated manually for localization.</li>
</ul>
</li>
<ul>
</ul>
</ul>
<div>
Check out the <a href="http://www.xsplit.com/forum/viewtopic.php?f=2&t=7159" target="_blank">official topic on XSplit's forums</a> and see for yourself all the great feedback people gave me.<br />
<br /></div>
Anonymoushttp://www.blogger.com/profile/15191258139689524539noreply@blogger.com14tag:blogger.com,1999:blog-2793945947039750406.post-9892225081945352832013-07-02T23:53:00.002-03:002013-07-03T07:17:42.038-03:00Natural Selection 2 - build 250 is out! Time to stream again!This weekend Natural Selection 2 saw the release of build 250, along with a nice big -66% discount. This helped restore some of the game's popularity, at the cost of introducing a lot of newbies, which means the overall pub game level is quite low.<br />
<br />
My team, CiB, has been quite inactive lately. No scrims, no competitive games, no internal practice, nothing except for 3 or 4 members playing sporadically. Even myself gave a little break to NS2 for other things, because once you get into the competitive scene, it's hard to go back to pubbing, because you'll end up breaking the balance like <a href="http://steamcommunity.com/sharedfiles/filedetails/?id=156776141">this</a>. (I am smurfing as Ares.)<br />
<br />
Thankfully, people are picking up the pace quickly. Today I played for a couple of hours and there were some pretty decent games, albeit not very balanced, and there were some funny moments in there too. Watch them below!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/Ot7uelm4T5M?feature=player_embedded' frameborder='0'></iframe></div>
<br />Anonymoushttp://www.blogger.com/profile/15191258139689524539noreply@blogger.com0tag:blogger.com,1999:blog-2793945947039750406.post-37985544550094138422013-06-29T23:34:00.000-03:002015-03-07T23:03:12.070-03:00TCPRelay 0.3 beta 3NOTE: there is a <a href="http://strikerx3.blogspot.com.br/2015/03/tcprelay-04-beta-1.html">newer version of TCPRelay here</a>.<br />
<br />
TCPRelay 0.3 beta 3 is now available! Download the <a href="http://www9.zippyshare.com/v/18061453/file.html" target="_blank" title="TCPRelay 0.3 alpha 3 32-bit download">32-bit</a> or <a href="http://www57.zippyshare.com/v/50954811/file.html" target="_blank" title="TCPRelay 0.3 alpha 3 64-bit download">64-bit</a> version. You may also need to install the <a href="http://www.microsoft.com/en-us/download/details.aspx?id=17851" target="_blank" title="Microsoft .NET Framework 4 download">Microsoft .NET Framework 4</a>.<br />
<br />
<br />
<strong>What's new in this version:</strong><br />
<ul>
<li><strong>GUI</strong><ul>
<li><strong>FIXED</strong>: serverlist.txt is now saved to the user's AppData folder to avoid permission issues. (Thanks for reporting this Pedroca!)<br />The full path under Windows Vista/7/8 is:<br /><br /> C:\Users\<user>\AppData\Local\TCPRelay</li>
</ul>
</li>
</ul>
<div>
Check out the <a href="http://www.xsplit.com/forum/viewtopic.php?f=2&t=7159" target="_blank">official topic on XSplit's forums</a> and see for yourself all the great feedback people gave me.</div>
Anonymoushttp://www.blogger.com/profile/15191258139689524539noreply@blogger.com0tag:blogger.com,1999:blog-2793945947039750406.post-20407927250387504702013-05-30T15:45:00.000-03:002013-06-08T11:23:42.363-03:00Tracker music player using XMP<div class="separator" style="clear: both; text-align: left;">
Recently I've been working on a <a href="http://en.wikipedia.org/wiki/Tracker_music">tracker music</a> player based on the <a href="http://xmp.sourceforge.net/">xmp library</a>. I got the basics working: the DirectSound stream buffer, a software circular buffer to write audio data, compiled xmp into .dll and .lib and integrated those into my project. Then I wrote a simple command-line based player to test it. Works like a charm!</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1P3HXuPzDXcIN9d2ZptzYdGe1FSOlpNKw8Z_i_Zi0_NY_zIOjgGo8capGTpwpLORMkaxsuATJGOqIHpVvbNn3Hg9Umy1Xg_l4YTYoHfui5voEf1IE9_Lp6ZQ_BnzvW5_bFDSTo1oTv0c/s1600/modplayer.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="215" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1P3HXuPzDXcIN9d2ZptzYdGe1FSOlpNKw8Z_i_Zi0_NY_zIOjgGo8capGTpwpLORMkaxsuATJGOqIHpVvbNn3Hg9Umy1Xg_l4YTYoHfui5voEf1IE9_Lp6ZQ_BnzvW5_bFDSTo1oTv0c/s400/modplayer.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<b>XMPModPlayer playing 2nd_pm.s3m by Purple Motion of Future Crew</b></div>
<br />
For those of you unfamiliar with the scene, tracker music (or module music) is an old music format very popular back in the DOS and Amiga era and was used by many games and artists of that time and even further. For instance, Epic Games used it on games like Jazz Jackrabbit and Unreal Tournament. It was also very popular in the <a href="http://en.wikipedia.org/wiki/Demoscene">demoscene</a>; in fact, some tracker music formats (such as S3M and XM) were created by demosceners because they needed something better than what they had -- they needed to do something impressive, which is the whole point of demos.<br />
<br />
Tracker music files are very similar to MIDI files, except they also include samples and sometimes instrument information like envelopes, filters, key mapping and such. These formats were very influential, so much that there is a <a href="http://www.renoise.com/">contemporary tracker</a> inspired on them that can take advantage of modern technology such as VST plugins. <a href="http://openmpt.org/">OpenMPT</a> runs on modern OSes too and plays these old formats without a hitch.<br />
<br />
"So, if there are very powerful trackers/players out there, why are you writing a simple player?" For two reasons:<br />
1) I enjoyed tracker music back then, and I still enjoy them today, and I didn't want to use Winamp or OpenMPT to play those songs, and I couldn't find a xmp player for Windows. (Well, this is like four reasons in one... :P)<br />
2) I wanted to learn DirectSound programming, and this proved to be an adequate challenge.<br />
<br />
I'm thinking about improving this player quite a bit, making a graphical front-end for xmp but with very advanced visualization features (think <a href="http://www.cubic.org/player/screenshot.html">Cubic Player</a>, but with more bling), so I can learn Direct3D/OpenGL too. I'll also probably try to implement support for ASIO drivers, mostly for learning purposes.Anonymoushttp://www.blogger.com/profile/15191258139689524539noreply@blogger.com0tag:blogger.com,1999:blog-2793945947039750406.post-8464896129981772122013-04-01T07:56:00.003-03:002013-04-02T07:34:27.029-03:00A peek into the future of TCPRelay [April Fools!]It's been a while since the last TCPRelay release. I've been working hard on the next major feature which has been highly requested by many people. I think today is a good day to show it off. It's still experimental, caused a bunch of BSODs and crashes but I'm working on making it as stable as possible.<br />
<br />
The new feature is called "Internet Booster". It actually increases your internet bandwidth for all connections that go through the program by emulating another ISP. It only works for TCP connections for now, but it grants a huge boost in download and upload speeds and also reduces your ping. Check it out:<br />
<br />
Before TCPRelay Booster, with GVT corporate 20/20:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.speedtest.net/result/2614515770.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://www.speedtest.net/result/2614515770.png" /></a></div>
<br />
After TCPRelay Booster, emulating XMission Utopia 100/100:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.speedtest.net/result/2148087183.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://www.speedtest.net/result/2148087183.png" /></a></div>
<br />
Pings in games are also greatly improved for US servers, as you can see from the pings in the tests above. This should help us brazilians out when playing those competitive NS2 matches against US and EU teams.<br />
<br />
Unfortunately, I couldn't test with P2P downloads -- TCPRelay crashes as soon as a P2P program is loaded on the system.<br />
<br />
The current version of TCPRelay can only emulate three ISPs: GVT in Brazil, and XMission and Google Fiber from the US. I'm working on UDP support next and will keep adding ISPs to the list!<br />
<br />
<br />
<span style="color: #666666;"><br /></span>
<span style="color: #444444;"><span style="font-size: xx-small;">P.S.: Take a good look at the post date.</span></span>Anonymoushttp://www.blogger.com/profile/15191258139689524539noreply@blogger.com1tag:blogger.com,1999:blog-2793945947039750406.post-50183515544542300702013-03-25T08:08:00.002-03:002013-03-25T08:08:46.845-03:00More competitive Natural Selection 2Hey guys, I've been very busy recently with <a href="http://unknownworlds.com/ns2/">Natural Selection 2</a>. Some of you may have heard of the free weekend and 50% discount on the game that went live last weekend. This brought lots of new people into the game, hopefully to stay. It's been really fun going back to the basics and teaching those new people how to play the game and win. The game is still on discount sale as of this writing, but only for 6 hours, <a href="http://store.steampowered.com/app/4920">so hurry up</a> and buy it if you like it!<br />
<br />
After a three week hiatus (due to some issues with my ISP), my stream came back with a couple of very good, very fun NS2 matches. The first one is a couple of <a href="http://www.ensl.org/gathers">ENSL Gather</a> matches, one of which lasted over an hour and had its fair share of higher alien lifeforms and all sorts of marine tech destroying said aliens.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/WGSyMVkjrpU?feature=player_embedded' frameborder='0'></iframe></div>
<br />
<br />The second is a set of matches for the <a href="http://www.ensl.org/contests/197">NSL Season 2</a> tourney, for CiB Highwind. We played against AtroX on the official map Veil and the custom map Jambi. Watch below my point of view for all four rounds, and also the official casts by RedDog and Neatchee: rounds <a href="http://en.twitch.tv/sting_reddog/c/2068095">1</a>, <a href="http://en.twitch.tv/sting_reddog/c/2068112">2</a>, <a href="http://en.twitch.tv/sting_reddog/c/2068121">3</a>, <a href="http://en.twitch.tv/sting_reddog/c/2068131">4</a>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/4RvmkPIC570?feature=player_embedded' frameborder='0'></iframe></div>
<br />
Have fun watching! :)Anonymoushttp://www.blogger.com/profile/15191258139689524539noreply@blogger.com0tag:blogger.com,1999:blog-2793945947039750406.post-26348985777487009642013-02-20T15:45:00.000-03:002013-02-20T15:45:07.049-03:00Getting into competitive NS2My Natural Selection 2 team, CiB, is now entering competitive tournaments against teams from all over the world. Last weekend we played several matches in the <a href="http://www.ensl.org/articles/736">ENSL Custom Map Cup</a>, all of which I have streamed in first person: vs. <a href="http://en.twitch.tv/strikerx3/b/368132505">VexX</a>, <a href="http://en.twitch.tv/strikerx3/b/368172680">KKG</a>, <a href="http://en.twitch.tv/strikerx3/b/368197034">Team 156</a>, <a href="http://en.twitch.tv/strikerx3/b/368216415">flow</a> and <a href="http://en.twitch.tv/strikerx3/b/368523116">AtroX</a> (aPx forfeited).<br />
<br />
Of course, we speak Portuguese, so many of you probably won't understand our chatter ;)<br />
<br />
After you're done watching the games, or if you want to know the results right now, see our division <a href="http://www.ensl.org/contests/154">here</a>.<br />
<br />
We did quite well for a newcomer team. We're on par with most teams in our division, but still need to work on Marine tactics and dealing with the higher Kharaa lifeforms, as well as playing them better. Since this was a custom map cup, we had to give feedback on the maps. My overall opinion about them was not very good -- most maps had several balance issues and bugs in the form of stuck spots, missing textures or holes.<br />
<br />
After playing these competitive matches, normal (pub) games are no longer the same. They're just for fun -- hop in, kill some aliens/chomp some marines, don't care about winning or losing. It's all about the fun (and honing skills).<br />
<br />
On the next weekend we'll be playing the <a href="http://www.ensl.org/articles/742">NSL Invitational #1 Qualifiers</a> (see our division <a href="http://www.ensl.org/contests/162">here</a>), although we won't be able to get past the qualifiers since we're not an EU or NA team. We're up for the challenge, to learn new tactics, get some practice and, well, just for the sake of playing competitive games (and because they were missing three teams to fill up the 32 slots and decided to pick us). There are two well-known, strong teams in our division: Goðar and True North. We also met Team 156 before. The rest of the teams is new to me; hopefully they'll be on par with the teams we scrimmed.<br />
<br />
Wish us good luck!<br />
<br />Anonymoushttp://www.blogger.com/profile/15191258139689524539noreply@blogger.com0tag:blogger.com,1999:blog-2793945947039750406.post-17456758049720212592013-01-12T15:22:00.000-02:002015-03-07T23:03:28.704-03:00TCPRelay 0.3 beta 2NOTE: there is a <a href="http://strikerx3.blogspot.com.br/2015/03/tcprelay-04-beta-1.html">newer version of TCPRelay here</a>.<br />
<br />
TCPRelay 0.3 beta 2 is now available! Download the <a href="http://www7.zippyshare.com/v/52007598/file.html" target="_blank" title="TCPRelay 0.3 alpha 3 32-bit download">32-bit</a> or <a href="http://www7.zippyshare.com/v/48069194/file.html" target="_blank" title="TCPRelay 0.3 alpha 3 64-bit download">64-bit</a> version. You may also need to install the <a href="http://www.microsoft.com/en-us/download/details.aspx?id=17851" target="_blank" title="Microsoft .NET Framework 4 download">Microsoft .NET Framework 4</a>.<br />
<br />
<br />
<strong>What's new in this version:</strong><br />
<ul>
<li><strong>GUI</strong><ul>
<li><strong>NEW</strong>: the Target URI list is now saved to a file in the TCPRelay folder (serverlist.txt) and reloaded every time TCPRelay starts.</li>
<li><b>NEW</b>: pressing Enter while typing a Target URI or starting TCPRelay will add the current Target URI to the list if not already present.</li>
</ul>
</li>
</ul>
<div>
Check out the <a href="http://www.xsplit.com/forum/viewtopic.php?f=2&t=7159" target="_blank">official topic on XSplit's forums</a> and see for yourself all the great feedback people gave me.</div>
Anonymoushttp://www.blogger.com/profile/15191258139689524539noreply@blogger.com10tag:blogger.com,1999:blog-2793945947039750406.post-22829411715688948252013-01-06T17:03:00.000-02:002013-01-06T17:05:57.410-02:00Natural Selection 2 is so much fun. Streaming with OBS is so much betterHey there people, happy new year! It's been a while since my last gaming-related post. <a href="http://strikerx3.blogspot.com/2012/11/state-of-tcprelay-and-natural-selection.html" target="_blank">As you may know</a>, I am now playing <a href="http://www.unknownworlds.com/ns2/" target="_blank">Natural Selection 2</a> a whole lot. This means I must have been streaming a lot lately, right?<br />
<br />
Well, due to what amounts to extreme laziness, I haven't been streaming too much. :( But this is going to change, as I just found out this new streaming program called <a href="http://obsproject.com/" target="_blank">OBS (Open Broadcaster Software)</a>, which is, simply put, a "free, open source XSplit", except it is <b>much faster and lighter</b>.<br />
<br />
For starters, it loads and closes as fast as Notepad. I can easily stream with the screen capture feature without as much as a dent on the frame rate, which I found very impressive. I can play NS2 at over 60 fps most of the time with the aforementioned software screen capture, just as if I wasn't streaming at all.<br />
<br />
It has pretty much the same features as XSplit, lacking only a few I never used anyways. Even if it doesn't come with them out of the box, there is a plug-in framework so that people can add the features to OBS. I wouldn't be surprised to see plugins that replicate or perform certain features better than XSplit.<br />
<br />
I have one complaint though: the video quality doesn't look as good as XSplit. Maybe I'm trying to push too hard with just 2000 kbps of video bandwidth? Who knows. I'll be tweaking it a bit more...<br />
<br />
Back to Natural Selection 2! I did stream some matches, and they're available on my <a href="http://www.youtube.com/user/synthesisx3m" target="_blank">YouTube channel</a>. Here's one of my recent ones - a ridiculous pubstomp (70 kills, 7 deaths!) with those newbies that bought the game on the recent Steam Sale:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/kJTGzS7_w68/0.jpg" height="266" width="320"><param name="movie" value="http://www.youtube.com/v/kJTGzS7_w68?version=3&f=user_uploads&c=google-webdrive-0&app=youtube_gdata" /><param name="bgcolor" value="#FFFFFF" /><param name="allowFullScreen" value="true" /><embed width="320" height="266" src="http://www.youtube.com/v/kJTGzS7_w68?version=3&f=user_uploads&c=google-webdrive-0&app=youtube_gdata" type="application/x-shockwave-flash" allowfullscreen="true"></embed></object></div>
Anonymoushttp://www.blogger.com/profile/15191258139689524539noreply@blogger.com0tag:blogger.com,1999:blog-2793945947039750406.post-56324721082154812182012-12-14T22:53:00.000-02:002012-12-16T13:54:53.730-02:00TCPRelay 0.3 beta<br />
TCPRelay 0.3 beta is now available! Download the <a href="http://www62.zippyshare.com/v/40336855/file.html" target="_blank" title="TCPRelay 0.3 alpha 3 32-bit download">32-bit</a> or <a href="http://www62.zippyshare.com/v/24821862/file.html" target="_blank" title="TCPRelay 0.3 alpha 3 64-bit download">64-bit</a> version. You may also need to install the <a href="http://www.microsoft.com/en-us/download/details.aspx?id=17851" target="_blank" title="Microsoft .NET Framework 4 download">Microsoft .NET Framework 4</a>.<br />
<br />
<strong>What's new in this version:</strong><br />
<ul>
<li><strong>GUI</strong><ul>
<li><strong>NEW</strong>: the last Target URI and Listen Port values are now saved to the Windows Registry under the key:<br /><br /> HKEY_CURRENT_USER\Software\StrikerX3\TCPRelay<br /><br />Now every time you restart TCPRelay the last used server and listen port should be automatically set.</li>
</ul>
</li>
</ul>
<div>
Check out the <a href="http://www.xsplit.com/forum/viewtopic.php?f=2&t=7159" target="_blank">official topic on XSplit's forums</a> and see for yourself all the great feedback people gave me.</div>
Anonymoushttp://www.blogger.com/profile/15191258139689524539noreply@blogger.com0tag:blogger.com,1999:blog-2793945947039750406.post-74267746748149390692012-11-30T19:33:00.000-02:002012-12-14T21:33:46.381-02:00State of TCPRelay, and Natural Selection 2It's been a while since my last update here. If you're wondering why I haven't been updating TCPRelay lately, it's mostly because there was no demand for improvements or fixes for it. Also, I work as a systems analyst and that involves a lot of programming, so it's also a matter of being burned out too.<br />
Anyway, here's a few ideas for the next versions of TCPRelay I have written down:<br />
<ul>
<li><span style="line-height: 13px;">Stream delay: I'm not entirely sure this is possible without inspecting the stream data, but this is definitely worth checking out.</span></li>
<li>A way to fetch server lists from other services (own3d.tv, YouTube, ustream, ...). Also enable users to add their own lists, keep them between sessions and share with others.</li>
<li>Improve localization support and allow users to translate TCPRelay to other languages.</li>
<li>Fork into TCPProbe -- basically TCPRelay with packet inspection and manipulation capabilities through .NET plugins. Could be useful for network development.</li>
</ul>
If you have any suggestions, please feel free to comment.<br />
<br />
On another note, I've been looking for a strong, competitive FPS that's reminded me of the old, but fun formula of Unreal Tournament and Quake: fast-paced action with insane movement skills and pinpoint aiming accuracy required. Unfortunately, since 2007 (when UT3 was released), there was not a single memorable FPS that followed the formula and caught my interest, turning me off from the genre. I went on to other games, including World of Warcraft, Starcraft 2, Borderlands 2 and several casual and indie games. That is, until last month.<br />
<br />
Natural Selection 2 was developed by <a href="http://www.unknownworlds.com/ns2/" target="_blank" title="Unknown Worlds Entertainment - Natural Selection 2">Unknown Worlds Entertainment</a> and released on October 30th. I haven't heard much about the game until then, but instantly got addicted the moment I got into a multiplayer game. It's an amazing blend of RTS and FPS with a surprisingly friendly community -- the complete opposite of most popular games such as Dota 2, LoL and Starcraft 2. People in NS2 actually help each other out, newbies ask questions and learn tricks and tactics from veterans (there's even some pro players giving out "classes" for free on their servers! See <a href="http://en.twitch.tv/L2PNS2" target="_blank" title="L2PNS2 stream">here</a> and <a href="http://www.youtube.com/user/L2PNS2" target="_blank" title="L2PNS2 YouTube channel">here</a>); there's no split between the n00bz and the pros. Teamwork and coordination are absolutely required to get somewhere. Trying to Leeroy Jenkins your way into the enemy base *will* get you killed, unless you happen to be an <a href="http://www.unknownworlds.com/ns2/wiki/index.php/Onos" target="_blank">Onos</a> fighting against a bunch of rookie marines (and even then, if they know how to press the fire button and move their mouse to follow a giant suicidal gorilla-rhino-thing around, you *will* go down).<br />
<br />
I highly recommend NS2 to anyone who has been yearning for something other than the generic "realistic" war shooter #235 with killstreaks and "realistic" gunfights, or anyone who enjoys either the FPS or RTS genres at all. It may not be as popular as LoL or Dota or SC2, but it's definitely competitive and interesting to watch. Refer to <a href="http://www.unknownworlds.com/ns2/forums/index.php?showtopic=125340" target="_blank" title="The Big List of Places to Watch Competitive NS2">this topic on the UWE forums</a> for a list of streams/YouTube channels/whatnot on NS2 competitive play. Oh, and it's <a href="http://store.steampowered.com/app/4920/" target="_blank" title="NS2 on Steam">cheap on Steam</a> -- just 25 bucks.Anonymoushttp://www.blogger.com/profile/15191258139689524539noreply@blogger.com0tag:blogger.com,1999:blog-2793945947039750406.post-46859670931013179822012-10-03T16:38:00.000-03:002012-12-14T21:15:59.424-02:00Reminder: TCPRelay 0.3 alpha 3 released!For those people who follow my blog/Twitter: TCPRelay 0.3 alpha 3 is now available! Check out the <a href="http://strikerx3.wordpress.com/2012/09/16/tcprelay-0-3-alpha/" title="TCPRelay 0.3 post">original post for version 0.3</a> and download the <a href="http://www13.zippyshare.com/v/47945091/file.html" target="_blank" title="TCPRelay 0.3 alpha 3 32-bit download">32-bit</a> or <a href="http://www13.zippyshare.com/v/82612576/file.html" target="_blank" title="TCPRelay 0.3 alpha 3 64-bit download">64-bit</a> version. You may also need to install the <a href="http://www.microsoft.com/en-us/download/details.aspx?id=17851" target="_blank" title="Microsoft .NET Framework 4 download">Microsoft .NET Framework 4</a>. Keep in mind that this is an alpha version; some features may not behave correctly.<br />
There were two changes to the GUI:<br />
<ul>
<li><strong>NEW</strong>: [alpha 3] application now has an icon (thanks to Fryderyk "Ziel" Dachowski!)</li>
<li><strong>FIXED</strong>: [alpha 3] tooltips for speed buttons were incorrectly referring to "as slow as possible".</li>
</ul>
Anonymoushttp://www.blogger.com/profile/15191258139689524539noreply@blogger.com0tag:blogger.com,1999:blog-2793945947039750406.post-64410093877144768982012-09-27T18:42:00.000-03:002012-12-14T21:34:21.207-02:00Simplify ternary operatorsOne of my pet peeves in Java/C/C++/C# programming is the use of the ternary operator <span style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">?:</span> with boolean values. It's almost always redundant, makes code harder to read and can be easily replaced by a simpler boolean expression that also has the advantage of being "branch-free" in some languages, that is, do not require the CPU to select a path of execution based on a condition, which can be very expensive. The best compilers will optimize them away in a manner similar to what I describe below, but they still don't improve code readability.<br />
<br />
From this point onward I'll be using the Java/C/C++/C# code syntax. A boolean expression is any valid expression that results in a boolean value. This may be anything from the constants <span style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">true</span> and <span style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">false</span> all the way to complex expressions such as <span style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">x == 1 && (y > 3 || z <= 1.25) && !checkSomething(x, y, z)</span> (assuming <span style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">checkSomething(...)</span> returns a boolean).<br />
<br />
Say you have the condition <span style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">c</span> and the boolean expressions <span style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">p</span> and <span style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">q</span>. The following table contains all possible conversions from a ternary expression to an equivalent boolean expression:<br />
<br />
<table><tbody>
<tr><td>#</td><td>Ternary Expression</td><td>if-then-else Expression</td><td>Equivalent to</td></tr>
<tr><td>1</td><td style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">c ? p : q</td><td style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">if (c) p else q</td><td style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">(c && p) || (!c && q)</td></tr>
<tr><td>2</td><td style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">c ? p : true</td><td style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">if (c) p else true</td><td style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">!c || p</td></tr>
<tr><td>3</td><td style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">c ? p : false</td><td style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">if (c) p else false</td><td style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">c && p</td></tr>
<tr><td>4</td><td style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">c ? true : p</td><td style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">if (c) true else p</td><td style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">c || p</td></tr>
<tr><td>5</td><td style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">c ? false : p</td><td style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">if (c) false else p</td><td style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">!c && p</td></tr>
<tr><td>6</td><td style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">c ? true : false</td><td style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">if (c) true else false</td><td style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">c</td></tr>
<tr><td>7</td><td style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">c ? false : true</td><td style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">if (c) false else true</td><td style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">!c</td></tr>
<tr><td>8</td><td style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">c ? true : true</td><td style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">if (c) true else true</td><td style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">true</td></tr>
<tr><td>9</td><td style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">c ? false : false</td><td style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">if (c) false else false</td><td style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">false</td></tr>
</tbody></table>
<br />Note that #1 may or may not result in more readable code; it is probably better to use the ternary operator in that case. #6 through #9 are poor coding practices and should be replaced as soon as possible by their equivalent boolean expressions. #2 through #5 require attention and almost certainly will result in better, cleaner code.<br />
<br />
Also note that <span style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">c ? p : q</span> is equivalent to <span style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">if (c) b=p else b=q</span>. In other words, if any boolean variables are assigned a value that depends on the condition of an if-then-else clause, then that value can be simplified according to the equivalence table above, as long as there are no unintended side-effects.<br />
<br />
Let's try this with an example:<br />
<br />
<span style="font-family: 'Lucida Console', 'Courier New', courier, helvetica, sans-serif; font-size: 9pt;">boolean b = i > 5 ? j == 3 : false</span><br />
<span style="font-family: 'Lucida Console', 'Courier New', courier, helvetica, sans-serif; font-size: 9pt;"><br /></span>
or, as an if-then-else clause:<br />
<br />
<span style="font-family: 'Lucida Console', 'Courier New', courier, helvetica, sans-serif; font-size: 9pt;">boolean b;</span><br />
<span style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">if (i > 5) b = j == 3; else b = false;</span><br />
<span style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;"><br /></span>
Looking at the above table, this matches expression #3, with:<br />
<br />
<span style="font-family: 'Lucida Console', 'Courier New', courier, helvetica, sans-serif; font-size: 9pt;">c = i > 5</span><br />
<span style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">p = j == 3</span><br />
<span style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;"><br /></span>
The equivalent expression would be:<br />
<br />
<span style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;">boolean b = i > 5 && j == 3</span><br />
<span style="font-family: Lucida Console, Courier New, courier, helvetica, sans-serif; font-size: 9pt;"><br /></span>
which is slightly shorter and certainly less confusing than the above ternary or if-then-else statements.Anonymoushttp://www.blogger.com/profile/15191258139689524539noreply@blogger.com1tag:blogger.com,1999:blog-2793945947039750406.post-12942894320722698392012-09-21T19:07:00.000-03:002012-12-14T21:35:27.129-02:00Now Playing: Borderlands 2This is going to be my first gaming-related post (yay!). I had a blast playing the first Borderlands game a while ago. Picked Mordecai, grabbed sniper rifles and pistols and chose a set of skills with emphasis on sniping. Cleared the whole game, including all DLCs. Leveled to 61 (before the cap was raised to 69). Then I got bored and hacked my character to make the most insanely powerful equipment out there -- 1.2k x4 damage pistols with near-perfect accuracy and very fast firing rates (and the ability to crash the game once in a while), "god mode" shields (which displayed as negative 2 billion and never drained), insanely fast sniper rifles and even some overpowered Eridian guns, and maxed out all skills in all trees just because. I remember doing a critical hit for the maximum possible damage of <strong>99999</strong> with a melee attack once. Needless to say, the poor victim exploded in a shower of gibs.<br />
<br />
Back then I didn't have a computer powerful enough to record my gaming, nor did I have an YouTube channel or a stream, so unfortunately I got (almost) nothing to show you. :(<br />
<br />
When the sequel was announced I was pumped. I watched every trailer and every bit of gameplay and just had to play it <em>now</em> (er... <em>then</em>). Borderlands 2 was released three days ago (September 18th), but I had to wait two more days as the game would only release on September 20th here in Brazil.<br />
<br />
The wait was over, and I had to stream it. Unfortunately, my microphone is really bad, so I couldn't comment on the stream itself.<br />
<br />
Here goes my personal opinions on the game:<br />
<ul>
<li>Borderlands 2 has an amazing sense of humor. Claptrap's lines are among the funniest, as are Handsome Jack's and pretty much every other non-srs-bsns characters'. If my microphone was working, you'd hear me laughing about every 10 seconds or so.</li>
<li>The guns are much better polished, and each brand feels unique -- an addition I liked a lot. I quite enjoy Jakobs pistols - they let me fire <em>as fast as I can pull the trigger</em>, which is to say, <em>really fast</em>. Tediore weapons are fun; you throw these cheap pieces of garbage away when reloading and a new gun materializes in your hands while the discarded gun proceeds to explode. I also like how Bandits can't spell their weapons properly.</li>
<li>Enemies are much smarter now too, and they also feel more "natural", more "realistic". Bandits will actually look for cover or just put their faces straight into your gun, and they also seem to work as a team now. They also have better environmental awareness and try to avoid/use explosives to their advantage (at least that's how it feels to me).</li>
<li>The world is HUGE. I've partially explored three major areas and this makes about 5% of the in-game world map. Each individual area is much larger than the previous iteration's areas. You also get a bunch of side-quests right at the beginning (OK, not too early) and there's always something to do or explore everywhere. Not to mention the vistas are amazing!</li>
<li>The new UI has a bunch of improvements, but the inventory feels a little clunky and not much of an improvement from the first game. Comparing items was made easier, but equipping items isn't as simple as before. To switch a weapon, you have to go to the backpack column, click on a weapon, then click on the weapon slot you want to switch. Switching shields, mods and stuff for some reason requires the same steps as above, even though there is only one slot for each. Buying and selling items, however, is much better than before.</li>
</ul>
And now, a bit of gameplay! The video quality should improve after YouTube decides to process the videos. Oh, and sorry about some videos being cut before the actual end. You're better off watching the videos from my <a href="http://www.twitch.tv/strikerx3" target="_blank" title="StrikerX3's gaming stream">stream channel</a> anyway.<br />
<object height="350" width="425"><br/> <param name="movie" value="http://www.youtube.com/v/D_FL-Ql3NGc&list=PLjx1MfplQlk0fgPCFHMkENMFmwTDRLkTT&feature=view_all"><br/> <param name="wmode" value="transparent"><br/> <embed src="http://www.youtube.com/v/D_FL-Ql3NGc&list=PLjx1MfplQlk0fgPCFHMkENMFmwTDRLkTT&feature=view_all;rel=0" type="application/x-shockwave-flash" wmode="transparent" height="350" width="425"><br/> </object><br />
<br />
You can also watch the videos on my stream channel in 1080p: <a href="http://en.twitch.tv/strikerx3/b/332887257" target="_blank" title="Borderlands 2 playthrough, part 1">1</a> <a href="http://en.twitch.tv/strikerx3/b/332896499" target="_blank" title="Borderlands 2 playthrough, part 2">2</a> <a href="http://en.twitch.tv/strikerx3/b/333097528" target="_blank" title="Borderlands 2 playthrough, part 3">3</a> <a href="http://en.twitch.tv/strikerx3/b/333120888" target="_blank" title="Borderlands 2 playthrough, part 4">4</a> <a href="http://en.twitch.tv/strikerx3/b/333129621" target="_blank" title="Borderlands 2 playthrough, part 5">5</a> <a href="http://en.twitch.tv/strikerx3/b/333139966" target="_blank" title="Borderlands 2 playthrough, part 6">6</a> <a href="http://en.twitch.tv/strikerx3/b/333213761" target="_blank" title="Borderlands 2 playthrough, part 7-1">7-1</a> <a href="http://en.twitch.tv/strikerx3/b/333220392" target="_blank" title="Borderlands 2 playthrough, part 7-2">7-2</a> <a href="http://en.twitch.tv/strikerx3/b/333232492" target="_blank" title="Borderlands 2 playthrough, part 7-3">7-3</a> <a href="http://en.twitch.tv/strikerx3/b/333247471" target="_blank" title="Borderlands 2 playthrough, part 8">8</a> <a href="http://en.twitch.tv/strikerx3/b/333476698" target="_blank" title="Borderlands 2 playthrough, part 9">9</a> <a href="http://en.twitch.tv/strikerx3/b/333583894" target="_blank" title="Borderlands 2 playthrough, part 10">10</a> <a href="http://en.twitch.tv/strikerx3/b/333876481" target="_blank" title="Borderlands 2 playthrough, part 11-1">11-1</a> <a href="http://en.twitch.tv/strikerx3/b/333881891" target="_blank" title="Borderlands 2 playthrough, part 11-2">11-2</a> <a href="http://en.twitch.tv/strikerx3/b/333893985" target="_blank" title="Borderlands 2 playthrough, part 11-3">11-3</a><br />
<br />
Also, <a href="http://www.twitch.tv/strikerx3" target="_blank" title="StrikerX3's stream channel">watch me live here</a>!Anonymoushttp://www.blogger.com/profile/15191258139689524539noreply@blogger.com0