Blog of Josh "Renanse" Slack

Updates and commentary from the depths of a 3d Java code spinner's mind.

Tuesday, May 20, 2008

Article in Massively

Saw this post about our tech session on massively.com this morning. I certainly don't recall hinting about anything NCsoft was doing aside from saying I wish I could tell more about what the team I was on was doing, (but then joked that I couldn't for fear of the lawyers.) Ah well!

Labels: , ,

Thursday, May 15, 2008

More from JavaOne

During our technical session at JavaOne, Rikard and I showed off two videos and two live demos. You've seen the first video already. The second video was a timelapse demonstration of the kind of tool you can build in Java using the jMonkeyEngine, using the NCsoft world-building tool as an example. We received permission to upload that video to YouTube yesterday, which is exciting because it's one of the first real work-related thing we've been able to get out into the public.

You can watch Rikard show off his brilliant skills as a worldbuilder here:

Labels: , , ,

Saturday, May 10, 2008

Over now

Yeah, it's over now (but I can breath somehow. :)

JavaOne 2008 is over and done with and I'm still standing - despite doing a technical session, a BoF (basically an experts panel,) a broadcast interview and getting onstage for the Friday keynote. I definitely have to thank the guys at Sun who helped make all that possible and really enabled jMonkeyEngine to get into the public eye more than ever. It was very exciting to hear the amount of buzz about jME and Java gaming in general. It was also awesome to finally meet several people I look up to in the industry such as Ken Russel, Sven Goethel, Doug Twilleager, Paul Byrne, and of course James Gosling (and many others, sorry I'm still tired.) Special props to Chris Mellisinos who actually does so much more behind the scenes in getting the various factions to support the idea of Java as a gaming platform than most of you realize.

Once I have had time to recuperate a bit I'll try to write more, but for now, check out the following videos:

