Kayaker, it gives me such pleasure to feature you and share with the opensim community just what a treasure you are.
For myself, upon reflection, I have so many wonderful memories of working with you. Always a gentleman first and foremost and always honest. Every project was not only completed on time but each was enhanced to be much more enjoyable which took you more hours of work. You have always prided yourself on a job well done, I for one can vouch for that.
Looking back at our Pandora project and all you brought to it. Yerik, wood sprites, hunters bow and arrow with targets, that cute little dragonette that flies around the region. The Ikran that I remember helping texture which was a fun learning project that you gave me many tips and advice, thank you.
Please tell us a bit about your background so that we can get to know you a little better, and please feel free to elaborate.
MM-I must first ask where did you obtain your coding skills?
KK- I became fascinated with computers in my first year of college and decided to change my major. I went to University of California at Berkeley and got a BA in Computer Science. Yes, a Bachelor of Arts, not Science, UCB no longer gives a BA in this only a BS. In the early days of computers, the College of Letters and Science (humanities department) thought that since languages are under the umbrella of humanities and computers have languages, they should have a computer track separate from the Electrical Engineering and Computer Science track. So, I am not an engineer I am an artiste and that is why I write beautiful code!
MM- In SL when we learn about LSL for scripting objects, it is based on java but it lacks many of the qualities of high-level languages? Did you have to manually deal with data types declaration/conversion, limit in list length etc.?
KK- I was horrified that LSL did not have structured data types and had to change the way I constructed scripts to match the limited data types available. But every language is different and in a long career in RL I have had to switch languages many times so LSL was just another adaptation for me.
MM-I first met you around 2010 and asked you to come to Virtual Highway to look into creating a surfable wave and surfboard. Had you thought of creating waves and boards for Second Life?
KK- I had already built waves and boards when we met! Although I was making them to work off-sim so people with very little land could surf off the edge. To work out there I had to find a way to make do without the physics engine. This turned out to be good for OpenSim which did not have a good physics engine at the time.
MM-What are the major differences between Second Life and Opensim coding?
KK- I have worked hard to write all my scripts in ways that worked in SL and InWorlds and Opensim. Each different ‘dialect’ of LSL had minor differences that I learned to work around. But I found if you wrote ‘clean’ code it could be made to work everywhere. This involves things like explicitly converting variables from one type to another, putting in ‘extra’ parentheses and curly braces to avoid saying things in ambiguous ways.
MM- What role does physics play? Some utilize Ubit Open Dynamic Engine and some utilize Bullet, please explain the differences and what works best in opensim.
KK- I’m not a big fan of ANY of the physics engines. But I recommend that everyone use ubODE these days. BulletSim occasionally gets into a state where it uses up a lot of CPU time for no known reason. ubODE can run many vehicle scripts from SL without changes that would require changes with BulletSim. ubODE also implements a fast version of the llCastRay function which I use in my weapon scripts.
I gave a talk at the Open Sim Community Conference several years ago arguing that we really don’t need a physics engine at all! Avatar movement is done without physics. I’m not fond of how unnaturally physical vehicles sometimes behave. If there was a better way to handle collisions (a collision engine instead of a physics engine?) I think you could write non-physical vehicle scripts that behave better! Using physics for weapons is considered hard on the servers. Modern video games have switched from physical bullets to a “cast ray” approach. I found that you can get natural looking flight paths with non-physical bullets by coding the “rocket science” into your LSL script. So, I say why pay the huge price in memory and CPU time to have a physics engine running all the time, when you can code physical behavior into your scripts only in the few cases where you really need it?
MM-When we put in the surfing at Virtual Highway, what was the biggest hurdle?
KK- Back then I tried and tried to get physics to work but the physics engines were not up to the task. I was forced to find ways to work without physics. This started me down the non-physical path! Since then BulletSIM was improved and ubODE has come along. I keep expecting one of the surfing coders from SL to move out into the Metaverse and do a physical board. But so far this has not happened.
MM-Please share with us your knowledge with 3d software such as Blender. Do you also model your objects that you script? What is your favorite software for modeling?
KK- Virtual worlds are supposed to be a wonderful environment for collaboration. I thought I would bring my decades of coding experience to SL and find people to collaborate with who had experience at model building, texturing, animation, etc. But this never seemed to work out and I ended up having to learn to make my own textures (using GIMP), animations, sound files, sculpties, mesh (using Blender), etc. My skill level at making mesh gets better every year and there is always something more to learn! I use Blender because I prefer to use open source software whenever possible.
MM-What about the textures? I remember texturing the ikran, and just learning how to. You shared many tips teaching me how to wrap consistently. I still have issues due to vision and marking seams. It is very hard to mark seams on jewelry. Please share any texturing tips you have.
KK- I have found that there is a wonderful synergy at the intersection of mesh modeling, scripting, UV mapping and texturing. I find myself making mesh in a way designed to be textured or scripted in a way. Or writing my scripts in a way that works well with what can be done with mesh. So, I recommend thinking about ways to make the textures easier even as you start making the mesh. I have a joke: “UV mapping is like voting, you should do it early and often”. For example, you could start a jewel out as a cube, UV map the sides of the cube, then sub-divide and bend and distort the cube into the desired shape. But the UV map will still be a bunch of squares that are easy to texture map.
MM-I have always loved visiting Panthalassa to pick up the latest gadget you create, please share what inspired this region?
KK-Early in my second life, I thought I would concentrate on making things for water: Waves, kelp, surfboards, boats, fish, etc. So, I would design regions to be mostly water. Panthalassa is the name that paleontologists gave to the one-world-ocean before continental drift split the land into separate continents.
MM-You have a love of creating animated animals, what has been your favorite? What was the most challenging?
KK-You, MM, are to blame for my interest in animals! I had only done fish and birds before you asked me to make a Yerik. A fish or a bird does not have to keep its feet on the ground, which is a little harder. I’m especially proud of my “mountain goat” algorithm that makes critters tilt back when walking up-hill, down when going down-hill but stand up straight when walking across the contour of a hill. My favorite critter so far is my T-Rex, partially because the THUD sound is synchronized with her feet hitting the ground. (Something you CANNOT do with avatars). I had the most trouble making a horse because I wanted to have 4 joints in each leg. It turned out that moving 16 parts all at once is not possible in OpenSim (19 with head and neck and tail). I punted and changed from “puppeteer” style animation to “transparency” animation. I’m not completely happy with the final result.
There is a new option available in OpenSim now called Animesh. With this you can make critters the way the avatar mesh is made: with a skeleton, rigging and animations. I have held back from making any more critters until I learn how to do this. An animesh critter will have fewer prims, lag the servers less, move smoother and look better.
MM-Your wind setter buoy works with your windsurfers. How in the world did you figure that out, I know that opensim has wind, but having a buoy and windsurfer communicate based on the wind is genius to me, and it works. How did you figure this out?
KK-The default wind in OpenSim is useless for sailing: It turns to a random direction every 5 seconds! I remember a conversation on a forum in InWorlds where people were moping about saying “I guess we can’t do sailing here until the developers add a better wind to the system”. I thought this was a defeatist attitude and stated writing my first buoy that broadcast the wind on a “weather” channel. I’m not the first to do this, there were sailing groups in SL that had wind buoys and I assume they work the same way.
MM-Has there ever been anything you could not create? I mean, I have asked for the most incredible items and you always produced it, I wish my brain could think like that, what is your secret?
KK-Some people say there are no limits in a virtual world but this is not true! There are limits imposed by the system, by the capabilities of the servers, by the bandwidth of the Internet that binds it all together. I designed a ‘house’ once in SL that I could not get to work. It was made of a collection of bubbles. Each bubble drifted up like over an updraft, wandered sideways, slowly drifted down, back to the middle and quickly rose back up again. The only way to get from room to room was with teleporters. One room was a landing pad, some were bedrooms, a bar, a living room. Only one bubble-room had a door: It sat on the ground to let people in. It never worked because when you stood in a room and it moved sideways, your avatar stood still and the room moved under you until the wall bumped into you. If the bubble-room moved down, your avatar did a little jump like falling. If the room moved up, the system sometimes saw your feet sticking out the bottom and you would fall through the floor! The only way it worked was if you were always sitting down in each room. I gave up back then but now I wonder if everything I have learned would make it possible now?
MM-I know that you had created in Inworldz (IWZ) too, and had much invested there were you ever able to save any of those files?
KK-When IW gave everyone one-week notice, I was on a 4-week kayaking expedition in Alaska with no Internet. However, as a citizen of the Metaverse I already had most of my items on several grids. (Diversify your investments!) So, I lost only a few recent projects that were in inventory. Much later Jim Tarber was able to make OARs and I was able to recover a few more items from that. Those OARs could not save some things that were inside other things to any depth. So, I never did recover one script that was inside a bullet inside an anti-aircraft gun inside a vending machine.
In sympathy for people who lost everything when IW went down
MM-I remember when we worked on a project you would comment having to go into SL and update scripts because of an SL update. How did you keep on top of this? I mean, you would have to stay one step ahead knowing what the latest updates would be in order to update your items. This had to be a constant headache for you. Is it the same? Is opensim the same with the updates?
KK-I think what you are remembering is me going to SL to test things there that I thought should work better in OpenSim. I have been a frequent bug reporter to the OpenSim developers. The last word on any problem used to be “in SL it works like THIS!” OpenSim has come a long way and I have fewer reasons to compare it to SL any more. Updates to OpenSim continue to be made daily and I keep recent versions of it running on OSGrid. I host almost 200 region-equivalents (13 square kilometers!) of land on two old servers in my barn.
MM-Out of all your projects what has been your favorite? Please list here as many projects as you can remember creating, I lost count after the Pandora project, please list here what you can remember. Any links too where we can purchase.
KK- Making a walking critter like the T-Rex was one of the most rewarding things I recall. It is made from so many different components: Mesh parts, texture maps, animations, sounds, all stitched together with a script. As the parts came together my excitement rose to a crescendo. When it was done and started stomping around it was almost an orgasmic moment! IT’S ALIVE!!!!
I’m not particularly interested in first-person-shooter games. But I became fascinated with how to write the code for weapons. Especially in unusual ways like without physics or in places where rezzing bullets was not allowed.
All my projects? I’ll probably forget a few: Surfing waves, kayaks, surfboards. Swimming, flying walking critters. Kelp and other plants. Sailing ships and parts to build them. Weapons. Posing and color tools. Terraforming tools. PayPal donate, vendor and rental tools.
I give away a bunch of things: a new low-lag AO script, example cast-ray weapons scripts, system test scripts, zero-lag holiday lights.
I have a Kitely store at https://www.kitely.com/market?store=2987977 and places to demo items all over the Metaverse. To find links to those places, and documentation pages for many of my items check out my blog at http://magic.kayaker.net/
You have been such an asset to this opensim community, Kayaker Magic. I for one would love to say, thank you.
All images submitted by Kayaker Magic