Showing posts with label programming. Show all posts
Showing posts with label programming. Show all posts

Friday, August 18, 2017

What's new in WRoom 0.0.10?

If you did not know, I have been working on a new open source project called WRoom in the last few months.  It's a big technical experiment but it has a lot of potential at the same time.

Basically, WRoom is a new web browser where you navigate virtual rooms create using a simple text file.  It's easier than HTML/Javascript and you can create maps all over the web, linked together with Teleporters.

I have released a new version today: 0.0.10 ALPHA.  In this new version, I have integrated Texture videos and a bunch of new stuff.  Currently, the Windows version works pretty well and it kind-of work on Linux, at least on my Ubuntu Mate laptop.

Here's a demo of the latest version:


The main features of WRoom:
  • 3D Browsing à la Doom FPS game
  • Supports textures (PNG, JPG) 
  • New Video Textures using FFMPEG
  • Embedded chat room, (Simple avatars are showing other visitors) 
  • Triggered actions: Teleport, play sound, open door
  • Animated textures using multiple image files
  • Easy to create your own using a simple text editor
  • Free as in Open Source

WRoom is a new twist on creating communities online without having to learn HTML and Javascript.  A map editor is on the way to make things easier.  Maps are hosted on any web hosting plan such as Mochahost or your own web server.

Here's a simple map example:

