Fun Stuff · Games · Programming

Two-Way Box released on the Google PlayStore

Two-Way Box IconTwo-Way Box released on the Google PlayStore: 

Pro Edition: https://play.google.com/store/apps/details?id=com.federrot.twowaybox

Free Edition: https://play.google.com/store/apps/details?id=com.federrot.twowayboxfree

 


Two-Way Box is a two-player inverse-space line-clearing black-white box-game that allows two players to play in the same game field on the same device.

Player 1 plays from the bottom to the top with white boxes in a black game field, while at the same time player 2 plays from the top to the bottom with black boxes in a white game field.

Features:
* 2 Player mode: The player with most wins in 4 matches wins. Both players play on the same device.
* 1 Player modes: Play alone as the white or black player.

Source Code:
The source code of the game has been published for learning purposes on github: https://github.com/tivtag/twowaybox

Advertisements
Fun Stuff · Games · Source Code

Inverse-Space Three-D Two-Player Tetris!

I’ve got a new game release for you. This is Inverse-Space Three-D Two-Player Tetris!
Istdt

It’s made using Unity3D and Boo. This is my first project using either of these tools and meant as a learning experience for me (and hopefully a fun one for you and your friends!).

Sourcehttps://github.com/tivtag/Istdt
Download Windows: Istdt-1.1.1-windows.zip
Download Android: Istdt-1.1.1-android.apk

Version History:
Beta 1.1.1 – 30.05.2014: Improved end score display in Two-Player Modus, new icon, plus various other minor improvements
Beta 1.0.1 – 16.02.2014: Improved main menu on some devices, random and brighter color on start screen
Beta 1.0 – 15.02.2014: New Icon, pause game by touching the center of the screen, improved tooltips and immersive mode bugfixxes
Alpha 0.9 – 13.02.2014: Android 4.4+ Immersive Fullscreen Mode support, show score after losing a SP game
Alpha 0.8 – 10.02.2014: Performance improvements, new unity
Alpha 0.7 – 31.12.2013: Continue paused Game, support keyboard on touch devices, better WinStore support
Alpha 0.6 – 20.11.2013: Improved movement on touch devices, improved single player experience
Alpha 0.5 – 26.09.2013: Basic Android Tablet support (tested with Nexus 7 2013)
Alpha 0.4 – 22.09.2013: Adds Single Player Modes and Wall Kicking

Fun Stuff · Games · The Legend of Zelda: Black Crown · XNA Framework

The Legend of Zelda: Black Crown featured!

My little fan game project The Legend of Zelda: Black Crown is the Featured Project over at Zelda Fan Game Central! \o/ You can discuss it on the Forum Thread or take a look at the Wiki Entry.

