Wednesday, 9 July 2014

The Baron Language : Dev Diary #1

I've started a GitHub for my vanity project which is to develop a high-level & very simple scripting language for quick 2D UI prototyping.


I'm going to be developing my "proofs of concept" in Unity for reasons that the framework permits me to write a wrapper language & it's a great environment to run 2D prototypes.

Tuesday, 8 July 2014

The BARON Programming Language

I'm currently designing a new programming language, which I'm presently naming 'BARON'…yes, it's named after me, I say to myself if Linus can name an OS after himself why can't I do something similar;)

And also it's BARON all in caps, as an homage to the simplicity of BASIC.


I'm going to publish soon a detailed design intention document but in resume, the goal of this vanity project is to develop a simple wrapper user interface prototyping language.

I currently find it still too slow to prototype & implement UI front-ends for interactive applications, especially on web platforms.

The panoply of client-side web languages/specifications makes it hard to focus on the actual UX design of the front-end interface. My end goal is to wrap CSS, HTML & JavaScript into a simple unified syntax & language structure that is focused on the principales of finite states.

BARON might not be a precise solution for large scale productions but it can become a good tool for quick UI/UX scripting & prototyping.

Wednesday, 11 June 2014

WWDC 2014

The one thing I wanted to hear from Apple at WWDC was a focus on stability, they seem to have lost one of their core pillars in their products, which is stableness.


Because the most core element in UX design is not simplicity or responsiveness but stability, for nothing breaks more an user's experience than a unstable system.

Sunday, 8 June 2014

Linus Torvalds on Git

Last night, I watched this very interesting talk by Linus on Git,  even the video is slightly out-dated, I was very impressed by his sense of design that goes beyond the back-end but takes in consideration the user's experience in it's core principals.


Another thing I noticed is that he has a very good sense of security and putting forward the importance of integrity checking does make his SCM solution safely distributable.

I'm really considering now switching from a Perforce base to a fully Git solution for my projects.

Friday, 30 May 2014

GameJam Judge

Last January, I had the pleasure of being invited as a judge at the Montreal's Global GameJam. It was a very interesting experience because the previous year, I had participated at the same event as a contestant.


So this year, instead of being in the mist of a 48h prototyping process, I actually experienced the event from a completely different perspective.

Being able to play a series of prototypes & give direct feedback to the teams, really helped me sharpen my abilities to give on-the-spot constructive design criticism.

Because one of the most important skills to have as a game or level designer is communication, the design process is very iterative and base on constant feedback, and the ability to express clearly concepts, ideas & intentions verbally is almost equally as important to mastering the actual techniques of game/level design like S&F, composition, progression & structure.

I noticed that those that delivered the best prototypes, were also able to express to us clearly their vision & design intentions during Q&A session.

I recommend to anyone that have participated to GameJams as developers to try at least once being a judge, it's a great way to contribute to the event & meet new talented developers.

Sunday, 18 May 2014

CommandlineFu

 

I've found my old commandlinefu entries last week, dating back from 2009 when I was working full-time in IT.

My favorite is my solution to counter dynamic ISP IP addresses without a dynamic DNS.

ifconfig en1 | awk '/inet / {print $2}' | mail -s "hello world" email@email.com

Just need to setup a script in a cron job that checks if your external IP as recently changed.

Sunday, 15 December 2013

Business Thinking: how to value your small business

INTRO
This entry is about how you can estimate the value of your small business in the context of a game or multimedia product centric production studio.

After 13 years, working in several capacities in different sized business, I’ve witnessed several start-ups fail in their infancy.

There’s many factors that come into play that determines the success or demise of any business, in this article, I will focus on one common & specific element that seems to cause many startups to halt their growth; and that’s ‘pipelines’ and ‘production process’.

 
Screenshot from Gamedev Tycoon (must play).


REAL-LIFE (EXPERIENCE)
Several years ago, I’ve work in the capacity of unofficial CTO for a small business, the company had a lot of potential, full of promising ideas & a line-up of upcoming products.

At that time, .NET had just came out, promised by Microsoft as a “multi-platform” environment solution, we jumped on the bandwagon mostly because we targeting only Windows & Web at that moment.

The prototype phase of one of our first products was a success, I was able to build a solid & functional mock-up of our main product and deploy it on a Windows & Web environment with a minimum of porting issues.

.NET seemed to be a reliable framework to build our products on, even if the platform was still somewhat unproven, it gave us a good starting point.