# Set the title for the room
title=Planet Mars
# irc server
chatroom=#wroommars
server=irc.freenode.net
port=6667
# Load the textures
texture=wall03.png
texture=wall01.jpg
texture=wall03.png
floor=floor.png
ceiling=ceiling.jpg
#Load background sound file
#backgroundsound=background011.wav
# Set the map
# 15x10
map=1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
map=1,0,3,3,3,3,3,3,3,3,0,0,0,0,3,3,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,3,3,3,3,3,3,3,3,3,1
map=1,0,0,0,0,0,3,0,0,3,0,3,3,3,3,3,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,0,3,0,0,0,0,0,0,0,0,1
map=1,3,0,3,3,0,3,0,3,0,0,0,0,0,0,0,0,3,3,0,3,3,3,3,3,3,3,3,3,3,0,0,0,3,0,3,0,3,3,3,3,3,3,0,1
map=1,3,0,3,3,0,3,0,3,0,3,3,0,3,0,3,3,3,3,0,3,3,0,3,0,0,0,0,0,3,0,3,3,3,0,3,0,3,0,0,0,0,3,0,1
map=1,3,0,0,3,0,3,0,3,0,3,3,0,3,0,0,0,0,0,0,3,3,0,3,0,3,3,3,0,3,0,3,0,0,0,3,3,3,0,3,3,0,3,0,1
map=1,3,3,3,3,0,3,0,3,0,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,3,3,3,3,3,0,3,0,3,3,0,0,0,0,3,3,0,3,0,1
map=1,3,0,0,0,0,3,0,3,0,0,0,3,3,3,3,3,0,0,0,0,3,3,3,0,3,3,0,0,0,0,3,0,3,3,0,3,3,3,3,3,0,3,0,1
map=1,3,0,3,3,3,0,0,3,3,3,0,3,3,3,3,0,0,3,3,0,3,0,0,0,0,3,3,0,3,0,3,0,3,3,0,0,0,0,0,3,0,3,0,1
map=1,3,0,3,3,3,0,3,3,3,3,0,3,3,3,3,0,3,3,3,0,3,0,3,3,0,3,3,3,3,0,3,0,3,3,0,3,3,3,0,3,0,0,0,1
map=1,3,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,3,0,0,0,3,0,3,0,0,0,0,0,0,0,3,3,3,3,0,3,0,3,0,3,3,0,3,1
map=1,3,3,3,3,3,0,3,3,0,3,3,0,0,0,3,3,3,0,3,3,3,0,3,0,3,3,0,3,3,3,3,0,0,0,0,3,0,3,0,3,3,0,3,1
map=1,3,0,0,0,0,0,3,3,3,3,3,0,3,0,3,0,3,0,0,0,0,0,3,0,3,3,3,3,3,3,3,0,3,3,0,3,0,3,0,3,0,0,3,1
map=1,3,0,3,0,3,0,0,0,0,3,0,0,3,0,0,0,3,3,3,3,3,0,3,3,3,0,0,0,0,0,3,0,3,0,0,3,0,3,0,3,3,0,3,1
map=1,3,0,3,3,3,3,3,3,0,3,3,3,3,3,3,3,3,3,3,3,3,0,3,3,3,0,3,3,3,0,3,0,3,0,3,3,0,3,0,0,3,3,3,1
map=1,3,0,3,0,3,3,0,3,0,3,0,3,0,0,0,0,0,0,0,0,0,0,3,3,3,0,3,0,3,0,3,0,3,0,3,3,0,0,3,0,0,0,3,1
map=1,3,0,3,0,3,0,0,0,0,3,0,3,0,3,3,3,3,3,3,3,3,3,3,3,3,0,3,0,3,0,3,0,3,0,0,0,0,0,3,0,3,0,3,1
map=1,3,0,3,0,0,0,3,3,3,3,0,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,0,0,0,3,3,3,3,0,3,3,0,3,0,0,1
map=1,3,0,3,3,3,0,3,0,0,0,0,3,0,3,0,3,3,3,3,3,3,3,0,3,3,3,3,0,3,3,3,3,3,3,3,3,3,3,3,0,3,3,0,1
map=1,3,0,3,3,3,0,3,3,3,0,3,3,0,3,0,3,0,0,0,0,0,0,0,3,0,3,0,0,3,3,0,3,0,0,0,0,0,0,0,0,3,3,0,1
map=1,3,0,3,3,3,0,3,0,0,0,0,0,0,3,0,3,0,3,3,3,3,3,3,3,0,3,0,3,3,0,0,3,0,3,3,0,3,3,3,3,3,3,3,1
map=1,3,0,0,0,3,0,3,0,3,3,3,3,3,3,0,3,0,3,0,3,3,3,3,3,0,0,0,0,0,0,3,3,3,3,3,0,3,3,0,0,0,3,3,1
map=1,3,3,3,0,3,0,3,0,3,0,0,0,0,0,0,3,0,3,0,0,0,0,0,3,3,3,0,3,3,0,0,0,0,0,0,0,3,3,0,3,0,3,3,1
map=1,3,0,3,0,3,0,3,0,3,3,3,3,3,3,3,3,0,3,0,3,3,3,0,3,0,3,0,3,3,3,3,3,3,3,3,3,3,3,0,3,0,0,0,1
map=1,3,0,3,0,3,0,3,0,3,3,0,0,0,0,0,0,0,3,3,3,0,3,0,3,0,3,0,3,3,0,0,0,0,3,3,0,3,3,0,3,0,3,0,1
map=1,3,0,3,0,3,0,0,0,3,0,0,3,0,3,3,3,3,3,0,3,0,0,0,0,0,0,0,3,3,0,3,3,0,0,0,0,0,0,0,3,0,3,0,1
map=1,3,0,0,0,3,3,3,3,3,3,0,3,0,3,3,0,0,3,0,3,0,3,0,3,3,3,3,3,3,0,3,0,3,3,3,3,3,3,3,3,0,3,0,1
map=1,3,0,3,0,0,0,0,0,0,0,0,3,0,3,3,3,0,0,0,3,0,3,3,3,3,3,0,0,0,0,3,0,3,3,0,0,0,0,3,3,0,0,3,1
map=1,3,0,3,3,3,3,3,3,3,3,3,3,0,0,0,0,0,3,0,3,0,0,0,0,0,0,0,3,3,3,3,0,3,3,0,3,3,0,3,3,3,0,0,1
map=1,3,0,0,0,0,0,0,0,3,3,0,0,0,3,3,3,3,3,0,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,3,3,0,0,0,3,0,0,1
map=1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
#Set the starting point
start=1,1
# Define the actions
# Actions are: teleport, sound, message, download
# After the action command, enter the location of the action x,y
# Then the parameter
# action=teleport,x,y,URL
# action=sound,x,y,sound.wav
# action=message,x,y,Message string...
# Actions are triggered by pressing the action key: space bar...
action=teleport,43,29,http://wroom.crombz.com/,Congrats! Back to homebase
# Load text to display on walls
# TEXT=x,y,HTML text entry... 
text=1,3,<div style='border:solid red 3px;background-color:#441111;color:#FF0000;font-size:12px;text-align:center;'>Welcome to Mars!<br>Can you find your wayback to WRoom homebase?<br>Good luck!</div>

