Sign in to follow this  
Followers 0
  • entries
    12
  • comments
    82
  • views
    25,386

About this blog

A foray into the life of a Leadwerks Developer

Entries in this blog

Chris Vossen

Leadwerks to Telltale

Hello Leadwerks Community!

 

In the game industry everyone is always shuffling around between companies as projects reach different stages of development. Since my senior year of college I have been striving to get on board a production team. So, when Telltale offered me a production internship I jumped at the chance.

 

One of my favorite parts of the transition is that Telltale uses Lua as their scripting language so if I ever run into a production problem that involves scripting I could always jump in and investigate their code!

 

I loved my time at Leadwerks from day drinking with Josh while coding to running our GDC booth. It has been truly amazing.

 

I also wanted to say farewell to the Leadwerks community, you guys have been the most intelligent and professional online community I have ever seen and without you guys Leadwerks would not exist.

 

Thank you all for all the content that you've put up. Seeing games created with the engine make it all worth while.

 

Farewell for now (I am still constantly going check the blogs),

Chris Vossen

 

P.S.

I can't wait to see Leadwerks on Steam and all the future games that are going to come out of LE3!

Chris Vossen

Between the release of LE3 and the GDC, life at Leadwerks has been busy to say the least. Now that things have settled down (a little) it is time for something that I have been looking forward to for a while: Tutorials!

 

At GDC we were constantly talking about the power and flexibility that direct native code programming allows and how users are not locked into only component based programming. But then you look at the example game Darkness Awaits and see only component based programming and just Lua scripts....

 

It's time to right these wrongs.

 

A comprehensive series of tutorials are underway that will teach how to use the many tools of the engine as well as demonstrate the capabilities of direct native code programming.

 

This series is currently in the design phase and I am working with universities to make sure that the tutorials not only teach the engine but also cover key game development topics.

 

Here are a few high level design points for the tutorials:

  • Teach the engine and its tools
  • C++ programming
  • First Person Shooter

As always I'd love to hear suggestions and ideas! I'll keep updates coming as tutorial development ramps up!

Chris Vossen

For those of you who are more familiar with C style syntax here are a few oddities that initially threw me off:

 

The not equals in lua has a tilde

self.entity ~= nil

 

if you want to "not" a boolean you have to use the keyword "not"

if not self.target then

 

All "if" statements you have to do include 3 keywords if, then, end

if self.stunned==true then return end

 

While loops have 3 keywords while, do, end

While x < 10 do x = x+1 end

 

This is what a for loop looks like:

for i = 0, 10, 2 do
   print ( i )
end

 

in C that same for loop would be:

for (i = 0; i <= 10, i += 2)
{
   printf("%d \n",i);
}

 

Notice in the Lua for loop that exit condition is always less than or equal to <= so be careful!

 

There are no +=, -=, /=, or *= in lua

 

String concatenation is ".." rather than +

 

There is no need to end each line with a semicolon although it can be used to break up lines of code. This way you don't have to dedicate a whole line to a small declaration.

x = 10 ; y = 10;

 

Lua uses tables for everything, instead of arrays and maps. (A table is basically a map though..)

 

tables are declared with {}

Script.state={}

 

you can add specific keys and values to this table by:

Script.state.idle=0
Script.state.walk=1
Script.state.chase=2
Script.state.attack=3
Script.state.hurt=4
Script.state.dying=5
Script.state.dead=6

 

Then if you want to know the size of the table use the symbol #

#self.state

will return 7

 

In Darkness awaits I always use the short hand function call.

Time:GetCurrent()

This is expanded to the long hand: (I think this is the correct syntax)

Time.GetCurrent(Time)