The management was very happy and started getting new clients but I wasn’t inform of the deliveries & costs that were being communicated to our customers.
And of course, when production started, serious scheduling issues emerged.

Obviously, there was some communication mishaps between the management & technical team that brought about these issues.

But something more important and more subtle was actually causing a false perception of the management on the true value of the production capacity of the company;

In the management POV and within their limited technical understanding, they took the new emerging .NET framework as a total solution base for the entire pipeline & production process.

In their eyes and based on the successful prototyping phase, .NET was a solution that would make optimization, debugging & maintenance almost null as an expense.

CONCLUSION
And this was the ultimate error, you can’t value your production capacity based on one tool, framework or engine.

That’s why you should only estimate a companies potential once the production process, from conception to deployment and support as been established & proven.

But there’s exceptions to this, especially in the game industry, a small company can actual survive and even grow with rotten production processes & pipelines, if they have a highly markable IP and a lot of investment capital to patch up on the fly.

They will lose on the production but regain on sales.
But that reality is rare and I believe as a business men, this is a highly risky approach, especially in a saturated market.

Unity is starting to also become the holy grail of small business but a lot are learning the hard way that an standardized engine in itself won’t reduce & resolve optimization & debugging expenses.

But it as the advantage of giving an industry a common base and from that, makes it easier to find experienced knowledgeable resources & develop best practices that will reduce but not nullify costs.

I think one of the reasons that we have so much issues in the software industry with developing products at low-costs is that contrary to the manufacturing business, we don’t really deal with tangible physical elements & restraints.

And so everything seems possible until time rears it’s ugly head & kicks us back into reality.

Gamedev Tycoon 
Screenshot from Gamedev Tycoon.

Friday, 27 September 2013

Great level design and the artistic expression of mathematics

Saturday, 20 April 2013

Post-Mortem - Game Jams

I've recently participated in some recent Game Jams and after a very cool first experience at the Global GJ but I've noticed that my following GJs we're not as fun.

I've compiled a list of things that I could have done to maintain a better & more productive game jamming experience:

 1. Try to join a new team at very jam. This will give you a chance to meet new people, learn new skills and add variety to your experiences.

 2. Find people that have the same tastes & are into the same style of games as you. If you are in a team that's making a game you are not into because it's not your "thing" then it will start to feel like work very fast and you will have a lot of difficulty in contributing content significantly.

 3. If you are a generalist and not a specialist then try to avoid going into a team with specialists, you are never going to code as fast as someone that knows Unity or Flash like the back of his hand. Instead try to find other generalists or become a specialist for the weekend at whatever field you feel you can contribute in.

 4. Avoid the "serious" people at all costs! At first I thought Game Jams were like the Open Source scene from a while back, a bunch of "hippies" talking & making new tech without judgement and with a sheer will to share knowledge.

And I can say that from what I've saw, a lot Game Jams are NOT very friendly events, it's a competition! 

There's some very serious people at GJs and they will not hesitate to judge you....so avoid them at all costs and so try to find the "long hair dudes" that just don't give a shit and want to make games!

But if you there for the thrill of competition then you should seek out the "serious" people but take in consideration that if you don't perform at they expectation then they will probably criticize you and target your reputation. And a lot of stuff can happen in 48 hours that are out of your control but can be perceived as a lack of skill so be very prepared.

 5. Make sure you are in shape for the jam. I've made the great mistake of participating at a Game Jam just after a series of long weeks of crunching at my day job & not having the energy to fully participate to the end. A 5-days of heavy crunch + a cold + a 48h weekend GJ is a very very bad combo, especially if your health is not up to the task.

In resume, making games is fun but it's not done in a vacuum, usually you will have to work with a team. And from experience, it's your teammates that will determine the quality of your experience not the tools, not the concept but the human interactions throughout the creative process.

So the only way you can "protect" your passion for game development from negative experiences, is to choose very wisely with who & how your participate in events like Game Jams and make sure there's compatibility at all levels.

Wednesday, 30 January 2013

Explaining Game Design

One thing I've been struggling with recently is how to explain to my family & friends what exactly I do for a living, being a level designer is a very abstract concept to someone that doesn't know how games are made.


But after mediating on the subject, I think have to come to able to explain it by this simple principle that a designer in the game industry main responsibility is crafting the player's experience, whatever it's by balancing systems or building layouts.

Tuesday, 29 January 2013

Global Game Jam 2013

Completed the Montreal Global Game Jam 2013 event successfully, it was an extremely interesting experience.


