Authoring grass using normal mapping tools2
thedenrei posted in Uncategorized on January 21st, 2007


January 14th, 2017
Chris is changing things around with how stuff gets from my screen to the game. Its all very wonderful. We have a meeting today where I get to hear it described in detail.
I’ve stopped working on Lithium stuff for the time being, and have started up a new character model. I can feel elements I’ve been learning from my drawing classes seeping into the work.
Also, I’ve found that working out at the gym has really helped my understanding of musculature, which is kind of odd to me – but I suppose it shouldn’t be. They have big mirrors on the walls and I pretty much stare at my arms contracting and expanding several hours a week. I was looking through some old torso/shoulder/arm models and found myself solving many of the reoccurring problems within minutes.
The rest of this post is about me playing FF12 and you can probably skip it.
I got Final Fantasy 12 the day it came out, but haven’t had time to play it too much yet. The characters and the look of the world arn’t really to my taste. I much prefer Tetsuya Nomura’s FF7 or FFX style. Last night I put in some solid time, and I’m warming up to it. The battle system is exactly that of an MMO, and I hate MMOs. The persistant world navigation/combat system setup is already something FFX should have done (imho), but I wish they could have wandered even a bit further from classic FF combat. Grandia III’s battle system was really cool, I wish they had taken some ideas from there.
Anyway, this is the first Final Fantasy game that I’ve actually bought even reasonably close to it’s release date, and its the first FF that I haven’t had all the plot points spoiled by friends before even touching the controller. I’m taking this very seriously. I went to my friend’s place to hang out Saturday afternoon. Knowing he had bought the game recently and had probably put in more time than I, I waited outside his door while I called him and demanded he save and turned off the machine so as not to spoil anything for me. The only sure way to do this is to just play the hell out of it as fast as I can. Which is what I suspect I’ll do.
Also, most of the music isn’t done by Nobuo Uematsu, and I feel very aware of this. Once I’ve completed the game and my self-enforced ban on consuming FF12 info outside of actually playing the game is lifted, I want to verify which songs he actually did and see if my suspicions are correct.
And I really wish I could play the game in Japanese. The trailer I saw at E3 had japanese voice actors, and they were splendid. While the english one’s arn’t BAD, every cutscene I end up thinking to myself “that probably worked better in the original”.
Allow me to give you a short tour of Lithium’s current capabilities. The tool operates out of a main window, which can be embedded in the interface, or free floating. There are 3 sections, one for each node type (SceneNode, BoundingVolumeNode, ScriptNode). A row of buttons at the top of the window is used to create these nodes. Their initial parent, names, positions and attribute values are based on your current selection and the values you have set in the options window. For example, if nothing is selected, the BV button will create a BV at the origin using the sizes and offsets you provided in the window. If one or more SceneNodes are selected, each SceneNode will get a BV as a child, which is positioned relative to the SceneNode. If the SceneNode has geometry under it, the BV will try to adjust it’s size to this geometry. I hope to infer as much information as possible from the user, so that using the tool can be very powerful and flexible without needing tons of random buttons and options to explicitly specify.
Here we see BV nodes created on 2 SceneNodes.
Most of my work has gone into creating a system which can reference objects from other maya files. It should be tailored to level creation type work, so these imported objects need to be instanced and copied all over the place. Again, I want the user to do very little explicit specification. The interface remains somewhat primitive, but the system works just how I want it to. Rather than typing in a string for the object you want to reference, there will be a browse menu available, a “already imported” drop down thing and the like. Adding these things is relatively simple, the hardest part is deciding how to organize the information in the window set up. I think I’d like to start working hard on a game project again, and get a bearing for how I’ll end up using Lithium. Then just add things as I want them.
This is a saved maya file called “player1.mb”.
I’m going to reference things from it into a new file.
When you import an object through Lithium, it creates a reference to the requested file (should it not already exist), and hides it away. Then, it creates an instance of the elements within the file you’ve asked for, and parent constrains them to the SceneNode that requested the import. The actual instanced geometry remains hidden away from the current scene’s hierarchy, and does nothing but display itself. The idea is that when this file gets exported to the game engine, these nodes with references on them will grab objects that have been exported from other files. So if I have a city with many buildings, and each building has a ceiling fan, I can simply create a single fan and have that fan show up in all the buildings. This saves me time, and improves game performance.
Lithium makes it very fast and easy to create stuff.
Lithium makes it very flexible and easy to change stuff.
Game worlds will be built with maya files that contain basically no geometry information. There will be small files which define a specific thing, and many of those things get referenced by the level file.
ScriptNodes aren’t concerned with their world position or visual display, so this is hidden from the user. I imagine ScriptNodes will be manipulated entirely within the Lithium window. These are very game specific, so I don’t have anything besides their interface behavior defined yet.
I’ve been making progress on my MEL level editor system. Things have been slow going for many reasons: I’m back in school now, many of my friends have returned to Madison… but more than this I’m a stinky coder. One of my strengths as a member of this team is an ability to get really consumed by a project, putting in every spare moment just because I really love what I’m doing. This current stuff is definitely interesting, edifying and worth while, but I can’t seem to get the kind of momentum which I usually depend on to allow me to work quickly. Never the less, my progress has been consistent. I’ve got a simple GUI with little icons and such to execute what I’ve written so far. The automated process of importing and cataloging external files is complete, with a small particular problem I have yet to resolve.
Most of my time is spent exploring and testing many different ways of approaching the same task, to find the one which is most suitable. Maya is extremely open ended and forgiving in terms of allowing you to tackle a problem however you are most comfortable. This is excellent when you just want to automate a single task (which is how I’m used to using MEL). However, when your system gets deeper, it becomes imperative to do things in ways which are more or less harmonious with Maya’s core design philosophies. By this I mean storing particular types of information in the ways Maya likes it to be stored, organizing things how Maya likes things to be organized. MEL has tons of tools and functionality available, and its important to keep your work compatible with what already exists. I have a pretty solid idea of what I want to end up with, which has been very helpful for planning how things should work now.
As I mentioned, this work is edifying and an important step, but I am already very much itching to get back to just modeling and making stuff.
Oh, I named the system “Lithium”. I hope nothing similar is already named that. A few quick google searches suggest not. Wikipedia explains that lithium can be used to fight mania, depression and bipolar disorder (I’ll mention here that I personally have strong problems with any kind of mind/mood altering supplement such as anti-psychotics in all but the most extreme cases). It can be a component in channeling/harnessing large amounts of power, as in lithium batteries or thermonuclear weaponry. It is also a catalyst for chemical reactions.
Lithium does not create simplicity out of complexity, but offers a different way of experiencing complexity which is easier for a mind to deal with. When given the proper situation it can take silent, dorment forces and empower them to many times their original potential. This is all rather dramatic for a couple of amature MEL scripts, but with Maya as my katamari, I intend to keep it rolling and growing as my tools change, and will eventually collect all the elements of my workflow.
With everyone in such close proximity now, I had thought that things like meetings wouldn’t have to be scheduled and things would more or less organize themselves when they needed to happen. But this doesn’t seem to be how things will work. The “problem” is that we operate as a group of friends first, and an elite team of independent game makers second. I tend to be overly pushy in terms of my expectations of others at times, and I’m trying to be very aware of this – but at the same time it will take some discipline to get anything done.
Chris is fortunate to have an interesting and stimulating full time day job. Unfortunately for the team, this is eating up the bulk of his coding energies. This last week or so, the team is been feeling out adjustments to the working style that our new living arrangements demand.
Maybe this makes it sound like there are all kinds of problems, but in the big picture things are definitely cool.
Part of the plan is that Tony will be taking over the bulk of the actual code generation “monkey work”, and Chris’ time will be more focused on design decisions. This solves the problem of Chris being over worked as well as making Tony more involved and capable with the game engine we are developing (which Chris authored). Additionally, I’ve started looking deeper into MEL (Maya’s scripting language) so that I can take the load of tool creation. This too is a good arrangement for multiple reasons. I have the best understanding of what Maya is already capable of, and how it can be practiced most effectively. While writing MEL is a “coding” task – it really belongs in the realm of asset creation. We’ve got Gavin running through the tutorials Maya provides, so that he can help out in the near future with simpler asset related tasks. I’d be interested to see a blog post of his thoughts as he learns the system.
My first MEL task will be to create a referencing system, so that I can build a level in which I can place objects made elsewhere. I’ve got a few ideas I’m excited about, but I’ll save that for another post once things get more cleanly laid out.
Ordered 2 books from amazon,
I’ve been able to finish the section on MEL in the first book, and it’s pretty thorough. Might have liked more examples. The API stuff is a bit over my head, I haven’t touched C++ for something like 2 years now, but I’m definitely interested to explore that sometime if it looks like it could be useful.
PubCrawl has been sitting around waiting for Internet. Should be able to post that tonight or something. I had a pretty clear idea of the type of game I wanted to represent in the milestone, and I think it comes through in the game play to some degree. I hope you have some fun with it.
Its an unforgiving life for a refugee here in Madison WI. Its been over a week since flooding forced my entire apartment complex to relocate, and it looks like move out day will over take being allowed back in. It seems that our underground basement/garage became completely filled with water to chest/neck level, floating the cars it housed. The result was in the form of a damaged, hazardous transformer and a pool of filth and gasoline. My roommate: “Fun half day of helping cute girls in sports bras push their cars out of the garage turned into shitty half month of homelessness”. My beloved roommates, bless their little hearts, didn’t clean out their fridge when the power initially went out, opting to save that task for about 5 days later, after spending the weekend away. (I have my own mini-fridge where I keep my stuff ((I love you Mom, Dad)) which was cleaned out in a responsible and timely manner.)
But, as I’ve been instant messaging to concerned onlookers, lemon -> lemonade is how denrei rolls.
I’ve been taking daily showers in the University Gyms available to students here, and used this opportunity to start working out. This means I’ve had to up my diet from a single chipotle burrito every day to a burrito and a large tuna sandwich. Also, I drink far more milk than I’m comfortable with, which is bought from a nearby convenience store at a price much higher than I’m comfortable with, at a time much closer to the expiration date than I’m comfortable with.
All of this means that I’ve spent a huge amount of time in the UPL and PubCrawl has been coming together brilliantly. Tony and I have been working most our waking hours on it. Our time is split between describing to one another of how great the systems/we are, and making an interesting/productive test. Its a little heart breaking to have these models that I’ve invested so much effort into to make normal mapped shlopped in here with bland maps, but its also great to see them in the engine in any form.
Please keep in mind as you play these milestone tests (crossblast, pubcrawl, whatever we do next) we definitely do NOT consider these complete upon release and hardly “games” at all – they are short term tools meant to hone our skills and technology for games to come, and we’re excited to share what we’ve done with people who happen to be interested.
P.S. for those of you who tried crossblast and it didn’t run – please do give this one a try. If it doesn’t work, it would be very helpful to us to get a comment letting us know. Part of the purpose of distributing these is to reveal various machine-specific problems. Our QA department consists of my roommate’s dell laptop and Tony’s girlfriend’s desktop.
I’ve been doing a lot of texture work lately, using exclusively photoshop and my digital camera. Its a little frustrating to use photoshop for these tileable textures… you really have to go out of your way to make the layer styles (I so recently came to love) tile.
In a moment of weakness, I googled for a low cost tileable texture maker and found TextureMaker. I downloaded the demo and was presented with an unfamiliar and off putting set of icons. I mashed a bunch of them, and something cool came out. It was like, worn shingles. And it was perfectly tiled! It saves me the “putsing to get it perfectly tiled” phase, and cost no more than a trip to your local game store. Still, you can’t get polished results using TextureMaker alone, so I doubt that I’ll ever make a texture which doesn’t pass through photoshop at some stage.
The original idea for the current milestone was to distribute the current version of Outland. It doesn’t seem like such a good idea now, because what we have is very infrastructural. So we decided to put togeather a small, alternative environment to test what we’ve got now. In order to not get sidetracked and waste time, we put a 24 hour cap on the project. So we’ve got until midnight on the 19th to create everything and polish it, then another 24 hours to make it avalible for you to download and enjoy.
I finished my summer sculpture class today. This second project went very well (I’ve mentioned before that the first one stunk). While it might have been frustrating at the time, I do feel like I’ve learned quite a bit from this class and the other fine art classes I’ve taken so far. “Digital artists” like myself often think of fine art as a waste of time, that we are above or at least aside from it. And I still think this. But in being forced to buckle down and work in common artist terms, and be critiqued by their standards – I’ve sort of expanded my appreciation for what they are trying to do – and where they might have strengths I lack.
Everything I work with digitally is very complex. Not referencing the technology of it, or the math or huge learning curve of the tools. The nature of the art I am creating has many limitations and requirements. My job is to make pieces which are, if not “realistic”, certainly convincing, representational presentations. I cannot really call them “compositions” because I really have little guarantee on the details of how the audience member will experience them (its built as a dynamic, interactive experience). So I’m always working within the “stylistically realistic representational” realm, within an unpredictable environment. This unpredictability exists everywhere – how the character will be rendered, what graphical settings is the player set on, what level is he in, which frame of which animation, has the player seen them before… Also, there is a story which needs to remain coherant to the visuals. The model has to actually represent a character in the progression of the game (go figure). So this is what I mean when I say game art is “complex”.
In this art class I was specifically told not to make my work iconic or representational. It had to operate completely on abstract form. Again, my personal feeling is that no hunk of nonsensical plaster can be as cool as a convincing character. But in having to narrow my tool set down to the most basic visual elements, (and introduce the awkward limitations of actual physical objects) I was forced to really come up with a brand new way of thinking creatively which I had never thoroughly tapped into before.
A concrete example of what I mean. If the character I’m working on looks odd to me for some reason, my natural progression would be along the lines of “What cloths is he wearing? Should they be more futuristic? Is his body defined properly? Do his gloves make him look more like a ninja or a pilot?” when perhaps I should be simply asking things like “Is this balanced? How do the forms here and there relate? Which elements here are dominant?”. I mean, I’ll never explicitly think those things. But I think my eye will be keen to it.
To mention the game, my work has remained in the world scene. Its definately improving, but I’d really like to see it in game soon, with in game lighting and such. That would help… 0_o