For any of you that have missed the game, here are some screenshots and the download link. It requires Windows, Microsoft .NET Framework 4.6.1 (https://www.microsoft.com/en-us/download/details.aspx?id=49981) and a GPU that supports Shader Model 2.0. Please poke me if you have any feedback or ideas on how to improve the game!

Download: http://paul.ennemoser.com/files/zelda/TLoZ%20-%20Black%20Crown.zip
Don’t forget to use the Zelda Updater after installing the game to get the latest patch.

BlackCrown_collage_1

BlackCrown_collage_2

Games · The Legend of Zelda: Black Crown · XNA Framework

Zelda video’n shots

TLoZ: BC is a free offline hack and slash RPG, best compared to Diablo.
In BC you hunt for the best items, steadily improving your stats and talents!

Here are some new screenshots and a simple gameplay video.

Game Download
http://paul.ennemoser.com/files/zelda/TLoZ%20-%20Black%20Crown.zip

Don’t forget to get latest patch by using the Zelda Updater! Requires  Microsoft .NET Framework 4.6.1

Games · Programming · Source Code

Introducing a ruby adventure in text or how I learn(ed) Ruby

I am currently studying the Ruby programming language. You know; as a software developer you should learn at-least one new language per year! Ruby is a dynamic multi-paradigm programming language that is really fun to use!

This time around I’ve decided to focus on learning a testing framework for Ruby very early. My choice was the very elegant rspec specification framework. RSpec, as most great Ruby libraries, uses an (internal) Domain Specific Language to describe its application domain; which in RSpecs case is describing the expected behaviour of your application.

At the very beginning of my journey I’ve used the Interactive Ruby (irb) REPL (Read-Eval-Print Loop) to explore the language. REPLs are a great way to explore your language of choice! Soon after I’ve started to write tests (or rather specifications) for features of the Ruby language. Personally this didn’t keep me going for very long; it was quite useful.. but.. I needed an actual project to work on!

Of all the goodies Ruby comes with, its Meta Programming features are the most thrilling for me. I wanted to write my own Domain Specific Language (DSL) inside Ruby. And thus was born Teta, a ruby text adventure!

Take a look at this link for an example of the DSL. (You can find all of the source code of Teta on github.)

When I am working on Teta I use three Terminal sessions (in TABs). The 1st TAB has got VIM loaded to edit the source code (Derek Wyatt has got tons of great tutorial videos about VIM):

VIM text editor

.
The 2nd TAB is used to issue various commands; including executing all rspec specifications or pushing changes to the git repository. I also use it to access the great ruby documentation (using the ri command):

Teta Rspec Specifications

.
And finally the 3rd TAB has got an interactive ruby session loaded for exploration and experimentation:

Interactive Ruby

.
But back to learning new languages using Test Driven Learning. It was initially a blog post by @pragmatrix that pushed me into the direction of using a testing framework when first learning Ruby. To say the least; it was really worth it!

In case you are like me and don’t feel like writing tests for language features; then there are some great people who already did this for you. The Ruby Koans walk you along the path to enlightenment:

.
If you also want to get started with Ruby then I suggest that you get the following equipment:

1. Ubuntu (Wubi)
2. VIM
3. Ruby Version Manager to install..
4. Ruby
5. RSpec gem as the testing/specification framework
6. Git to get data to and from github
.
Till then, enjoy the journey \o/

Anime · Games · The Legend of Zelda: Black Crown

Status Update

Hello there my dear readers,

just wanted to shout out that this blog isn’t dead yet! Life has been quite busy in the last few months.
.
I’m happy to announce that there will be a new release of the Zelda fan-game around the 12nd of April! (the release date of .net 4.0, which will be required to play it)

Serial Experiments Lain
Serial Experiments Lain

.
For now, here are the patch notes of the current private beta:

–Patch Notes .doc–

Fun Stuff · Games · The Legend of Zelda: Black Crown

New Release of Zelda – Black Crown: Updater!

And another update to my Zelda fan-game. Besides many new items, a new boss and more – the greatest new addition is an Updater / Patcher which allows you to get the very latest version without re-downloading the full game. Enjoy!
Zelda Updater / Patcher
.
.
For the people that are interested how I’ve implemented the Updater / Patcher:
When I decide to release a new version I run custom “Release Packager Tool”.

This tool creates, amongst other things, a manifest file that stores the date and time every file of the game has been modified. This manifest, including, all other files is then uploaded to my webspace. Now when you start the Updater / Patcher it downloads that manifest file and checks what other files need be updated by downloading them too.

To make the patcher itself update-able I am using a stub executable that runs the actual patcher executable in a separate AppDomain. That AppDomain has Shadow Copying of Files enabled. ShadowCopyFiles = “true” has the effect that the assembly and its dependencies are copied into a temporary folder upon execution -> as such the original patcher files are not locked and can be replaced.

var domainSetup = new AppDomainSetup() {
    ShadowCopyFiles = "true"
};

var domain = AppDomain.CreateDomain(
    "Update Domain",
    AppDomain.CurrentDomain.Evidence,
    domainSetup
);

domain.ExecuteAssembly( updaterAssembly );