No such place as far away











{December 1, 2009}   I’m alive!

Okay, so I’ve just disappeared from this blog for the past…uh, 4 months and a few days. And now I popped out of nowhere to say I’m still alive and well! I had very good reasons to disappear, though! I was busy :-D

Well, that’s not a good reason, is it? I guess I simply didn’t feel like writing here, then, because I was too consumed with lots of decision making. Soon before and soon after graduating, I reflected intensely about my goals and what to do with my time and skills (we are in this life for only a short blink of a time before vanishing for good, after all). Since I’m a believer of the “walk as you talk” attitude, I’ve been trying to redirect my life according to my brand-new (but well thought-out, or so I hope) priorities.
The main change is that I don’t want to be a game developer anymore. Yeah, really. I know I’ve been preaching about my “I wanna be a rock star…ops, game programmer when I grow up” dream since forever, but come on. Who am I to lie to myself? The truth is, I fully respect those who make games. They are generally skillful, they are generally hopeful, and they go through A LOT. I’m not talking here only about my experiences at Tectoy or Overplay, which are both nice companies whose owners are bold enough to foment the Brazilian game industry even with all its gigantic obstacles. It’s just that I don’t want to sit all day on a (possibly uncomfortable) chair coding gameplay rules, and then talk about games with my work colleagues, and play games during lunch break. And get no paid overtime, and earn less than the average programmer guy or girl. And THEN, possibly get laid off after a project is done, because, you know, “the games industry is recession-proof” as the top executives of some companies (like EA, Gameloft, and so on) liked to say before laying off from hundreds to thousands of employees worldwide recently. Fortunately, I wasn’t laid off, and I never had to do overtime because I was an intern, who have special rights since they are studying and all. However, I got a glimpse of all this, both from people who work with games abroad (U.S, UK, etc) and from seeing this sort of thing happen to people I know and care for. So…this isn’t the life I want for me. Ever.

I’m not saying I’m special. I’m not saying I won’t sit down for hours on end, coding. Actually I do that. I love programming, and that’s what I do. The difference is: that’s what I know how to do, *among many other things*, and I want to decide *to which cause* I will devote my skills and my time and my blood (so to speak) to. And making games just doesn’t seem right, at least not games who are really cool or cute but actually disposable, or don’t even impact positively on people (not to mention those that are arguably damaging). Playing and making games are 2 things I really like, no doubt. But the point is, I do prefer talking about politics, and studying applied computer graphics, and reading about business. I prefer reading Fortune, and not Nintendo World. And believe me: I don’t know how all this transformation from who I was (when?) came out to be, and why it took me so long to realize my absolute passion for games has pretty much faded.

Anyway. As you may have guessed, I’m on a new wavelength now. I’m working at Eldorado Research Institute, as Junior Software Engineer. It’s amazing over there, and I’m being given a degree of responsibility over the project I’m working on that I had never had before, to my utmost joy. This semester at University is almost finished as well, although I still have a project (modifying the way ray-casting is done here) to hand out and an exam.

By the way, besides working, I’m taking graduate-level and Computer Science courses this semester and the next one, until I receive some sort of answer from DigiPen and University of Alberta, the 2 schools I ended up applying for. The reasons I still applied for DigiPen even though I don’t intend to work necessarily in the games industry, and how in the world an University from the far, cold Canadian province of Alberta is my top choice of graduate school are to be dissected in a future post.

Which, let’s all pray, will come before another 4 months have passed! x-)

P.S: I’m 22 now. Hooray! And have an XBOX 360 with Fable 2, Assassin’s Creed and Bioshock to play on my free time. Which is almost none theoretically, even though I do manage to play some hours a week. Somehow o_O



{December 1, 2008}   Almost!

This semester has been a bloody one, but it’s almost over, and I’ve been doing the best I can to deliver everything I have to, on time and all.

Today I have to present my Administration course’s final project, which was fairly easy (at least in comparison to all the rest): writing about an administration theory that would be applicable to the 10 best-to-work Brazilian companies. This is a list that is published in the press every year here.

I also have to present my Computer Animation video, which I finished this morning. I know I should have finished it before, but really, I could do nothing but go out with friends, relax and sleep like no tomorrow during the weekend. This was the effect of having a boring, complicated Transport Phenomena test on Friday. Transport Phenomena, by the way, is a weird mixture of Thermodynamics and Fluids Mechanics. An no, I’m not good at this kind of thing =P

