<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Java &#8211; Busy Ducks</title>
	<atom:link href="/category/programming/java/feed/" rel="self" type="application/rss+xml" />
	<link>/</link>
	<description>Making You Pro&#039;duck&#039;tive</description>
	<lastBuildDate>Wed, 05 Jan 2022 23:41:18 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.8.3</generator>

<image>
	<url>/wp-content/uploads/2015/07/cropped-favicon-55963284v1_site_icon-32x32.png</url>
	<title>Java &#8211; Busy Ducks</title>
	<link>/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>SpeakingDuck (Maven plugin for java resource bundle transition.)</title>
		<link>/speakingduck-maven-plugin-for-java-resource-bundle-transitional/</link>
		
		<dc:creator><![CDATA[duckman]]></dc:creator>
		<pubDate>Thu, 16 Nov 2017 10:28:29 +0000</pubDate>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[i18n]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Linguistics]]></category>
		<category><![CDATA[programming]]></category>
		<guid isPermaLink="false">http://busyducks.com/wp_4_1/?p=896</guid>

					<description><![CDATA[Developing multi-lingual applications in java seems a pain, to me anyway.There are resource bundles and a localisation API &#8211; which are well documented. To speed things up, I wanted to auto translate these bundles, and then have others look over and refine the translations later. Looking at what already existed, I was not excited. I &#8230;<br><a href="/speakingduck-maven-plugin-for-java-resource-bundle-transitional/" class="more-link pen_button pen_element_default pen_icon_arrow_double">Continue reading <span class="screen-reader-text">SpeakingDuck (Maven plugin for java resource bundle transition.)</span></a>]]></description>
										<content:encoded><![CDATA[
<p>Developing multi-lingual applications in java seems a pain, to me anyway.<br>There are resource bundles and a localisation API &#8211; which are <a href="https://docs.oracle.com/javase/tutorial/i18n/intro/steps.html">well documented</a>.</p>



<p>To speed things up, I wanted to auto translate these bundles, and then have others look over and refine the translations later.</p>



<p>Looking at what already existed, I was not excited.</p>



<ul><li>I did not want some heavy weight application.</li><li>I found some simple auto translation tools, some free-ish, some pay-per-say. But they did not support java resource bundles. </li><li>I did like <a href="https://github.com/soimort/translate-shell">translate shell</a> a lot, but it needed integration into the java resource bundle ecosystem</li><li>Very few tools supported maven</li><li>Nothing &#8220;just worked&#8221;</li></ul>



<p>So I created a maven plugin (SpeakingDuck) to translate resource bundles. SpeakingDuck will use whatever translation tool you configure it to run with.</p>



<p></p>



<p>Find it on github: &nbsp; <a href="https://github.com/busyDuckman/speakingDuck">https://github.com/busyDuckman/speakingDuck</a></p>



<p>or install via the&nbsp;<a rel="nofollow" href="https://search.maven.org/#search%7Cga%7C1%7Ca%3A%22speakingDuck-maven-plugin%22">Maven Repository</a>, or via reference in your pom.xml.</p>



<p></p>



<p>The following <strong>pom.xml</strong> will cause German, Chinese, Spanish and Russian resource bundles to be maintained (updated for new keys) every compile. </p>



<pre class="EnlighterJSRAW" data-enlighter-language="xml" data-enlighter-theme="godzilla" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;build>
    &lt;plugins>
        &lt;plugin>
            &lt;groupId>com.busyducks&lt;/groupId>
            &lt;artifactId>speakingDuck-maven-plugin&lt;/artifactId>
            &lt;version>0.9.7&lt;/version>
            &lt;configuration>
                &lt;call>trans -b :$CALL_LANG $TEXT_ESCAPED_QUOTED&lt;/call>
                &lt;translations>
                    &lt;translation>
                        &lt;bundlePattern>./src/main/resources/generalText_$FILE_LANG.properties&lt;/bundlePattern>
                        &lt;sourceLang>en:en&lt;/sourceLang>
                        &lt;destLangs>de:de, zh:zh, es:es, ru:ru&lt;/destLangs>
                        &lt;replaceExistingKeys>false&lt;/replaceExistingKeys>
                    &lt;/translation>
                &lt;/translations>
            &lt;/configuration>

            &lt;executions>
            &lt;execution>&lt;goals>&lt;goal>translate&lt;/goal>&lt;/goals>&lt;/execution>
            &lt;/executions>
        &lt;/plugin>
    &lt;/plugins>
&lt;/build></pre>



<p>The translations are generated via translate shell (because of the call &#8220;trans -b&#8221;), you will need to install translate shell yourself for this to work.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>OpenXeen</title>
		<link>/openxeen/</link>
		
		<dc:creator><![CDATA[duckman]]></dc:creator>
		<pubDate>Sat, 05 Nov 2016 14:29:49 +0000</pubDate>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[Graphics]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Xeen]]></category>
		<guid isPermaLink="false">http://busyducks.com/wp_4_1/?p=816</guid>

					<description><![CDATA[Overview OpenXeen is a game engine rewrite I have been working on for Might and Magic III, IV and V . It&#8217;s opensource and still under development. Currently it brings up monsters, objects, and most of the outdoor environment. Resources: Git: here Wiki: here Development Blog: here State of openXeen features Interested in contributing Xeen &#8230;<br><a href="/openxeen/" class="more-link pen_button pen_element_default pen_icon_arrow_double">Continue reading <span class="screen-reader-text">OpenXeen</span></a>]]></description>
										<content:encoded><![CDATA[<h1>Overview</h1>
<p>OpenXeen is a game engine rewrite I have been working on for Might and Magic III, IV and V . It&#8217;s opensource and still under development.</p>
<p>Currently it brings up monsters, objects, and most of the outdoor environment.</p>
<p><a href="/wp-content/uploads/2016/11/openXeen13.png"><img loading="lazy" class="alignnone size-large wp-image-818" src="/wp-content/uploads/2016/11/openXeen13-1024x683.png" alt="openxeen13" width="640" height="427" srcset="/wp-content/uploads/2016/11/openXeen13-1024x683.png 1024w, /wp-content/uploads/2016/11/openXeen13-300x200.png 300w, /wp-content/uploads/2016/11/openXeen13-768x512.png 768w, /wp-content/uploads/2016/11/openXeen13.png 1306w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>
<p>Resources:</p>
<ul>
<li>Git: <a href="https://github.com/busyDuckman/OpenXeen">here</a></li>
<li>Wiki: <a href="https://github.com/busyDuckman/OpenXeen/wiki">here</a></li>
<li>Development Blog: <a href="https://github.com/busyDuckman/OpenXeen/wiki/A-Development-BLOG-(in-screenshots)">here</a></li>
<li>State of openXeen <a href="https://github.com/busyDuckman/OpenXeen/wiki/Features">features</a></li>
<li>Interested in <a href="https://github.com/busyDuckman/OpenXeen/wiki/Contributing">contributing</a></li>
<li>Xeen development related <a href="https://github.com/busyDuckman/OpenXeen/wiki/Xeen-related-links">links</a></li>
<li>The <a href="http://xeen.wikia.com/wiki/Xeen_Wiki">xeen wiki</a> (the groundwork reverse engineering project that OpenXeen stands on top of)</li>
</ul>
<p>Status:</p>
<ul>
<li>Software is not ready for release.</li>
<li>At the moment it can:
<ul>
<li>Parse the cc files and open some graphics and audio files</li>
<li>Parse some map info</li>
<li>Create proxies of all files in cc files.</li>
<li>Display a simple rendering of some xeen components. NB: First run will take some time, proxy files are being created.</li>
</ul>
</li>
</ul>
<p>&nbsp;</p>
<h1>Might and magic III (Isles of Terra) support.</h1>
<p>I have got the MAMIII GUI up, and decoded some sprites. Not much more to show yet.</p>
<p>I am by no means a proficient at reverse engineering software, however I wrote up a quick primer on how I was using the <a href="https://github.com/busyDuckman/OpenXeen/wiki/A-Development-BLOG-(in-screenshots)#july-17th-2016-reverse-engineering-mm3">cpu logs generated by the dosbox debugger</a>, to recover some MM3 data.</p>
<p><a href="/wp-content/uploads/2016/11/openXeen12.png"><img loading="lazy" class="alignnone size-large wp-image-819" src="/wp-content/uploads/2016/11/openXeen12-1024x683.png" alt="openxeen12" width="640" height="427" srcset="/wp-content/uploads/2016/11/openXeen12-1024x683.png 1024w, /wp-content/uploads/2016/11/openXeen12-300x200.png 300w, /wp-content/uploads/2016/11/openXeen12-768x512.png 768w, /wp-content/uploads/2016/11/openXeen12.png 1306w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>
<p>&nbsp;</p>
<h1>Related Links</h1>
<p>Tools:</p>
<ul>
<li><a href="http://games.playazlounge.net/#UserUtilities">Xeen Utilities</a></li>
<li><a href="https://github.com/rwfpl/rewolf-mm3-dumper">MM3 Dumper</a></li>
</ul>
<p>Mods:</p>
<ul>
<li><a href="http://www.jeffludwig.com/xeen/download.php">respawn mod</a></li>
</ul>
<p>Xeen Info Gneral:</p>
<ul>
<li>Xeen Wiki: <a href="http://xeen.wikia.com/wiki/Xeen_Wiki">http://xeen.wikia.com/wiki/Xeen_Wiki</a></li>
<li>CC file format: <a href="http://rewiki.regengedanken.de/wiki/.CC">http://rewiki.regengedanken.de/wiki/.CC</a></li>
<li>MM3 CC file: <a href="http://rewiki.regengedanken.de/wiki/MM3.CC">http://rewiki.regengedanken.de/wiki/MM3.CC</a></li>
<li>MM3 CC file LHZ compression: <a href="http://blog.rewolf.pl/blog/?p=1202">http://blog.rewolf.pl/blog/?p=1202</a></li>
</ul>
<p>Xeen modding</p>
<ul>
<li>MM3 modding page: <a href="http://jeffludwig.com/mm3/resources.php">http://jeffludwig.com/mm3/resources.php</a></li>
</ul>
<p>Xeen Cluebooks</p>
<ul>
<li>MM3: <a href="http://www.abandonia.com/files/extras/25850_game_extra_1.pdf">http://www.abandonia.com/files/extras/25850_game_extra_1.pdf</a></li>
<li>WoX: <a href="http://www.abandonia.com/files/extras/26962_Extra%20document_Cluebooks.zip">http://www.abandonia.com/files/extras/26962_Extra%20document_Cluebooks.zip</a></li>
</ul>
<p>MM3 Releases</p>
<ul>
<li>DOS: <a href="http://www.abandonia.com/en/games/1035/Might+and+Magic+III+-+Isles+of+Terra.html">http://www.abandonia.com/en/games/1035/Might+and+Magic+III+-+Isles+of+Terra.html</a></li>
<li>Amiga: <a href="http://www.lemonamiga.com/?game_id=3142">http://www.lemonamiga.com/?game_id=3142</a></li>
<li>SNES</li>
</ul>
<p>WoX Releases</p>
<ul>
<li>Dos: <a href="http://www.abandonia.com/en/games/482/Might+and+Magic+IV+and+V+-+World+Of+Xeen.html">http://www.abandonia.com/en/games/482/Might+and+Magic+IV+and+V+-+World+Of+Xeen.html</a></li>
<li>Mac:</li>
<li>PC-98</li>
</ul>
<p>&#8220;Vintage&#8221; Computing:</p>
<ul>
<li>File Formats from the C64: <a href="http://petlibrary.tripod.com/formats.htm">http://petlibrary.tripod.com/formats.htm</a></li>
</ul>
<p>Reference Code</p>
<ul>
<li>LHZ <a href="https://github.com/rwfpl/rewolf-mm3-dumper">https://github.com/rwfpl/rewolf-mm3-dumper</a></li>
<li>Xbr</li>
</ul>
<p>Other WoX Engines:</p>
<ul>
<li>DeamMasters Xeen engine in scumvm <a href="https://github.com/dreammaster/scummvm/tree/xeen">https://github.com/dreammaster/scummvm/tree/xeen</a>and <a href="https://github.com/roguevm/roguevm/find/xeen">https://github.com/roguevm/roguevm/find/xeen</a></li>
</ul>
<p>Articles on the History of MaM</p>
<ul>
<li>5 pages covering the series:<a href="http://www.hardcoregaming101.net/mightandmagic/mightandmagic3.htm">http://www.hardcoregaming101.net/mightandmagic/mightandmagic3.htm</a></li>
</ul>
<p>Reverse Engineering Dos Games:</p>
<ul>
<li>A good primer <a href="http://wiki.scummvm.org/index.php/HOWTO-Reverse_Engineering">http://wiki.scummvm.org/index.php/HOWTO-Reverse_Engineering</a></li>
<li>Dosbox 0.74 debug build: <a href="http://source.dosbox.com/dosbox-74-debug.exe">http://source.dosbox.com/dosbox-74-debug.exe</a></li>
<li>Bridging IRA to dosbox <a href="https://github.com/wjp/idados">https://github.com/wjp/idados</a></li>
<li>Driving the dosbox debugger: <a href="http://www.vogons.org/viewtopic.php?t=3944">http://www.vogons.org/viewtopic.php?t=3944</a></li>
</ul>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h1>Code Audit, first release &#8211; v0.1.0 alpha</h1>
<p>(From my <a href="https://github.com/busyDuckman/OpenXeen/wiki/A-Development-BLOG-(in-screenshots)">dev blog</a>)</p>
<p><a href="/wp-content/uploads/2016/11/loc_chart_v0_1.png"><img loading="lazy" class="alignnone size-large wp-image-820" src="/wp-content/uploads/2016/11/loc_chart_v0_1-1024x716.png" alt="loc_chart_v0_1" width="640" height="448" srcset="/wp-content/uploads/2016/11/loc_chart_v0_1-1024x716.png 1024w, /wp-content/uploads/2016/11/loc_chart_v0_1-300x210.png 300w, /wp-content/uploads/2016/11/loc_chart_v0_1-768x537.png 768w, /wp-content/uploads/2016/11/loc_chart_v0_1.png 1101w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>
<p>With this first release I wanted to take stock of where the code is at, where I am heading and what my time is being spent on. I have a job and a family, so openXeen is largely coded in at night or when I can grab 5 minutes. This forces me to code in a manor &#8216;resistant to interruptions&#8217; (finish one logical area at a time, use a fully thought out architecture).</p>
<p>What I also need to do Is audit how much time I spend on what. Which is where this line of code by package breakdown comes into play. It breaks my 8.8k lines of code down, telling me where my effort has been spent. I aim to update this graph at every delivery milestone. What I learnt:</p>
<ul>
<li>1/3 of the code is concerned with reading and loading files contained in the .cc archives (reds)</li>
<li>1/3 of the code is &#8216;toolbox code&#8217; (oranges), stuff that is not relevant to xeen, and ideally would have been provided by java or a 3rd party library.</li>
<li>1/6 is in game mechanics (blues), arguably this is an over investment in mechanics early on. But I am prioritising having a &#8216;game&#8217; by the end of the year, not a tech demo.</li>
<li>1/6 is in rendering (greens). The rendering code has been kept as simple as possible. I love to write rendering engines, and know this is a trap. You spend far too much time on rendering &#8216;goodies&#8217;, then your engine was built without respect to the actual game (because the game did not exist yet) and you have nothing to show in your render. Your&#8217;e exhausted, and sometimes coded into a corner.</li>
</ul>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