Hope you like WRoom!

Visit the homepage at http://wroom.crombz.com

Saturday, September 3, 2016

Learn programming with Human Resource Machine

Yesterday, I started playing a really neat game on my iPad called Human Resource Machine.

It's not just another puzzle game as we are used to find on the iOS stores.  This game does involve a lot of logic and a new notions of software programming.


The story gos like this: You are a new employee in a big corporation and you are asked to take documents from the "Inbox" and put them in the "Outbox" using pre-defined actions (commands).

The first few levels are quite easy but as you progress, you'll encounter some basic programming challenge like making a modulo calculation and event doing a sorted bubble algorithm.

The game is really enjoyable and anyone can play.  If you are into software programming, the levels will put your knowledge to the test.


For kids, this is a great way to explain what is a computer program and they can explore and learn some basic algorithm by themselves.

Human Resource Machine is available on the Apple Store: 
https://itunes.apple.com/ca/app/human-resource-machine/id1005098334?mt=8

And available for your PC:
https://tomorrowcorporation.com/humanresourcemachine#getitnow

Note: At the time of writing this review, the game was only 0.99$ in the Canadian Apple Store...


Have fun!




Monday, January 25, 2016

What is a null value?

A while ago, my kids were asking me about my work as a software programmer.  They were trying to understand what I was doing exactly all day long, "playing" on a computer with multiple displays.

They were understanding the concept of creating a software by writing coded instructions  but were actually baffled about the concept of variables.  It took a lot of explanations and examples to describe what was a variable but I finally was able to translate my mumbo-jumbo into bags of candies.  

The example was that at any moment, I wanted to keep count of how many laps a racing car had completed around the race track.  Each time the car does a lap, we add another candy into the bag.  The variable is the bag and the value is the amount of candies in the bag.  Technically, we have an Integer, meaning that this bag can only represents whole numbers.  

As we were discussing variable types (integer, strings, double,...), I mentioned that any variable must be initialized before using it or else, we would have a "null" value...  At that moment, I had lost them completely.  One of them replied that a null value is zero (0) so why have a name for a zero value?

The problem here is that I was explaining the concept of variables using quantities.  Saying that the bag had no candies in it or that the bag had zero candies in it, was the same thing.  They were right. I then used a pen and a piece of paper to explain the null value.

I wrote down the number 23 and asked them of many laps was represented.  They all answered twenty-three.  Then I erased the value and wrote 0 (zero).  Again I asked them how many laps and some answered zero, others said none.

Then I erased the number zero and left the piece of paper blank. 
- How many laps now?
- We don't know, you haven't written anything...
- That is a NULL value...

Then they started arguing that "zero" and "blank" was the same thing.  

- Wrong!  Writing "0" means that I had check how many laps were completed and counted no laps so the number of laps completed was "0".  This is an identifiable value.  When nothing was written, it meant that I did not count in any way the number of laps.  No value was available thus leaving the piece of paper blank.

I would have continued explaining the memory allocation or the joy of arrays but that was already too much information for them and they considered that my job must be very dull and complex.

At last, now, they do not think that I am gaming all day long...

Have a great week!