The short hand is cleaner but when you get an error in one of the parameters the debugger will be wrong in the argument number. For example say you called gotopoint with too many arguments (there should only be 5 not 6

self.entity:GoToPoint(20,2,0,0,1.4,1)

The debugger would complain and say "argument #7 is 'number';" and you'll think to yourself, there is no argument 7 you crazy debugger.... but this is because the function is expanded to the long hand form so it is actually calling

self.entity.GoToPoint(self.entity,20,2,0,0,1.4,1)

and you can see the extra argument is actually in the 7th position.

 

Well off the top of my head these are all I can think of. I know there are more. For more in depth lua info check out: http://www.lua.org/pil/contents.html#P1

Chris Vossen

Much like many jobs, in programming there are tasks that you enjoy working on and then there are the tasks that lack joy and glory but are quite necessary. I recently began moving our project from visual studio 2008 to visual studio 2010 and well I can firmly state that this task fell into the latter category.

 

After receiving this job, my first step was to jump right into it and use the VS 2008 to 2010 converter wizard. Everything seemed to move smoothly but being a programming pessimist, I didn’t hold my breath. When the magical wizard had finished I jumped into Visual studios 2010 and went to do a batch build of the project, the only problem was there wasn’t a “batch build” under the build options. I thought to myself: “hmm that’s weird” but then proceeded to do a single build.

 

I started the build but then realized that I had forgotten something so I went to the build menu again and attempted to stop the build…but that feature was missing as well! At this point I realized something fishy was going on and after a quick google I discovered the problem. When installing Visual Studios 2010 express on your computer, it starts off in some sort of simplified mode called “Basic Settings” in order to reach advanced features such as stopping a build (super advance technique) you must change your settings to “Expert Settings”. So I am proud to announce that I believe I am now an expert because have the need to stop build and perform batch builds…I feel so cool.

 

IC429789.jpg

 

To make a long story short, on Friday I succeeded in getting the debug and release dll’s and libraries to build. This means we are a large step closer to supporting visual studios 2010 for all the experts out there.

Chris Vossen

The Deer and Teapot

As the summer heat begins to taper off, testing on the new engine has taken the driver seat. My first task when transitioning from particles to QA was something along the lines of "Make a scene with a character and an enemy, then make the character be animated and have the enemy chase the character"

 

One rectangle primitive, one camera, two character controllers, two models, and 5 Lua scripts later I sat in front of a completed task:

 

 

I sat at my desk, looked around, then decided to play with the CSG modeling a little bit longer... I just wanted to add a few obstacles, but then obstacles led to making a bridge, which led to making moving platforms, then you can't have moving platforms without jumping..... needless to say my simple test scene quickly devolved into a flying deer farting dust rainbow being chased around a level by a teapot that vacuumed up the rainbow.

 

Basically this is what Josh saw when he looked over my shoulder:

 

 

As you can see there are a few issues to be taken care of, but the testing will keep chugging along (just as long as I stop playing the magical deer and teapot scene)!

Chris Vossen

On the previous episode of the “Leadwerks3D particle show” a Nyan Cat / Colored Printer of Death roamed the land showing off the difference between RGB and HSV color interpolation. Well jump forward to today’s episode and that cat is now dead…or perhaps I should say has matured into a more complex and quite simply cooler particle system.

 

I’m still not finished with all of my work but here is a quick look at few particle effects I’ve tinkered with:

 

x4jhc5.png

 

I'm so disappointed that I don't have Fraps on my work desktop because this sphere of electricity looks pretty cool live.

 

2m2g6s5.png

 

A classic waterfall

 

a3jcxx.png

2ng6ghy.png

 

Since we live so close to the Folsom Prison, I thought we should channel some Johnny Cash and throw in a burning ring of fire (technically a torus).

 

 

nxmi44.png

 

This is just a blob of particles really, but I stumbled upon it while trying to create something else and thought it looked cool.

 

That's all for now, more updates will come as the project gains speed!

Chris Vossen

Like many college students, part of my time at UC Santa Cruz was spent visiting a variety of fine local establishments perusing their beverage assortments and discussing deep philosophical ideals with enlightened patrons.

 

nalg6.jpg

 

(Me at an art meeting, the day after a night of enlightenment.)

 

Okay I’ll admit it, I went to bars and talked to girls (Give me a minute this story is going somewhere relevant). The easiest small talk to make in a college town is to ask someone about their major and every time I would meet someone for the first time this question would pop up. Now my major was Computer Science: Game Design and I was always timid to admit this to girls. So instead I would say that “I’m a business major” and immediately ask them their major to silence any further questions.

 

vidw1d.jpg

 

I realize that lying is bad and every PBS show I watched growing up tried to teach me to “be myself” (Thank you Mr. Rogers and Wishbone) but for some reason I was scared of the taboo behind playing and making videogames.

 

That is until one faithful night when I finally admitted to being a “Games major.” I braced myself for the reaction I expected: a look of disgust? Laughter? Silence? The cold shoulder? A drink tossed in my face? Instead I got “OMG, I was addicted to the Sims for years!” Surprised but happy, we went on to talk about her years of playing The Sims and the families she made and how much fun she had and it was wonderful.

 

wtvxau.jpg

(My summoner name is too inappropriate for the work place)

 

The dirty little secret of games is that everyone plays them! Sure not everyone is trying to climb the ranked ladder in League of Legends (currently at 1635 ELO and climbing) or going to a midnight release of Diablo III and missing the next day of work (Josh I might randomly be sick on Tuesday May 15th…) but everyone plays something and has memories associated with their experience.

 

My goal in game development is to one day have someone say “Of course I know that game, it was the first game I ever stayed up playing all night with my friends!” Because our job as developers is not to release “a product.” No, instead it's our job to create. Worlds. Stories. Fun. Challenges. Memories. We create.

Chris Vossen

Anyone who peruses the forums regularly might have noticed a fresh new intern posting a particle system feature request thread. That intern, who shall remain nameless, was ready to tackle the task of aiding in the creation of a rich particle system that was both powerful and intuitive to users. That was over a month ago… in that time I have been sidetracked with other more important and pertinent tasks but I’m proud to finally admit that the “Super Awesome Chris Particle System of Awesomeness +3” or SACPSA+3 (please note: this name has not yet been officially approved by Josh) is finally underway.

 

In the spirit of spring time, I decided to start off by working on particles that change colors. Colors are interesting because just like numbers, they have different coordinate systems: RGB, HSL, and HSV being the most common (in my experience).

 

RGB or Red, Green, Blue is the most widely known system and is usually represented using values that range between 0 and 255. The lovely cube below shows the relationship between RGB values.

346l4qo.jpg

HSV or Hue, Saturation, Value is a cylindrical coordinate system (shown above) and is represented using values between 0-100% for Saturation and Value, and 0-360 degrees for the Hue.

 

Why does this all matter? Well when you’re iterating from a starting color to a final color there is a vast difference between RGB and HSV.

 

For example say you wanted the particle to start as red and end as blue. The RGB path leads from red to pink to blue, while the HSV path goes: red, orange, yellow, green, blue (like a rainbow).

 

2ue6ttx.jpg

 

The resulting particle systems are as shown:

 

142czrb.png

RGB

1zxtff9.png

HSV

 

I’ve found that in the end of the day, the choice between particles changing color according to RGB or HSV falls to how the user wants the particle effect to look. I can’t wait to see how people use the changing colors in their games (fireworks, fireballs, teleporters), so that means I better get back to working on the particle system! Stay tuned for more updates!

Chris Vossen

There are two types of days here at Leadwerks; days that we work and those that we werk. On werk days we hunker down at our desks, cups of caffeine in hand, and code (Unless you’re thinking… or pretending to think). Then there are work days, on these days we focus on business development: researching, planning, and occasionally field trips. So to kick off our intern hunt members of Leadwerks grabbed their sack lunches, kissed their monitors farewell, and ventured over to the Sacramento State University for some high octane presentations!

 

35i0vgx.jpg

 

These action packed presentations were given to students in both a game architecture course and a 3D modeling class, focusing on highlighting our four new internship openings:

 

Programming Internship

  • Assist the development team with core engine design
  • Work with game development team to create a sample Leadwerks3D game
  • Gain experience working in a professional software development environment
  • C++ and Lua experience are a plus but not required

 

3D Art internship

  • Become proficient with the Leadwerks3D design tools
  • Provide feedback to the development team to improve the art pipeline
  • Assist game development team by producing 3D models, textures, animations, and game levels

 

Web Development Internship

  • Work with marketing to enhance our online identity
  • Develop social features for our online community of game developers
  • Foster online community relations

 

Marketing Internship

  • Author promotional materials for website, press releases, and newsletters
  • Interact with the development team to communicate technical information to the public
  • Enhance and promote our unique company brand

 

We had a wonderful reception and have received an outpour of interest. The trip was well worth leaving our keyboards neglected for one day. A special thanks to everyone at Sac State and with any luck the Leadwerks intern family may be growing in the future!

Chris Vossen

There is only one word to describe the people of the gaming industry: awesome. Maybe it’s because we work on projects we love, maybe it’s the lack of sleep, it could be the countless hours we’ve spent perfecting our twitch reflexes, but I think the bottom line is we are 1337 (It’s probably because of the robe and wizard hat).

 

This past weekend members of the Leadwerks team journeyed out to the Sacramento Game Developers Meetup Group http://www.meetup.com/gamedeveloper/ to rub elbows with the local game dev community.

 

600_108202092.jpeg

 

The meeting kicked off with a presentation by Robert H. Oats III (pictured above) the associate technical director at Bioware Sacramento. Robert gave a refreshingly unedited account of his time in the game industry reciting stories of his career path which started at Gas Powered Games, moved to Telltale, and ended up at Klicknation which was acquired by EA and given to Bioware.

 

2v9ce39.jpg

 

After the presentation finished, came a brief Q & A session in which Robert offered advice on a myriad of subjects ranging from “What questions do you ask in an interview?” to “What is it like working for EA?” My favorite question came from my boss Josh when he inquired “Do you ever regret hiring an employee” this is not a question you want to hear your boss ask when you are the newest intern. Josh later assured me this question was not directed towards me but it certainly made me smile during the QA session.

 

Overall it was a great group of game developers talking about their personal projects and a fun a welcoming community. Basically game developers rock.

Chris Vossen

In the recent weeks Leadwerks has leveled up by joining the Sacramento State University Center for Entrepreneurship (CBA) and after much scanning of the talent tree, Leadwerks has recruited a new intern.

 

With that, I am proud to introduce myself (the intern) to the Leadwerks Community. My name is Chris Vossen, I am a recent graduate from the University of California: Santa Cruz with a Bachelors of Science in Computer Science: Computer Game Design. During my senior year, five programmers and I joined up to create Journey to the Sun (JTTS) a three player puzzle adventure game for the PC. By the end of the year, our team had expanded to twenty three members (6 programmers, 13 artists, 4 sound designers) and we went on to win the UCSC game awards for audience choice and best audio. When I wasn’t wrangling artists, I was in charge of our games AI, pathing, particle effects, and designed half of the levels. It was an amazingly fun project that will be ported to the Xbox 360’s Indie Game section in the month to come. Here is a brief look at JTTS:

 

 

It is such a pleasure to be aboard the Leadwerks team; I have only been here for one week and my brain already hurts. It will be a challenge to uphold the high coding standards set, but I’ve never been one to give up.

 

My first of many tasks will be implementing a mind blowing particle system. Particle effects hold a special place in my heart, to me they are the glitter of videogames. Don’t have a 3D model for your enemy? Make it a particle effect smoke monster! Characters punch animation looks off? Throw a crazy particle effect in to cover it up! Trees look bland? Make a falling leaf particle effect! I cannot count the number of times my team used particle effects to add a burst of magic to our game.

I am currently researching existing particle engines and finding a load of fun features to implement but I would love suggestions and input into what other users find exciting. Please post these on the particle systems’ feature request page:

 

http://www.leadwerks.com/werkspace/topic/4687-particle-systems-feature-requests/

 

I have been an avid gamer my entire life. As a child my parents were adamant in their stance of “We will never buy our kids videogames.” Thus my gaming career began on my uncle’s hand-me-down Atari 2600 playing endless hours of River Raid, Combat, Pitfall, and Warlords. Then one faithful day in 1991 my parents purchased a one dollar raffle ticket for a school fundraiser with an unknown prize and gave the ticket to my older brother. Little did they know that the grand prize was a new Sega Genesis with a copy of Sonic the Hedgehog and as fate would have it my brother won that raffle. Ever since then my path has been set. Videogames are my career now and I would have it no other way. It is amazing to be here working at Leadwerks and I’m excited to hear from anyone and everyone in the community!

 

 

 

Favorite Games:

League of Legends (MOBA) [My main champion is Janna…the power of the wind]

Hero’s of Might and Magic III (Strategy RPG)

Flying Dragon 64 (Fighting)

Super Smash Brothers Melee (Fighting)

Gladius (Strategy RPG)

Perfect Dark (FPS)

Ogre Battle 64 (Strategy RPG)

Shinning Force (Strategy RPG)

River Raid (Best Atari Game)

Sign in to follow this  
Followers 0