I will be posting a post-mortem at the end of the week but in meanwhile, you can try out our game at the following link:


Controls:
  • W, A, S, D to move
  • E to pick up/drop hearts
  • Shift to run
Credits:

Thursday, 24 January 2013

Player Expression

I highly recommend this talk, especially for anyone interested understanding the link between theatre & video games, especially if you consider that "play acting" & the concept of the player as a "performer" of the narrative shares a common bond.

.
IGDA-Montreal Nov12 FC3 from IGDA Montreal on Vimeo.

Sunday, 13 January 2013

Montreal Game Jam 2013

I'll be participating in the Montreal Game Jam this year, this time in the board game category.


See you there ^_^


Saturday, 22 December 2012

Achievements


I hope you get an achievement for this epic body pile.

As a lot of players are noticing, most achievements or trophies are being integrated as static waypoints instead of contextual rewards for players that explore & exploit the game's systems.

And at the end of the day, a good player is like a hacker, he's in a constant search to master the game by finding the subtle weaknesses in a targeted system, this should be rewarded for it's what true gaming is all about.

Wednesday, 28 November 2012

Conflicts in Game Design

Interesting talk by Jonathan Blow, he seems to isolate why traditional narrative structures & mediums, like film, tend to clash with gameplay.

Basically the author of a novel or a film has total control of pacing & the context in which the story is told but video games are an interactive medium were the player can input randomness into the narrative context & break the authors original intent, which causes loss of emotional impact.

In itself, it is not an issue, for most players are lazy and will let themselves be guided by the level design & story but if you don't have a linear approach to your design then you must embrace the interactivity and let the player create meaning.

The player is an actor not a viewer in narrative gameplay.

Friday, 13 January 2012

My Perforce init.d script

-------------
#!/bin/sh -e
export P4JOURNAL=/var/log/perforce/journal
export P4LOG=/var/log/perforce/p4err
export P4ROOT=/var/perforce_depot
export P4PORT=1666

PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
. /lib/lsb/init-functions

p4start="p4d -d"
p4stop="p4 admin stop"
p4user=perforce

case "$1" in
start)
log_action_begin_msg "Starting Perforce Server"
daemon -u $p4user $p4start;
;;
stop)
log_action_begin_msg "Stopping Perforce Server"
p4Pid=$(pidof /usr/local/bin/p4d);
kill -9 $p4Pid;
;;

restart)
stop
start
;;

*)
echo "Usage: /etc/init.d/perforce (start|stop|restart)"
exit 1
;;

esac
exit 0
--------------

Sunday, 6 November 2011

Cooperation and Engagement

Extremely insightful lecture by Matt Leacock, game designer of the co-op board game, Pandemic.

I especially found interesting how he approaches iteration and he seems very well read in game design theory.
Also, his visualisation of Mihaly Csikszentmihlyi's Flow principal is very well presented.

Monday, 3 October 2011

Learn The Trigonometry Functions

Sunday, 2 October 2011

Beyond the Game

I've recently watched Beyond the Game, a documentary about the competitive Warcraft III: Reign of Chaos scene in Asia.
It's very interesting, especially the fact that they compete at a high level and train like professional chess players.

But the difference is that chess is an open game system, the "algorithms" & mechanics of the game are exposed and played in a physical space.
But Warcraft runs in a total virtual plane were the game mechanics are somewhat hidden, I know, as a player, that there's a certain randomization on almost every damage hit but I don't see it being run, I only see the result exposed by the visual feedback layer.

A dice roll in a video game compared to one done with a real dice and thrown by an human hand will always have a certain degree of suspicious development because we don't see the actual process but only the result.

That's why I find it very fascinating that some will want to develop mastery of a video game when at the end, complete understanding of the system & control over it can be subtly manipulated by the makers of the system, especially in the context a lot of competitive gaming do not actually freeze to a specific build of the game but do take into account the developer's patches.

Simple Solution: Reading Twitter Feeds

I was working on a way to feed Twitter messages into an indie game prototype last March. Basically, certain events and unlocks could be triggered by specific commands embedded in subtle Twitter messages.

I was slamming my head against Twitter API and JSON, when it clicked, I could simply read the generated RSS feed and parse out what I need.

In other words, I find that most of the time, it's easier to bypass the official API of the service provider and always check for simple alternatives.

Links:
iPhone SDK: First Steps With JSON Data Using the Twitter API
With Just 3 Lines Of Code Add Twitter/Facebook Into Your iOS App