Back to the animation then. It was first planned in September, when I sketched its whole storyboard. The storyboard is crucial because one needs to have a notion of what each of the animation’s scenes will be like, and more importantly, to analyze and have a way to predict what is really viable to be done when taking deadlines and other responsibilities into account. Then during a week or two in October and beginning of November I modeled and animated each scene at a time.

I ended up using some textures, but wasn’t able to learn how to do proper texture mapping: it’s easily noticed that there is a round, red “thing” on the wall during the keyboard typing scene; that was to be a clock, but since my texture mapping of a rectangular picture to the clock’s circular face was so lame, I decided not to include it, and left the red clock as it was. What irritated me the most, however, was the rendering process, which always takes too long. Just so you guys can have an idea, 200 frames took from 4 to 5 hours to render.

The video editing was quite easy because I used the totally newbie, but indeed effective Windows Movie Maker. I used WMM during my good n’ ol’ high school times, while producing Anime Music Videos and such. But, as I soon found out, it’s nearly impossible to edit sound using only WMM and a separate audio editing tool, say, Audacity. So in the end I had to learn how to do stuff in Adobe Premiere, and used it to put audio (a collection of Pilot Wings 64 songs, plus some samples from freesounds and soundsnap) and video together. This software is great: easy to learn, easy to use. I recommend it to everybody, really.

So yeah. After who-knows-how-many hours of work, I have the result. It was fun! The Maya animation ended up exactly the way I had imagined it, and I’m grateful for not having imagined anything too fancy. Learning a software tool as complete as Maya requires lots of practice, and consequently, lots of time. So considering the time I had and the fact that I did the whole modeling, animation, audio and video editing, the 3-minute-long resulting movie is just great! Despite my own opinion of it, any constructive criticism is greatly appreciated.

I created a (fake) Youtube account just so I could post it here. Enjoy!



{October 28, 2008}   Work.Update()

Never mind this programmer-like title. Last week I didn’t even program all that much, having spent most of my time doing weird schoolwork for courses like Accounting, not to mention English compositions and whatnot. This weekend, however, things got better as I finally managed to solve the matrix inversion problem of my horribly ill-conditioned spherical MLS algorithm.

Uh, I guess for you guys to understand what I mean I must explain about that scientific project I’m working on. The project’s whole purpose is developing a tool for interaction and visualization of medical images taken from exams such as CT. As it turns out, these images can be considered 2D slices and one may convert them to 3D by integrating them into a volume. This integration can be achieved using various volume rendering techniques like raycasting, the one we are using in our project. However, raycasting as it is normally used (with linear interpolation between points detected by rays) doesn’t provide information about any points in the volume other than the ones present on the images being integrated. The problem is that the points on these images are only samples (after all, the pixels at an image are a discreet representation of a continuous space, namely the organ being examined). So rendering stuff with raycasting can cause imprecisions or misrepresentations to occur: if a volume region is under-sampled some holes may appear, or the linear interpolation between the point samples can simply fail. My mission is to implement an algorithm that, by using spherical interpolation, may increase this rendering precision and allow the calculation of extra information such as curvature at each sample point, which is impossible when linear interpolation is used. The curvature part is fundamental to the interaction side of the project, which I’ll explain on another occasion because …well, because I should be going to sleep now :-)

The problem is ill-conditioned because I must invert a matrix at a moment of the algorithm and this matrix has both incredibly large and quite small values. This causes lack of stability and, if common algorithms like Gauss-Jordan/Gauss with Backsubstitution or LU are used (all of which I tried along the way) then overflow or underflow can easily occur. So the solution, as I found out with some effort, is using another algorithm named SVD. Well, I implemented it and to my surprise the damn result was finally reasonable. So yeah, SVD all the way!

Other than that, I am still doing my Computer Animation project. I hope I finish it soon, as it’s very time-consuming, although very pleasurable. Or else I’ll be in real trouble during November, with all the final exams. Here is a picture of another animation scene.



{October 8, 2008}   Must…survive!

I’m half-asleep right now but felt the urge to come here and post about my greatest achievement this week (so far, heh): rendering the first scene of my Computer Animation class project, due to the end of November. I basically had to learn how to model something in Maya, plus applying material and lighting properties. This adventure took me a good amount of hours since yesterday evening, but the scene ended up even cooler than the one I originally drew during the storyboard phase. Here is a picture (and yeah, it looks like a cartoon on purpose):

Apart from that, good news for those who watched movies like Existenz (one of my favorites, I admit) and have always wondered when games will be played solely in our minds.

Well…must sleep now. I’ve been so tired these days, because of an endless sequence of exams (even had a TOEFL simulation this Tuesday) and some exercise lists to hand out. But I hope I can rest and hang around with friends on the weekend, at least. As a friend of mine would say: Keep coding, Johnny Coder!



Hi all!

It’s been a while since I last wrote here, but it’s expected. As I told you guys last post, I was racing against time to study for a Computer Graphics exam and have a game I’m making with a friend of mine, from Gamux, ready for the SBGames Game Festival. I didn’t say it then, but I also had to draw a storyboard of a Maya animation for my Computer Animation class, along with other more usual college work.

Well…I did manage to do well on all this stuff, except for getting the game ready =( The small physics engine I’m coding as part of the programming process was (and in fact, still is) suffering from some precision bugs, and I didn’t want to hack some correction code in and send it to the festival as if I were OK with it. But I COULD have managed to fix the bugs till the end of last week, if only my Image Processing professor hadn’t sent off the false alarm that we were to have an exam. It turns out that he did, however, so I abandoned any plans of programming and dived into pattern recognition books. Well…the exam was to take place today. However, he ended up delaying it for almost 2 weeks! Can you believe it? I was very pissed off with that, although I know I have more chances to do well on the exam now. Even so…I feel it’s quite unfair.

No use complaining too much though. At least, since now I’m not being hard pressed by any game championship dates, I’m going to take my time with the game and do the best I can for it to be the best it can. Right? =D

That aside, during this and the next weeks I’ll focus more on my other project (yeah, that one which was shamefully seconded by my game development race). Today I discussed important issues with my adviser professor and the PhD. lad who is responsible for the project, concerning the algorithm I must implement and what I’ve been studying about volume rendering and GPUs in general.

Which takes me to the last topic on this post: the last book from the set I bought from Amazon arrived already, and it’s excellent! The name is Real-time Volume Graphics and I absolutely recommend it to anyone interested in learning the basics of GPU programming as linked to volume rendering. Shader programming, here I go! \o/



This week was excellent, albeit quite busy. I started training Tae Kwon Do after getting really excited with Tae Kwon Do fights in the Olympic Games, and must say it’s a LOT more enjoyable than Kendo. This came as sort of a shock to me, since I was always a fan of Kendo, and, after practicing it for around 2 years (at a Buddhist temple during High School) I thought no other martial art or sport could make me feel better. But as it turns out, I was completely wrong, and using one’s fists and legs to punch and kick is really so much funnier than using wooden swords.

Besides that, the game project I’m doing with a couple of friends from Gamux advanced a lot since last Sunday, when I finally managed to finish the implementation of a scene graph. This scene graph, which takes the form of an octree, is being used as the controller of all game objects, by rendering, updating and testing them for collisions. I’m currently coding the game physics, which is a bit new to me, since the small ball needs to realistically react to different terrain types and contacts with other movable or unmovable objects. This is something Gariman didn’t have: all its physics effects were beautifully faked by me and the other programmers in the team, by hacking in invented formulas and many tweaked values. Coding like that was acceptable for me at the time, since Imagine Cup’s deadlines were fast approaching and I was under too much pressure, with college exams and recurrent crunch periods at Tectoy making me all stressed out. But now I finally have more time to code the way I want, even more so because I’m the only programmer taking care of the game. And I’m somewhat glad for that, even though having to discuss every single development decision with other people does have its appeal.

Huh…did I explain what the game is about? It’s a simple puzzle game in which the player uses the analog stick (in case he or she has a fancy XBox controller) or the mouse to move a board and make a small ball slid around till it falls on a hole, having a limited time to do that. Nothing new, right? The difference here is the puzzles the player has to solve in order to make the ball finally reach the hole. Guess what? They are (or rather, meant to be, since we are still developing them) intelligent! So it’s a game that perfectly merges fine-control gameplay and food-for-thought gameplay. The artist working on the game has done some concept modeling on it already, and as can be seen, the visuals are cute (they are, in fact, cuter; on this picture the “ink border” effect, used in games like Okami, has been turned off).

I’m running against time right now to have a demo version of the game ready for UPA 2008, a huge yearly event that happens on campus and has thousands of High School students visiting our University. I plan to use them as testers for the game, in order to collect new ideas and general opinions on its gameplay and graphics. But it’s going to be tough…my Computer Graphics class has been demanding of my time lately, and the exam is a bit more than a week from now. Run, Carol, run! =D

By the way, above is a picture of around 100 (I guess) cubes I used to test spacial distribution using the scene graph. It’s rather cool, mainly because I made the cubes all fly to different directions as if they were a particle cloud.



et cetera