1. The jMonkeyEngine 2008 reel
2. My interview with Chris Mellisinos
3. The JavaOne keynote I took part in. (I've got about 8 mins of time on stage starting at 36:20)

Labels: , , , ,

Saturday, April 26, 2008

Movie locked and loaded...

After spending the better part of three days total gathering, editing and splicing together footage from about a dozen different jME projects, the video portion of movie for our JavaOne presentation is finally done and just waiting for its soundtrack. The quality of some portions is better than others and I'm guessing Rikard and I should stick to our day jobs as a programmer, because we're no video editors... but I hope you guys all like it anyhow. Come see it unveiled for the first time at our tech session on Tuesday night of the conference. I may also get a chance to show it off on other days of the conference, so keep your eyes peeled.

For those of you who can't attend JavaOne this year, don't worry... I'll also post the video up to YouTube on May 10th. For now, here's a shot of it laid out in iMovie '08.

JavaOne '08 jME video in iMovie

Labels: , , , ,

Tuesday, January 22, 2008

Too Funny

Gordon Freeman calls into a radio program... really! Hear it for yourself.

Labels: ,

Wednesday, January 16, 2008

Prince of Blades

An interesting open source game was announced on the jME forums recently. It looks a lot like the old Prince of Persia games from long ago, which is great because I really loved those.


Also included is a nice looking editor which looks like an easy way to make custom levels.


You can get more information and download the source here.

Labels: ,

Friday, December 21, 2007

Student Games Part 2

The second game mentioned yesterday is called Matics and has a stylish look and physics based game play. From the video and postmortem, the gameplay appears to consist of building contraptions to get your avatar from the start to the end of a level (a la Lemmings.)



I've always liked games where you "invent" your way through a puzzle and this looks like it could be a contender for my leisure time is they spent time to push it to commercial release. Nice work guys.

Labels: ,

Thursday, December 20, 2007

Student Games from Georgia Tech

Two jMonkeyEngine games developed by students at Georgia Tech were shown at the Winter 2007 Demo Day.

Lord of the Fjord - a jME game
The first one is called Lord of the Fjords. Described as a "Viking boat bongo battle", the game is a multiplayer boat race using Nintendo's Donkey Konga bongo drums as a control device. You can read more about the project, including a quick postmortem over at the jME forums.

The second one is described as "[a] platforming puzzle game that closely resembles the visual style of Kirby with the debug mode from Sonic 2." More on that project as information becomes available.

See also this enthusiastic news coverage of the event.

Labels: ,

Friday, November 23, 2007

Ikea as an FPS

Earlier this week I had my first experience with the Swedish furniture store, Ikea. It was near closing time so we were in a bit of a hurry and Ikea is really not the best store to try to hurry out of. The whole thing is set up like a huge queue for some ride at Six Flags - there's only one way through the store and it twists and turns back on itself over and over. There's even the helpful signs along the way to tell you how far you have to go along this singular path until the exit. A massive food court waits at center of the labyrinth so you can stock up on lingenberries and meatballs before continuing your journey.

It was very easy to picture the whole store as some level on FEAR or CoD4, with its twisting and varied (but ultimately linear) path.

Just think of the in-game advertising possibilities!

Labels: ,

Wednesday, October 10, 2007

New footage from jME based "Nord"

New footage was posted today for the jMonkeyEngine based project, Nord. Built by Swedish game team, SLX Games, Nord has been described as "a combination between MySpace and The Sims/Sim City." From screenshots, concept art and gameplay videos it looks to be a stylized social community sandbox, bringing to mind other games such as Club Penguin or even (kid-friendlier versions of) concepts from Second Life.

I'm definitely looking forward to seeing where the project goes next.

Labels: ,

Saturday, August 18, 2007

Look at my wii go!

So I've been having problems with my wii lately.

Yes, ok, I'll wait for you to stop snickering. Done? Great.

Ever since update #2, I've had lots of issues connecting to any of the nintendo content, including updates and the store. Thinking it was my wireless settings, I tried every combination of security and channel settings, etc. that I could but nothing made it better. Oddly enough, using the regular internet was nice and speedy.

Finally, I took notice of a setting I had constantly skipped over in the Wii wireless options, MTU. It was set to 0 all that time, which meant almost nothing to me.

After looking up MTU on wikipedia and learning a thing or two, I decided to set the MTU setting to 1488. The difference was immediate. It was almost like having an entirely different service. My wii suddenly couldn't be stopped.

And you're snickering again... I give up.

Labels: ,

Sunday, August 05, 2007

Some might find this interesting...

If you've been even vaguely following a certain handful of monkeys and their game careers with any interest at all, you might enjoy this little interview.

Labels: , ,

Wednesday, June 20, 2007

The perfect view

Let's say you have a 3d object and you want to move your existing camera so that the object fills your view. I had such a hypothetical situation recently and for some reason it took me several hours of scribbling to figure it out, after which I smacked my head for being so dumb. Hopefully I can save someone out there from a similarly self-induced headache.

First, let's assume that you have a bounding sphere around your object, or in other words, a sphere that tightly and exactly encompasses your object. You know where this bounding sphere is in space, and you also know its radius.

Aside from the sphere, you also have the camera. Your camera has a viewing frustum, which is basically a four sided pyramid with the tip neatly cut off. Here is a simple reference showing the frustum from the side and how we want to fit our sphere in it.



Our eye is at point A. The point at which the eye can start perceiving things is that first vertical solid line, or the frustum's near plane. The sphere is centered at point B, with a radius r. It touches the edge of the frustum at point C (as well as at another point directly opposite which I have not labeled.)

We have the following information about the camera... We know the distance from A to the near plane. We also know the viewing angle of A. Some people keep track of that, in jMonkeyEngine we instead keep track of the offsets of the top, left, bottom and right edges of the near plane (really a rectangle). So we know that the top edge is x units from the center of the near plane, the right edge is y units from the center... etc.

What I want to know is the distance from A to B, but I only had an angle and a single side length. Any geometry student will tell you that you can't construct a triangle without 2 sides and an angle or 2 angles and a side... What to do?

Eventually I realized an important piece of information as illustrated below:



Yes, the fact is we actually know two of the angles. The point at which a circle touches a line or plane is perpendicular to the line from that point to the center of the circle. So, we have a right triangle and problem becomes fairly simple:



sin(theta) = r / AB
or
AB = r / sin(theta)

Where theta is the angle CAB. In jMonkeyEngine you can get this angle with the following pseudo code:

angle = arctan(frustumTop/frustumNear)

Where frustumTop is line st and frustumNear is line At in the above diagram.

This gets the best fit for the up-down direction. If your screen is taller than wide, you should use frustumRight instead to calculate your angle.

Now that you know how far away the camera should be, grab a vector and set it to your camera direction, then multiply it by the negative distance and add the center of your sphere. Now your camera is in the perfect spot for the "perfect view".

Example code (you can skip computing both if you know that one side will always be bigger):

float angle1 = FastMath.atan(camera.getFrustumTop() / camera.getFrustumNear());
float d1 = sphere.getRadius() / FastMath.sin(angle1);
float angle2 = FastMath.atan(camera.getFrustumRight() / camera.getFrustumNear());
float d2 = sphere.getRadius() / FastMath.sin(angle2);
tempVector.set(camera.getDirection()).multLocal(-(Math.max(d1, d2))).addLocal(sphere.getCenter());
camera.getLocation().set(tempVector);

Labels: , ,

Friday, June 01, 2007

Mad Skills Motocross

jME forum user Tobias of Turborilla Entertainment announced today his upcoming jME powered game, "Mad Skills Motocross." Check out the preview video, it's pretty cool looking already. He apologizes several times for the programmer art, but personally I like it. :)

Labels: ,

Friday, March 23, 2007

Need a job?

Via a posting to the jMonkeyEngine blog today, we've announced that the Java team here at NCsoft is looking to add skilled Java programmers. Head count figures, salary, benefits, or any of the typical questions you might have are not available because at this point we are simply looking for resumes. However, I personally recommend sending us your resume now if you have the skills and a sincere interest in working on Java gaming technology in Austin, TX. Sometimes things move and opportunities close faster than you expect.

See the official posting for more information
.

Labels: , , ,

Tuesday, March 20, 2007

GDC session notes

As promised in my last post...

My GDC 2007 Conference/Session Notes (in order of attendance):


ATI Graphics Performance Development Tools:

ATI has been hard at work improving their suite of tools. Their main showing was PerfStudio, a visual analysis tool that tracks graphics API calls and card and application statistics (for example, hardware utilization, time spent waiting for vertex processing vs. pixel processing, overdraw, etc.) It also allows for setting break points and inspecting shader code. Being from OpenGL land, I can’t really compare the power of this tool with any other graphics api performance / debugging tool because we don’t really have a good one to speak of (except for gDEBugger, which is pricey and I haven’t used that myself.) That said, I thought it looked useful. Currently you can download a version that works with DirectX 9 here: http://ati.amd.com/developer/gpups/index.html The DirectX 10 / OpenGL version will be released in Q2 with their new cards.

Beyond PerfStudio they also showed off ShaderAnalyzer, a tool that helps you measure the performance impact and functionality of your shaders. It supports GLSL, HLSL, ARB and assembly shaders. It also allows you to see the native compilation of the shader against various driver releases. Other tools included Tootle and Compressonator, both of which looked interesting, especially as part of a tools pipeline. The first helps you optimize meshes for reducing overdraw and vertex caching. The second is a tool for reducing texture image size. These two tools are non-ATI specific for the most part, meaning using them will also produce benefits on nVidia cards.


ATI – Massive Multi-Core CPUs and Gaming:

This session focused primarily on the CPUs having more than just 2, 4 or even 16 cores on a chip in the future, rather they wanted us to start thinking about having dozens or even hundreds of cores on a single CPU. Due to physics (too hot!) and power requirements, they feel the clock speed of a single core is about as fast as it is going to get. The only way to move forward in computing power is therefore to go massively parallel. AMD’s quad core chip is due out in the 2nd half of 2007 and they felt that Moore’s law was now about cores per chip, predicting 8 by 2009, 16 by 2010/11, 32 by 2013, and so forth.

Typical current threading usage in games has been at the system level – i.e. having a thread for audio, a thread for physics, maybe a thread for AI, etc. This approach is not scalable moving forward to these “massive multi-core” chips. Instead, they argued the focus should be on Thread Level Parallelization – things like spawning off threads to run subsections of a "for loop" in parallel, etc. The presenters offered a number of tips for doing this effectively which are probably best understood by reading their presentation slides. Here is a short list: (Much of it is not something I would deal with in Java so they I am probably not doing proper justice.)
  1. Cache optimization is extremely important. Keep your structs as tight as possible with as little byte padding as possible (e.g. use a one byte value instead of a full four byte variable in situations where you are storing values <>
  2. Lock as late as possible and release as early as possible.
  3. Do not thread / synchronize at the system level. Use thread pools, OpenMP, etc.
  4. Keep variables on separate 64byte cache lines to prevent false sharing.
  5. Try to keep memory local to the CPU of the thread using it. You can use NUMA information (getNUMANodeProcessorMask in 2000/XP) to help in determining this.
  6. Keep your producer and consumer threads on the same NUMA node.
  7. When detecting the number of cores you have on the system for setting up your thread pool, rely on the OS instead of low level detection methods. (Vista – GetLogicalProcessorInformation. XP/2000 – GetSystemInfo) Relying on the OS keeps you compatible with virtualization.
  8. Use a central thread pool and target a 1-1 ratio of working thread to CPU core.
Another topic discussed in the session was SSE128 which as the name suggests doubles vectorized throughput by enabling reading 128bits in a pass. According to AMD, matrix multiplication is sped up through use of SSE128 instructions by 85%, other math operations by 10-50%. No speed improvement is made for scalar code. AMD has released a free library called AMD Performance Library (available for 32/64 bit windows and Linux) which consists currently of math and image manipulation routines that use this instruction set. You can check that out at: http://developer.amd.com/apl.jsp


The Future of Storytelling in Next-Generation Game Development



Warren Spector gave an interesting talk on his feelings about the importance and direction of story telling in gaming. The main points of his talk were:
  1. The story of a game and the telling of that story are important factors in drawing new players into gaming because story telling in general is a universal quality of the human race.
  2. The story of a game should provide a context for player action. It should not dictate the player’s actions, but it should make the player’s actions feel more meaningful. Still, having a story provides some limits and guidelines to the game world, which makes it easier for the players to make decisions.
  3. Story pacing and path gating should be based more often on trend tracking rather than a single critical “go down path A or path B?” point. Track the way a user interacts with the world and with others and use that information to push players down different story lines.
  4. Allow players the ability to take part in the story telling.
  5. Let your players “off the rails”. Allow them time or ability to explore the inner lives of the characters. He used the Hong Kong level in Deus Ex as an example.
  6. Iconic vs. photo-realistic. Too much emphasis has been placed on photo-realism in games, especially on the next generation platforms. While he conceded that still shots of the characters in these games look great, almost perfect, he contended that when animated, the realism often left much to be desired. It is important to have empathy with your characters and he felt the continued push towards photo-realism actually has moved us further from the ability to feel that empathy. He put up a picture of Mickey Mouse and one of a girl from a current title and said he felt the first one had more potential for conveying emotion and creating emotional bonds with the player.
  7. Hire world builders and designers that have the ability to truly believe a world location is “real”. This ability to immerse fully in the game locations and content will translate to the player when they are experiencing the game.
(Warren also commended work done in the area of believable, immersive story telling by Ken Perlin and Paul Ekman. He did not mention the details and I’m only familiar with Ken from Perlin noise, but if you are interested in this topic, it might be worth googling work by these gentlemen.)


Intel Multi-Threaded Building Blocks:

Intel was basically pitching their threading library here which consists of basic components you can snap together to make multithreaded apps. Intel’s approach to threading here is to define code in “tasks,” leaving it to their threading library to break these up and execute them on individual threads as needed/possible. Division of tasks is done by placing the task on the stack and dividing it in two. The first half is then processed leaving the second half to be processed by another thread if available or by the initial thread once the first half is done. This division is done recursively until the task size is less than a given task “grain” size.

Intel’s MTBB library also provides safe concurrent containers such as hash, queue and vector. It also provides some kind of scalable memory management. Their library is supposed to work equally well on AMD. I zoned out a bit because the talk felt extremely “pitchy” so if you want a better understanding of the library I would suggest reading about it here: http://www.intel.com/software/products/tbb Intel’s GDC presentations are also available here: http://www.intel.com/software/gdc


Shigeru Miyamoto’s Keynote “A Creative Vision”:

Wow, lots of people lined up to hear Miyamoto talk about how his vision works. After waiting in line for about 30-45 min we were finally allowed into the auditorium where we proceeded to wait for a while longer.

Miyamoto’s entrance onto the stage with played up using the Wii’s Mii channel, showing someone creating his Mii avatar upon which he suddenly popped onto the stage. Interestingly enough, Miyamoto used the Wii photo channel to give his slideshow presentation.

You might think I am going into a lot of detail about some fairly trivial things. I am. That’s because the actual presentation was basically a recap of Nintendo’s history, the console controller’s history, and his own personal history, as well as a long summary on Nintendo’s corporate mottos.

All that stuck in my mind after this long presentation (it went forty five minutes or more over time) was how he presented his litmus test of a game’s mass market appeal. He did this via his “Wife-o-meter,” basically a measure of how much a game he had worked on appealed to his wife. Evidently she really likes Wii sports.


Innovations in Fable 2:


I arrived a little bit late to Peter Molyneux’s talk on Fable 2 to find him talking about sex and bawling on stage. The talk was on the new innovations of the sequel to Fable, and from my well timed late entrance, I gathered you can buy condoms and have protected/unprotected sex. Having unprotected sex means you may have children. Children in Fable 2 are like mini versions of you. They like the same things that you like, are evil bastards or saints like you, and they worship the ground you walk on. When you come home from adventuring you can play with your kid and just generally watch him/her grow up. Touching right? (Thus the bawling… he’s quite the actor.)

Besides a virtual family, you have more virtual property. In Fable 2 you will be able to buy any building in town (or all buildings in town) including homes, shops, etc. Buying these places will unlock related quests such as “go collect 10 rat pelts to sell at the little shop you just bought.” The money you make will be “physical” meaning there will be a room with all your money in it that you can go to and swim through the yellow stuff, (or perhaps cry over cobwebs if you’re poor?)

How you react to quests also will affect the world. Similar to Fable, people will remember your local actions and react to you accordingly. Peter says Fable 2 will take this further by having your actions affect actual world content. For example, if you decline to help save an old man living alone in a hut in the forest, there may be nothing left the next time you pass by. Conversely, helping him out might encourage more residents to gather in that area and an entirely new town to appear over time. (At this point I had acorns and trees dancing in my head.)

Your new canine sidekick was of course the real talk of the presentation and probably something you’ve already heard buzz about. Also a reflection of your actions, your dog will change with you, becoming more evil or virtuous looking as your looks change. Peter called the dog a “canine simulation” several times, mentioning that knowledge from the Black & White series and the original Fable went into the simulation code for your dog. The dog has a few core directives, somewhat similar to Asimov’s three robot laws. He loves you without question, wants to protect you, and wants to protect himself. (Evidently they added the last directive because beta testers were throwing tennis balls off cliffs to watch the dog dutifully leap to his death.)

You have no direct control over the dog, only interacting by emotes and the cues of your own actions. Your dog will learn to attack monsters, will sniff out treasure, will scout ahead, and will crawl back to your feet at the pub a bloody mess if you run away and leave him behind. Evidently they’ve removed the 2d map/compass in favor of using the dog as scout to lead you down paths. It will be interesting to see what if any of this makes it into the game.


Free to Play, Pay for Stuff! The Virtual Item and Micro-Currency Frontier:


This was an interesting round table attended by lots of industry players such as people from Sulake (Habbo Hotel), Hasbro (Magic the Gathering), Three Rings (Puzzle Pirates), Iron Realms Entertainment (Achaea), SOE (Station Exchange), Viacom (Neopets), and more.

Interesting points discussed:
  1. Having two (or even more) currencies is something many of the big players are doing to encourage and balance a broader audience. The currencies each have a root in a play style or demographic if you will, the two main currencies being for people who spend a lot of time playing (currency you get for grinding) and for people who have money to burn (currency you get via purchasing with real money.) Other currency bases included currency gained by being there at certain key game moments and currency for having great skill in the game. These last two generally manifested as unique in-game items.
  2. An unscientific poll was taken of the room asking what the percentage of players bought items in a given month. The range was 10-20%.
  3. You can drive more sales via in-store trading cards that are redeemable for random in-game items. Players who may not be willing to spend $5 on a suit of plate mail are likely to spend $25+ on cards in the hope one of them will contain a rare item. (Think lottery effect.)
  4. New opportunities for micro-transactions (for example, new "furni" for your player housing, new patterns, etc.) can be added to the game in scheduled updates (e.g. every Tuesday – weekly was mentioned as having the most impact) to promote players to login often to buy more.
  5. Play with supply and demand… Limiting item availability will drive up how much you can charge for an item. (New plaid knapsack available for $25! Only 1,000 units will be sold!!!)
  6. Inflation can be avoided to a degree by having items purchasable via micro-currency all have unique abilities / appeal. Selling a longsword+3 just makes all of the longswords+2 out there worthless.

  7. A browser based game I hadn’t heard of before called Seafight – (http://www.seafight.com/) claimed revenue of 14 million euros last year. They appear to have close to a million registered users.
  8. In a later meeting, but related: Puzzle Pirates laid out their sales figures and showed that the $19.95 price point for buying in-game currency was the biggest money maker, but having multiple price points was still useful for pulling in more business.


Skinning with Dual Quaternions:


This session was in one of the larger rooms and was still packed wall to wall which was surprising to me for something so math heavy. Basically, the session was a recap of a PHD thesis paper written on using a “dual quaternion” to replace a three dimensional rigid transform. A dual quaternion in a data sense is essentially a 2x4 matrix (or two quaternions as the name suggests.)

Allow me to butcher the talk: You can convert a quaternion and translation vector into a dual quaternion by placing the quaternion into the first column of the matrix and then using a formula on the translation vector to fill the second column. The second column in the matrix represents a screw transform, which you can imagine as a screw orientated about a certain arbitrary axis and rotated a given number of degrees.

Since Dual Quaternions can describe any arbitrary rigid transform, it is possible to use them for skinning. In a long presentation on the limitations of various skinning techniques, we were shown why the DQ method is superior to anything else out there. I will leave it up to the reader to go over the write up and decide for themselves, but they claim you can retrofit an existing skinning solution to perform DQ skinning in an hour or so to test the approach for yourself.

See http://isg.cs.tcd.ie/projects/DualQuaternions/ where you can find C and Cg source (the technique is shader based.)

Labels:

Late notes on GDC

As some of you may know, I was at GDC in San Francisco about two weeks ago. I expected to put up some of my thoughts and experiences right afterwards but decided to wait until a certain video blogger had uploaded a short interview I had done there. Time ticked by and that never happened, so without further ado, on with the GDC notes...


This year’s GDC was anticipated by many to be an insane answer to the implosion of E3. Fortunately, walking around the expo and sitting in on conferences, I did not seem to find this the case. The show felt bigger than the last time I attended (2005) but gaudy booths and deafening music were not the order of the day.
Joshua Slack and Chris Melissinos at GDC 2007
I spent a little time at the Sun booth talking to various Sun guys about Project DarkStar, jME and Java in general. There is a very positive view of jME and its community amongst those I spoke with. The kiosk showing off the alpha version of Jadestone's hockey game drew in many passersby and all of the feedback I heard was the (by now) typical "Wow that's Java?" "You can do shaders in Java?" "I didn't know Java could look like that!" and "Is that really Java?" Keep up the good work guys!

I also attended a party or two, the best of which was definitely the one thrown by Three Rings on Thursday night. Themed as a drunken mad scientist convention,Joshua Slack and Michael Bayne at Three Rings party, GDC 2007 there was plenty of loud music and interactive party exhibits. In the corner they were showing off the beta of their new flash-based project, "Whirled" (formerly known as "Meta Soy".) I wish them luck on that. Judging from their past and present successes, they should have no problems producing another winner.

Which reminds me to give a virtual highfive to the Three Rings group for winning the Technical Excellence award at this year's Independent Games Festival for Bang! Howdy. (Gratifying on a personal level because this game uses the jMonkeyEngine.) They were also in the running for the Seumas McNally Grand Prize. Way to go guys!

Stay tuned for session notes...

Labels: , ,

Wednesday, October 18, 2006

F.E.A.R.



Just beat F.E.A.R.... pretty good game, very spooky at times.

I think the only bad part about being a software developer in the gaming industry is that I can't help looking at the visuals in a game and picking them apart. "Hmm, how did they do the lighting here?" "Wonder if they are using VBO or display lists..." Ah well.

Labels:

Monday, December 26, 2005

CFour!

I've recently taken a bit of time off from jME work to play around with the three rings GameGardens multiplayer framework. It's really easy to work with and in just three days of fooling around part time I managed to put together a decent connect four clone.

CFour!

The only irksome thing was that as I was posting the game to the GameGardens website, another fellow came along and posted another connect four clone. Talk about coincidence! Ah well.

Have a go at it here...

Labels: ,

Thursday, November 25, 2004

More cloth... with collisions

Finally, about two months after starting it, I've had a little bit of time to finish up the Cloth stuff for jME. I'm pretty happy with it. Special features include large timesteps (ie. greater stability,) automatic normals, node level customizable forces (with some sample ones like wind, gravity and drag,) collision handling, and lots of tweakable settings. It's posted now in the code review forum at jME and will hopefully be in cvs there soon. Here's a recent screenshot showing a ball hitting a square piece of cloth:

cloth with ball colliding

I know there's a lot that could be done to take this to the next step, but for now I'll just be doing bug fixes and perhaps a Cloth Editor like my Particle Editor. I'd like to work next on a few games such as the one I mentioned with Mark and of course Dirt.

As you can see it's very early in the morning. I actually tried posting this earlier and blogger.com was down! So I popped in HalfLife 2 and shot up some striders (wow!) to pass the time... Next thing I know it's 3am. Good night!

Labels: ,

Monday, November 22, 2004

Turkey week already?

Man, time goes by fast. I can't believe it's already almost Thanksgiving... Seems like you close your eyes for one second and it's next year and your friends are having babies. Sheesh.

Rained again today. Nice desert rain where the air smells sweet with water and traces of dust... You'd have to have been in a desert rain to know what I mean. New York rain smelled like rotten damp fur. Not too pleasant.

On another note: Good things are finally falling into place with Crystal Reports. I've got a good architecture lined up and have been trying to nail down the actual calls out to CR for a whole week. Finally it caved in today and let me use Java to run a report that uses ADO.NET xml sources! Not exactly a complete breakthrough and still a few good months of work to go before the whole queue system and return sections are done, but at least there's some real progress being made.

On the HalfLife 2 front, I'm leading squads around and started catching my first glimpses of striders. I think I'm probably 3/4 of the way through already... Again, time goes by fast. bleh.

Labels: , ,

Thursday, November 18, 2004

HL2 rocks!

Yawn. That's all I can say these last two mornings. Why? I don't have much game time during the day with work and all, so ever since picking up Half Life 2 Tuesday evening I've been pulling late nights busting up crabheads. Let me just say, it's definitely worth the tired mornings. The graphics are very good, especially the reflections, glass effects, water, etc. But what makes it stand out is the high degree of interaction the world provides. Practically everything can be moved, thrown around, busted up, etc. I was very shocked, for example, to beat a metal pipe in one hallway with my crowbar and instead of just a "ding" texture being applied there, they used bumpmapping to show slight dents in the pipe. Or busting up wood planks and throwing the scraps into a fire to watch them burn into smaller chunks in the flames. Very nice.

The enemies are really smart, puzzles are solved by interacting with objects (like counterbalancing your weight on an improvised seesaw using bricks laying around the area so you can reach a higher area) and the npcs are very expressive. I love the air bike.

I haven't tried out the Multiplayer part of the game, so I'll get back about that sometime. Definitely a great game though.

Labels: