Showing posts with label development. Show all posts
Showing posts with label development. Show all posts

Sunday, October 2, 2011

Stop sleeping!

Is it just me, or does anyone else find it frustrating when norns sleep a lot?

Especially when you're trying to train them to do something very specific, and they just decide to just plop down and take a nap, right there. Argh.

Well, even though I haven't bothered documenting the updates to my dabbles with my instinctless creatures, I have still learned much from that experience and have been slowly working to improve the genome as a whole.

While investigating the aformentioned lonely grendel problem, I discovered that grendels lacked the "found company" gene that reduces loneliness when approaching a member of the same species. Adding  the gene in fixed the problem quite simply.

Another problem I manged to fix was one with the sleep cycle. If you don't know, the creature sleep cycle works as such: A creature rests; as it rests it becomes less tired, but gets sleepy, and when it gets sleepy enough, it falls asleep. While sleeping, the creature's tiredness and sleepiness both decrease until it is well-rested and wakes up.

As most of you are aware, there is no "sleep" verb. A creature can decide to rest until it falls asleep, but it cannot just decide to sleep. (Nor can we!) The problem with this is that while creatures with instincts are pre-programmed to rest when sleepy, creatures without instincts cannot make the connection between resting and sleepiness reduction, because it isn't resting that directly reduces sleepiness, it's the sleeping that eventually results from the resting.

So to remedy this, I simply made resting appear to reduce sleepiness by tweaking the stimulus gene to first reduce sleepiness and then silently increase it, enough to both compensate for the reduction and bring it to a normal increase. And it worked! I was so proud to see my instinctless creatures suggesting that other sleepy creatures rest. I just love seeing evidence of creatures learning!

But, I still feel like the creatures sleep too much as a whole. Don't get me wrong, I don't want to do away with sleeping entirely, but it just feels like the frequency is a little high. So I've been tweaking the genetics a little here and there, too.

Meanwhile, I am really enjoying raising these little creatures and discovering how much impact a creature's upbringing can have on its behavior when it isn't being controlled by pre-programmed instincts. For example, I brought up a pair of norns together in an area with nearly no toys around. The norns took to pushing each other instead of toys to reduce boredom, and not only grew up to be great breeders, but very social. It was quite cute when a grendel wandered along complaining of boredom and one of them suggested he push norn!

I plan on tweaking the stimulus genes further to make traveling, pushing lifts, etc to have more of a boredom-reducing effect and see if creatures can be taught to wander around when bored.

Really, the more I play with these altered genomes, the more I wonder what the developers were thinking, putting in these instincts! Some of them I can understand being necessary, half-strength instinct trick for elevators and vendors and all, but as a whole it seems to strip the creatures of so much personality. I can't imagine going back to normal creatures now.

On a side note, I have been testing the elevines (improved "lift ring things" with beautiful sprites many thanks to mea!) in this world, I am finding them so wonderfully handy! Not only do they work great as lift-replacements, but they can also work as replacements for the boats/submarines as well. I'm still tweaking them here and there but hopefully they'll be ready for release soon.

Meanwhile, the DS server has been toying with my emotions, going up and getting my hopes up and then going down again. Oh well. I certainly have enough projects to keep me busy in the meantime.

Saturday, August 20, 2011

Updates, call for testers, C4, etc.

These posts are getting rather unexciting, hah.

I sort of dropped off the face of the earth for a while, random upsets that real-life throws at you can do that. Some of you may have noticed that LNA is down-- most likely it's going to stay that way until the DS server goes back up. I can't really do a whole lot of development for it until that happens anyway.

If you've been keeping an eye on my projects page though, you've probably noticed that I have been finishing up a lot of my smaller projects and they mostly just need to be tested and compiled. So if you are a bored DS player interested in helping that process along by bugtesting and giving feedback, send a PM to Amaikokonut on Creaturetopia. You can technically send me a PM on CreaturesCaves too, but I'll get them faster on Ctopia.

I also feel the need to briefly throw my two cents out there about C4, since news about it is making its way around, sparking mixed opinions from everyone, some a bit disturbingly hostile. Let me just drop in a sixteen-second reminder on how to handle other people's opinions before going on:





Anyway, my view on things may be a bit different than some-- for one, when I first heard the news about C4, I didn't leap for joy or anything of that sort. I didn't have high expectations. Heck, I stated years ago that I wouldn't have high expectations for any future creatures game because the things I personally love creatures for (science, genetics, brain-simulation, etc) are just not marketable traits of a game in this era. No one is going to put tons of time and money into advancing artificial-life science unless they are passionate about it and not looking to turn a profit. That's a project for people like Steve Grand, not a team of game developers. It's just not financially reasonable to expect otherwise, in my view.

So I'm really not expecting C4 to be anything but superficial. In my mind, Creatures has split off into two paths: Grandroids, which takes all the science and realism and improves them without any of the actual surface elements, and Creatures 4, which takes the surface/game elements (norns themselves, graphics, etc) and improves them without the science/realism.

That said, I think C4 looks cute. I will probably buy the boxed version, if nothing else but for the little figurine (I'm just a sucker for stuff like that). I will play it, and possibly find some inspiration with it. Then, in all likeliness, I will go back to playing/developing for DS.

In my mind I'm seeing C4 as almost more like a spin-off or a side-game than an actual successor. And from that standpoint it really doesn't look that bad.

Honestly, I don't think this community needs a C4. It needs lifeblood, it needs more people, development, art, stories, and other interactions-- that is what has kept it alive thus far. But C4 is likely to bring us that in the form of publicity, if nothing else. In that sense, it is most certainly a good thing, no matter how the game turns out. That is, providing the CC doesn't get so up in arms fighting over it that it drives old and potential new players away.

And who knows? Maybe C4 will surprise us a little, too.

Tuesday, August 2, 2011

Magic Words Demo

Wow, sorry for the lack of updates. There simply just hasn’t been a lot to write about-- I’ve mostly been spending a lot of time revamping the framework for LNA. There’s not a whole lot of visible changes, but things overall should be running a bit more fluidly and I’ve made it a lot easier on my end to make updates and changes, tailor scripts to certain worlds, and so on.

A lot of this is in preparation after Don’s announcement that hopefully the DS server’s registrations will go back up this month. In anticipation that this will result in a bit more traffic for LNA as well, I certainly want to be prepared.

Oh, and just a little preview of something else that’s been occupying my time:



Just a quick demo of the "magic words" core module I'm working on, as well as the auras module.
The core module basically allows the use of speech-bubble activated scripts while additional modules define what words/phrases to react to and how to react to them. It's basically a foundation for writing interesting agents without having to deal with spriting/coding a GUI. There's a dynamic in-game help menu (not shown) that lists all the commands and what they do, (provided the authors of the modules were not too lazy to define descriptions for their scripts) so you don't need to memorize all the commands.

Anyway, the auras module is just a means of attaching a certain "aura" to a creature. Here I have large stars, small stars, butterflies, and bones (which needs work, it's a little hard to see right now). Useful if you just want to mark a favorite creature or separate creatures into various groups and be able to tell at a glace which group a certain creature belongs to. Still has a bit of work to go, but I figured I'd demonstrate the concept.


I really, really should probably avoid starting new projects when I have so much else to do, but I can't help myself sometimes!

Monday, July 4, 2011

Focus, or lackthereof.

I think I might need some help, guys.

I'm getting to the point again where I have so many creaturely ideas that I'm in danger of getting overwhelmed and burned out and vanishing for months like I have so many times in the past. I really don't want that to happen, especially since (it seems like, anyway, maybe I'm just conceited) I'm getting a lot more community support for my projects this time around, and I really don't want to let you guys down.

At the same time though, I need to stick to working on things that I'm interested in-- I find that forcing myself into working on projects that bore or frustrate me, even if they're my most popular ideas, tends to make me burn out very quickly as well.

So I'm going to try to make a list here of all projects currently on my plate, and I would really appreciate it if you guys would comment and let me know both what sorts of things here interest you the most, as well as what interests you the least. Don't be shy-- I really would like to know before I waste a lot of time if no one is interested in something! So without further ado:

Revamping this blog -- It's something I've been wanting to do for ages-- mostly in terms of layout; I'd like refresh the look as well as add links to other pages, a way to easily subscribe to feeds, and so on. It's not something that would take more than a day's work or two, but I keep putting it off because it's just not the highest priority I guess.

Writing more CAOS tutorials -- My tutorials are of a different sort than most; while general tutorials show you how to make basic objects, I like to write about individual commands and how they work, or how to make certain scripts function. Most of these are more or less notes of things as I'm discovering them myself and cater to people that already have a decent grasp of CAOS, but I do enjoy writing them and wouldn't mind doing more articles on how more basic commands work too. Of course, the tutorials would only be as useful as readers made them, so I really want to be sure there's demand for that sort of thing before sinking time into it.

Documenting nurturing worlds --  I've been having a lot of fun with Mixed Berries and I will probably continue playing with it, but documenting it, screenshots and all, takes quite a bit of time. I certainly enjoy doing it, but I'm not sure how many people actually enjoy reading that stuff.

Work on Live Nornish Action stuff -- LNA is a bit of a favorite project of mine, but one that relies heavily on viewer interest, which there honestly doesn't seem to be a whole lot of. So one side of developing this is that further improvements could spark more interest; the other side is that I could put many days and nights of work into something that two or three people in the world really enjoy watching/participating in. There's also the risk of the warp server going down indefinitely, which makes the stream mostly pointless and the hours wasted. There are several things I can work on here:
  • Redoing the status window so it actually wraps properly and is a little more flexible, as well as exploring the possibility of creating a larger font for it.
  • Writing the client-server agents, which should allow people to interact with LNA remotely, with functions to retrieve your creatures or adopt native-born creatures from the world, drop food or toys in front of creatures, move creatures that are stuck or have wandered into unfortunate places, and so on.
  • Planning and running some script-assisted competitions-- such as a fighting tournament with modified hit scripts so immortals don't have an unfair advantage, obstacle courses (sort of like an advanced IQ test) that rank creatures according to how fast they can get through them, or breeding competitions that keeps score of how many eggs a creature has laid, and so on.
  • Another option is to use LNA for showing live development of other projects-- I'm not sure if that would interest or bore people, but it's open to opinions.

Finishing unfinished projects -- Most notably the Crossbreeding script and Critical Hit script falls under this catagory, as well as the Selective Muco, as much as I dread picking that back up again. But Project BattleStance is also very much on the table, which sort of has my interest now that I believe I actually have the skills to finish it if I wanted to. While not an agent, the Creatures Fanfiction Podcast is still a possibility too. And would anyone actually be interested in the lift ring-things if I were to polish them up and turn them into an actual agent?

Polishing old agents -- I always wanted to give the Mind Arrows a bit of a makeover; get rid of the sezz lines, allow them to be turned on/off as needed or adjust the range, possibly even allow filtering according to age/genus. SERU, hands down my most successful agent, might also benefit from a few tweaks and additions, and though I'm willing to bet most people would rather me release a version that scrapped all the cute storyline stuff in favor of making more weird creatures as fast as possible, I could have a lot of fun developing the interactive stuff further too. Population Control Options is another agent that could use a revamp to include support and filtering for ettins and grendels, and a few more options as well.

Following new sparks -- There are too many of these to count...I'll write the ones at the top of my head right now:
  • Project Underground is probably the most prominent of these, but I really can't help but feel that the time I put into this is just going to go to waste-- it's such a massive undertaking and I'm still not sure I can pull off everything I want to that I'm almost certain sooner or later I'll hit a wall or get bored, it'll never get finished, and all the work I put into it will become nothing, I don't want to sound pessimistic, but well... I really am. Still, I love the idea and I have a lot of fun working on it-- if nothing else I feel like working on a near-rewrite of the game will help me improve my skills and gain a better understanding of how the inner-workings of the game work. I wouldn't count on anything else coming from it.
  • I've been making extensive use of speech-bubble activated scripts to test agents and personal scripts and things, and I've been thinking of putting together a core module that allows speech-bubble activation to function, while making it extremely easy for other developers to incorporate the feature into their own agents-- it would be as simple as including a variable containing the activation word/phrase and the script to run when the word is said, allowing the agent to respond to speech-bubble commands (as long as the core module was installed) without having to rewrite the speech-bubble-searching bit themselves.
  • An in-game photo album/journal. Just a weird idea I had recently and after fiddling with a few scripts realized was actually possible. The agent would consist of a little camera agent you could use to take pictures in your world (like those that you take of your creature, but anywhere, and with more size options) and then add them to a sort of scrapbook where you could write a description of the photo or whatever happened that day and so on. Kind of a big project and a pain in the rear to code, but a cute enough idea that I'd be willing to try it if there was interest.
... As you can see, I have quite a pile of projects to work on and some days I am just so overwhelmed by them all that I would much rather go read a book or play another game than decide what to do, and consequently no progress is made. So, maybe you guys can help me prioritize a little? Any and all feedback is appreciated; let me know what projects you think the community would benefit most from, as well as the ones you think are better left on the back burner!

Friday, July 1, 2011

Return to Nurturing. Sort of.

I was on a coding roll this week. This kind of stuff tends to happen after I get a new order of tea.



Okay, and I wanted an excuse to post this extremely pointless video. Anyway.

So I was coding along when out of the blue I get this weird urge to like...um... actually play the game I'm coding for. What a weird idea.

I'm pretty sure I haven't run a serious nurturing world since Mixed Nuts back in September '09, and lately I'm wondering if I need to rediscover the experiences that made me fall in love with this game so long ago.

With this idea in mind, I promptly went back to coding. How effective.

No, really, my ambitions had a purpose-- I wanted to start a nurturing world with instinctless creatures, and in order to do that, I had to make some lifts that didn't require call buttons, since without instincts, creatures don't have the call button/lift system programmed into their brains. So grabbing some random sprites from the hoverdoc, I hastily and sloppily coded these goofy little lift rings.


They're not much to look at and don't really make much sense in design, but they're practical and easy to work with. Shift-clicking one makes another ring appear with the same ID as the original, ctrl-clicking creates a ring with a new ID, shift-ctrl-clicking deletes the ring.

When a creature pushes/pulls the rings, which are classified as elevators, the rings look for the next highest/lowest ring with the same ID and teleport the creature there. It stims the creature in the same way lifts do, so for all intents and purposes, the rings are identical to lifts, just without all the call button complications.

At least, so I hope. Hopefully this nurturing world I'm planning will give them a thorough testing.

I set up the world (which I named Mixed Berries) for my instinctless creatures first by killing all the lifts and replacing them with the rings. I then killed all the vendors, since those too rely on the half-strength instinct trick, and replaced them with various plants instead.

Then I created my starter creatures. In the spirit of my old Mixed Nuts world, I decided to start with two norns, two ettins, and two grendels.

I opened the CFE breedfile for each species, disabled all instincts, and then chose the sprites for the creatures. It's important to mention the sprites do not reflect on the creatures' genome in this case-- all I did was change the appearance genes in the CFE genome to the sprite slots I wanted; they are more a skin than anything. Thus aquatic breeds are not actually aquatic, and so on.

So, meet the creatures of Mixed Berries:




I will try to document the time I spend with them in some attempt to learn more about instinctless creatures, and maybe just for a while set aside the logic and rationality required for coding and suspend my disbelief long enough to get in touch with my nurturing side.

That, or I'll get bored and forget the whole thing, as I am so prone to do. We'll see how it goes.

Wednesday, June 29, 2011

Older Highgen Generator

As per request, I'm posting an older version of my Highgen Generator script up here.

This one is much slower and sloppier, but as I mentioned before, the purpose of the script was to create highgens as fast as possible, and that meant sacrificing any interest in the actual creatures. Older versions of the script actually spliced creatures with themselves or parents/siblings instead of a random first-gen genome, which allowed for mutations to carry down the line. However, it came with a whole lot of problems, the most prominent of which being that since creatures didn't have to be alive to be spliced (and culling stillborns slowed down the process of getting highgens), I ended up with thousands of creatures that were not only dead, but mutated to ridiculous extremes.

I basically had a few choices-- I could be content with dead norns, I could set the mutation rate to zero and have the creatures never change through the generations, or I could splice them with first-gens instead of themselves. I found the latter to be the most interesting option I could choose without sacrificing speed, so that is what the current script does.

However, for those of you that care less about highgens and more about interesting creatures, I will provide this older version. It includes a check that culls stillborns, creates three creatures at a time instead of one (to provide as backups in case of stillborns), and exports about every hundreth creature instead of every thousandth (but instead of only exporting creatures that end in "00" it basically gives every creature a 1% chance to be exported, so the actual generations that are exported are random).

Keep in mind that creatures resulting from this script are still very likely to suffer a lot of handicaps, since they still don't need to be able to move, eat, sleep, breed, etc in order to be spliced. So you are still pretty likely to end up with sliders, creatures stuck in certain ages, creatures unable to perform basic functions, and so on. But hey, at least they'll be alive.

You can download the old script here. As always, use at your own risk. This version hasn't been tested very well at all.

Be sure to post some of your highgens and other interesting creatures to TCR and show them off! I'd be interested in seeing what creatures you guys are producing.

Monday, June 27, 2011

Project Underground UI

I'm still really bored.

Even though I don't see myself ever getting anywhere even slightly close to ever making any real progress on Albia's Underground, and it's more or less just another one of those insane dreams, I have sort of been entertaining delusions of progress by working on the UI for it, at least-- you'll have to click the thumbnail to see:


So I started with an LNA-esque status window, only coded about a thousand times better.
There are buttons to scroll up and down, shift-clicking takes you to the bottom or top of the log, ctrl+clicking makes the window bigger/smaller so you can adjust it how you like it, and shift+ctrl clicking lets you adjust the transparency of the window however you like it. The X lets you clear the window(more specifically, it prompts you to shift+click it after clicking it once normally to prevent accidental clearing) if it gets too long for your liking or starts to slow down the world, but old logfiles are saved in the journal folder.

It logs whenever the world is opened, saved, and closed, and makes a note when a world is opened after a crash. If I ever get far enough to write the scripts to support actual creatures, it will log the same stuff LNA does, when creatures are born, breed, die, and other world-specific events like tunnels collapsing.

I find myself a little stuck on developing the rest of the UI because I'm still not sure how I want to handle how and which creatures get tracked. If you read my long ramble about this world, you'll know that in this world there will be your own, tame, trackable creatures and then "wild" creatures that can't be selected, but I have yet to work out who is and isn't selectable and why, and how a creature becomes selectable, but I haven't quite found a solution that quite fits what I am wanting out of this world.

I want wild creatures to inspire feelings of curiosity, mystery, and caution. I don't want you to be able to select them once you discover them-- that would defeat the point. I would like to have some system that allows you to eventually select them, but I don't want to have to implement some sort of mundane activity that you repeat in order to try to win their trust or something. I may just end up finding some way to track how much a wild creature interacts with your tame creatures and then allow wild creatures to become selectable after some period of time.

At the same time, I want to avoid a "collector" mentality. I want to get attached to the creatures I do have, ideally enough that I don't feel the need to tame every strange creature I come across. I have thought of implementing a hard limit of creatures you can track at one time, but some part of me just doesn't like setting hard boundaries like that. Another idea would be to just have some sort of penalty, something that makes the game more difficult the more creatures you are tracking. Perhaps if you don't spend enough time with a tame creature, it has the chance to turn wild and become unselectable.

I like that idea in theory, but I don't want to feel like, "oh I better tab over and tickle this creature so it doesn't run away." I want the play experience to be an immersive one, where I can go about caring for my creatures without having to be conscious of the scripts in the background.

But maybe if I can script it reasonably enough, the flow of selectable creatures will be fairly natural-- the creatures I grow attached to and enjoy watching will become trackable, and the creatures that I really don't find that interesting will become wild, and it won't really feel like a huge loss anyway.

I don't know why, but I take a lot an awful lot of joy in working out concepts for things, even if I know they are unlikely to ever actually be put into action.

Sunday, June 19, 2011

Highgen Generator

The DS server is down, and I am bored to death.

So I've gone and written another script. Many of my scripts exist to accomplish a certain purpose as fast as possible, and this one is no different! This one just exists to generate high-generation creatures.

When you inject it, it starts by emptying your world of most objects so that it can spend most of its resources generating creatures instead of worrying about other scripts-- this includes removing elevators and doors, so you'll want to start a new world specifically for this purpose before injecting it.

The script will then check your world for the youngest creature. If there are no creatures in your world, it will attempt to import the last creature that was exported. If there are no creatures to import, it will pick a random genome from your genetics folder and make one.

The script will then either kill or export all other creatures in the world. It's set to only export creatures of generations in multiples of 1000, and kill the rest. Otherwise, the script would be generating thousands of export files, which can really take of space, not to mention just clutter things. Exporting every 1000th creature provides a bit of a save point in case the world crashes or your creatures get autokilled, and allows you, if you wish, to track the changes over time.

Once only one creature is in the world, the script splices the creature's genetics with a random genome in your genetics folder at an average mutation rate to create a creature of the next generation. That new creature is now targeted, and the script repeats itself indefinitely, creating higher and higher generations of creatures.

On my computer, in fast ticks, it generates a thousand generations about every 6-7 minutes. Of course, this will vary according to your computer's speed.

Keep in mind that worlds running this script tend to take up a bit of space since hundreds of genetic files are being generated every minute. If you run the script for say, days at a time, you may find your world's folder bloated to a gigabyte and beyond, so if hard drive space is an issue for you, keep that in mind and delete/recreate the world every so often. The script will pick right up from the last exported creature.

What did I do this? I don't really know. Part of me wondered if the generation counter would break at a certain number, I guess. Part of me just likes to see numbers go up. But mostly, I was just really, really bored.

Anyway, if you want to join me in this relatively pointless boredom-induced number generating, get your copy of the cosfile here. As always, use at your own risk!

Monday, June 14, 2010

Windows App for Development Research!

If you're a developer who's still learning the ropes of CAOS, Windows Grep may be of great use to you. It's not a tool made especially for CAOS development-- it is just a simple, light application that searches the text of all files in the folders that you designate for a word or phrase, but if you are just learning CAOS, this can be pretty invaluable for learning how different CAOS commands are used.



Let's say, for example, you don't quite understand how the "anim" command works and would like to see it in context to get a better idea. You would open up Windows Grep, type in "anim" and make sure the "find whole words only" box is checked so it doesn't return comments that might contain "animate," "animation," or "kanimakoo" (if that was actually a word).


Next you'll want to select the folders that the cos files are stored in. For most of you this will be the bootstrap directories in both your C3 and DS folders. If you often use a PRAY decompiler such as Jagent or REVELATION, you may want to select that folder as well so it can search the cosfiles of agents you have decompiled.



Next you'll want to add the *.cos extension to filetypes to be searched. You may have to add it in the "Custom file specification" box.



Tada! The search process takes almost no time at all, maybe five seconds at the most on my computer. The window will list all files that contain the "anim" command, and selecting the file will list every line where that command appears in that file. If you mouse over the page-shaped buttons in the top bar, you will find that you are able to toggle between showing the matching lines and showing the whole file, making it relatively easy to see how a command works in context.

The nice part is that the program remembers the folders and extensions you last selected, so if you want to look for a different command, all you have to do is search again, enter the new query on the first page, and click "finish." Even after you exit the program, it remembers the conditions of your last search.

This really is a very nice tool for developers or just generally curious people. Just be careful what you touch-- the program is also capable of searching and replacing words or phrases in the files-- something that could easily screw up your game if you're not careful.

I hope this can help some of you guys out. Happy searching and developing!

Thursday, June 3, 2010

Action Script Modes

I wrote a few strange little scripts today that ultimately resulted in a creature's ability to randomly tint everything it pushes, just for fun. Kinda useless, but the scripting behind it might not be.

I've had this idea in my head for a while of the ability to switch the game into different "modes" when needed, modes that basically affect everything in the world and how it works. Creature action scripts, to be specific.

Creature action scripts (I don't know if that's the proper name for them but it's what I call them anyway) are the default scripts that define what happens when a creature does something or when something is done to a creature. You can find these in your bootstrap folder in files like "DS creatureDecisions.cos" and "DS creatureToCreature.cos." These are the scripts I modify to make my Critical Hit or Interspecies Breeding scripts.

What I set out to do today was to essentially create an easy way to shift between different sets of action scripts, between the default push/pull/eat/hit/mate/etc scripts and my custom ones, without having to reinject them every time (which often results in errors if there are creatures making use of those scripts).

It worked basically by making a "state" agent who's purpose was to act as a switch between the default scripts and the altered scripts. Then at the beginning of the default push script, I added a bit of code that basically said "check the state agent to see what to do." When the state agent is in the default state, it will tell the script to go ahead and run the script as usual, but if it is set to another state with a mesg wrt+ command, it will run an alternate script instead (or if the alternate script isn't there, the default script again).

To do this, the "state" is set to a number, 0 for default, and something like 1000 for alternates. If the push script is activated (script 17) and the state is set to an alternate of 1000, the script will add its number to the state number, thus running 1017 instead. But first it checks to make sure 1017 exists-- if it doesn't, it'll run script 17 anyway. So I can make a set of modified scripts one script at a time and not worry about errors being thrown if it's not a complete set.

I'm really not sure if there's a decent purpose for this system outside of development and testing, but it's an interesting little system. Possibly it could be used to switch easily between "easy mode" and "hard mode" sets of scripts-- right now I'm using it to switch between scripts that stim writ the creature and those that don't to try and find a way to teach creatures regardless of genetics.

Coming soon (hopefully): Population Control Tools!

Sunday, May 23, 2010

Why Develop?

So Moe recently made a fantastic post on his Creatures 2 to Docking Station development blog (which is awesome in and of itself, you should check it out if you haven't), aptly titled, "Motivational Speech."

Reading it really got me thinking about why I develop the stuff that I do for Creatures. I can't honestly say it's just for the community; though the community certainly inspires me, I don't think it's the sole reason I do what I do. The large number of personal projects kind of rules that out.

But after sorting through my head a bit, I think I've narrowed it down to two main reasons that I spend so much of my rare free time developing for this game.

The first is honestly just to see what is see what I can do. Pushing the previously-known boundaries of Docking Station is one of my greatest joys. I like to try completely new and strange things, in particular, things that radically change the way people play Creatures, or create another playstyle completely. Battlestance, though I never completed it, was probably my biggest attempt at this. SERU was another. Most of my little tweaks, the Hit Script and Breeding Script modifications stem from this too. Sometimes I like to just scroll through the CAOS documentation and come up with interesting or creative ways to use certain commands. I get endless joy from just taking the tools that I have and trying to explore every realm of possibility.

Though it has nothing to do with CAOS, LNA stems from this as well-- another attempt at doing something interesting that hadn't been done before. Heck, even blogging barely had a presence in the community; that's part of why I started this, and now look how it has taken off, with new wonderful creatures blogs springing up left and right! Maybe I'm a tad conceited but I like to think I had some hand in inspiring that.

So maybe my motivation does wrap back around to the community. I love to try new things at least in part because I love to inspire the community to push the boundaries as well, whether in creating new playstyles or new ways of networking. Huh. I always end up finding out new things just as I am blogging about them, hah.

But the second reason I develop is the one less-seen, and this is something I'm fairly certain is completely personal-- to find ways to make C3/DS creatures as emotionally attachable as possible.

This is a somewhat embarrassing story, but I was really into Creatures at a young age because I wanted to find a way to essentially program my own friends (I had quite a bit of social anxiety back then). I even went and learned enough about C2 genetics to make an near-immortal norn, and for a period of time I ran a C2 world 24/7 with nothing but this norn in it, growing relatively attached to it (though more as a pet than a friend) as I cared for this same creature for days on end.

Though I've long since found human friends, I still remember how attached I would get to C1/C2 creatures and how much C3 lacked that. Most of my development on this front never gets off the ground enough for me to talk much about it-- the instinct-less norns are one example, but my endless genomes and various script edits really haven't made it to light yet. It may be something I talk a lot more about in the future though.

So I ask you, developers of all sorts, why do you do what you do? Is it completely for the sake of the community, or is do you have a more personal goal you set out to accomplish?

Friday, May 14, 2010

Crossbreeding Script

This one's been on my youtube for a couple days, but I'm only now getting around to writing about it. This is one of those weird things I did during one of my sick days this week. It was more or less just to see if it could be done, since to my knowledge no one has ever written a script to make crossbreeding possible, and it really wasn't that difficult. It just involved writing a breeding script out manually instead of using the the convenient "mate" command that does it all for you.



I wish I could say "no norns were harmed in the making of this video" but I would be lying. Guess I better watch out for ERFN. The thing about this script is though it makes interspecies breeding possible, it would still be very rare for it to happen naturally, since by instinct creatures generally stay within their species when looking for a mate (and normal grendels would probably beat a norn senseless before considering fathering her mutant child). It would probably either take a lot of encouragement, or a script like the one I used for this video that keeps creatures fertile and tells them to constantly push each other.

Still, it's really nice to have that possibility open. We've all had situations where the rogue norn wanders off to join the ettin tribe or the supposed-vicious grendel finds an odd friendship among the norns... What if those interactions had the potential of going further? It could add a whole new dimension to the game.

Anyway, like all my projects, the script is far from finished (right now it's not even checking to see if creatures are old enough before executing the script which is a little weird); I more or less just wanted to see if it could be done so I didn't bother coding in all those doifs. How long it takes me to finish it will depend on my free time and how interested you guys are in it, so if this strikes your fancy, do make your voice heard so I can figure out where to fit it in my priority list!

Thursday, November 26, 2009

Selective Muco Prototype

This is more or less a mock-up and in no way close to being done. I'm just excited I actually got the list to work properly:



If you can't tell though, it's an attempt at an edited version of the egg layer to allow you to pick norns from a list rather than going through them one at a time. The panel can be shown or hidden using the little circle on Muco, and when a creature is selected on the panel, the breed will show up on Muco, where you can select male/female and lay eggs like normal. Since you can scroll through pages of 14 breeds at a time, it should just make selecting different breeds a little easier so you won't have so many of those moments where you are clicking through to find a certain breed and then accidentally click past it. Don't you just hate when that happens?

Again, it's just a shell prototype right now and is not in any way functional nor close to being so, and this thing is such a horrible headache to code that you probably shouldn't hold your breath. But as always, feedback is appreciated-- little words of encouragement here and there go a long way in keeping my motivation up, heh.

Friday, November 20, 2009

Hit Script Modification

Eventually, I would like to tweak several of the creature's action scripts to make them more interesting and make the game a little more challenging, and this notion came to me the other day while I was trying to nap.

So this is a modified version of the hit script, codenamed "Critical Hit." Essentially what it does is allow especially angry creatures to have a chance of hitting a creature extra hard, sending it flying across the room and injuring it quite badly. Short demo video below, just be forewarned it contains a lot of nornish death:



(Yes, that orange chichi at the end is immortal, that's the only reason it doesn't die, heh!)

As you might notice I make a lot of use of my homemade shortcuts, in particular the one that makes all creatures hit each other and the one to create random creatures. I still have quite a bit of tweaking to do to the script-- I would like to make the amount of injury it inflicts dependent on the relative age of the creatures, IE an adult hitting a baby would do more damage than an adult hitting an adult, or a baby hitting a baby. I'd also like the amount the creature is knocked backwards to depend on this too. I think I would also like to lower the chance of it happening a little more-- I don't feel that critical hits should be extremely common.

Still a work in progress like many things... I'd appreciate any thoughts you guys might have though!

Monday, July 27, 2009

The Future of DS

Let's face it guys, we're all but abandoned by Gameware. It really is time we start taking our beloved game into our own hands, and this thread is an awesome place to start. Even if the DS engine doesn't support creature "memory", migratory instincts, or personality traits, with enough CAOS workarounds we can simulate this stuff and make the life sim we've always loved into the game we've always dreamed of.

Wow, did that sound corny or what. Seriously though, check it out and make your suggestions-- you never know, there may be a way to make it happen.

I actually did a lot of work on project BattleStance today-- I finally fixed the lifts to slow them down so creatures wouldn't obsess over them so much, and created the seasonal fertility fruit tree that only bears its fruit in the fall during the time of peace. I also created the tasteless and only barely nourishing rockgrass, which is the only relatively constant food supply in the room. The sprites are really ugly though-- I'll have to work on that. But on the upside, the room is now fully capable of sustaining a small population, so I've been running small wolfling runs in it, just for fun. Maybe I'll put it on LNA one of these days, just to show off the progress.

Unfortunately, I got none of my non-creatures related stuff done today, so I'm going to be pretty busy this week. I'm pretty inspired though. Great things are coming, I think.

Saturday, July 25, 2009

A COS for every occasion

I have to say I'm very satisfied where my desire to learn CAOS has gotten me. It's now pretty easy for me to write simple scripts from scratch to suit whatever purposes I have. But I don't ever really make these scripts public, mostly because I'd rather release them as agents than scripts. But I know some people will find them useful even in .cos form, so I might as well make them available.

I would like to eventually devise an elaborate, expandable options panel that contains on/off switches for all these little tweaks since manual injection is generally a pain. But until then-- here, have some cos files!

Use these at your own risk! Some may be buggier than others.

AutoAge: Check your world every few minutes for creatures that are not adults, and make them adults. Probably the first script I ever wrote for DS, with the help of Fuzzie

AutoEgg: Monitors your creature population and automatically creates a random norn egg if the population drops below four.

AutoTab: Made especially for Live Nornish Action. Automatically cycles through norns so you're not stuck watching the same one (really, really annoying if you're trying to play normally though.

EggLimit: Checks for females that have laid more than four eggs and keeps them infertile. This has only barely been tested-- you have been warned.

Generation Check: Checks for the lowest generation in the world and exports all creatures of that generation-- but only if it will be leaving behind at least 3 creatures of each gender.

Infertility: Attempts to keep all youth, old, and senile creatures infertile, making adulthood the only possible breeding time.

Enjoy :)

Monday, July 20, 2009

Live Nornish Action Test Stream

Ustream has been giving me grief for quite some time now-- mostly because its broadcaster client likes to randomly freeze up and cut out the sound, and I have to reload it to get it to work. So I'm going to test running it on Justin.tv for now, to see how it works and how people like it. You can check it out here, and feel free to give feedback! Depending on how it runs, and if people like the newer stream, I may switch over permanently. I'll have to see how it goes though.

Meanwhile, the Splice DS agent is currently undergoing some heavy testing much thanks to the nice folks at Creaturetopia, and should be ready for release soon :)

Sorry for the lack of updates-- I've been extremely busy with some career-related things and it will probably actually get busier as the weeks go by, but don't worry, I'll come around eventually.

Friday, July 3, 2009

Omnomnom Norns

It's getting hard to tag these posts when I'm covering like three different topics in a single post, haha.

I found a few people willing to test my DS splicer, so we'll see how buggy it is on other people's computers. I managed to work out the bugs I mentioned before. Here's a tip if you're ever going to make agents that move creatures using the mvsf command; it's helpful to preface the command with a "doif movs = 0". If a creature is currently in a vehicle (like say, a splice pod) and you try to move it using mvsf, you'll get an error saying mvsf only works on autonomous agents. If a creatures movs value equals 0, that confirms it is autonomous and it won't try moving it if it's not.

LNA is down, sadly, mostly due to the computer it was running on completely blowing up. I'm currently fixing up one of my older computers to try running it on. It might be a while, but I'll get it back up eventually.

In the meantime, when I'm not splicing creature in mass quantities, I've been working on other horrible things like a script that allows creatures to eat each other. It's easy enough to script something that simply allows creatures to be edible, but I've been trying to script something a little more realistic... so far, the script in its current state allows one creature to eat another, but "eating" won't instantly kill a creature, just wound it a lot and make it very prone to infection (it's more like biting than eating, really, but the creature will still die if bitten several times in succession). Though the biting creature receives nourishment, it still gets stim'd for disappointment-- sort of like a guilt trip for eating one of your own kind. However, the hungrier a creature is, the less disappointed they will feel, so hopefully creatures just won't eat each other unless they're really desperate.

I suppose I'll tweak it a little so say, grendels won't feel any guilt for eating norns, norns will only be able to eat a grendel if it's dead, among other things. Just to add some realism to the game, however gruesome it may be.

I still feel that C3/DS is far too easy if your goal is to raise a family of norns, and while it's not difficult to pick some more frail genomes to raise, that still really limits your variety. So I'm trying to come up with some ways to make the game as a whole a bit more difficult. Ideally these would be changes they would take effect regardless of the breeds of norns or metarooms that were used.

Perhaps a scripted "mating season," a script that essentially only allows creatures to become fertile during the in-game summer season, to make it a little more difficult to keep the population high. I wonder what other sorts of changes could be made to up the difficulty of raising creatures...

Friday, June 26, 2009

Of Streaming and Splicing

The amusement never seems to cease when I'm reading the comments people leave in the LNA chatroom. Most people just ask "what game is this?" despite the show description blatantly stating it (I do wish that was a bit higher on the page..). Others will come in the chatroom to tell me to play warcraft/starcraft/other various games. And yet others who know and understand the concept will ask me to "kill off" some of my norns so theirs can warp in.

I wish there was a way to mark myself as away or something, because though I want to be around to answer questions and help people out, I don't appreciate it when people leave nasty messages because I'm not watching my chatroom every second. I also really wish the show description was somewhere other than the bottom of the page. That's kind of critical information, and I don't really appreciate how ustream pushes it underneath the comments box and other recommended shows.

Ah well.

In other news, my DS splicer control panel is coming along rather nicely! You'll have to click the thumbnail to see the full image though-- I didn't want to break the screen with it.

Right now it works decently-- the top button divides all creatures in the world into two groups and drops a group over each of the splice pods so they don't have to be dragged over to them, the second button automatically imports all creatures from the My Creatures folder, the third button will create a pair of random creatures from two randomly selected genomes in the Genetics folder and drop one over each of the splice pods so they're ready to mix. The fourth button is the sedative gas, which can be turned on or off; it lowers all drives of the creatures in the splicing area and lulls them into a deep sleep, which ensures the creatures are the happiest they have ever been and as a bonus stops them from moving around and getting out of the range of the splice pods. For the most part, these buttons work pretty flawlessly.

The AutoSplice button, which is pretty awesome when it works, is still giving me a few problems. Essentially it systematically splices all the creatures in the world until there are only a specified amount left (6 is the default, but that number can be changed by the user). It starts by splicing all the creatures near the splice pods, (realigning them with the pods if they wander off), and then teleports the second generation under the splicer up to the pods to resplice, and so on until the desired number is reached.

I'm having a few issues though-- one is with the teleport segment of the process; even though I'm using the exact code from the top button which works perfectly, it likes to give me "invalid position" errors. The second problem is an issue with the splicer itself: occasionally it will mistake an empty pod for being full, which throws the cycle into an endless loop of trying to splice something that isn't there. So I might have to actual modify the code ripped directly from the C3 splicer, which I was hoping to avoid.

Nonetheless, I'm pretty happy about how well this is going. I've never created anything this elaborate before, and even though much of it is just altered code from the C3 splicer, the control panel thing was pretty much done from scratch, with the exception of the import button which takes a lot from the DS import script. Now if I can just figure out how to fix these bugs... then I'll need to seek out people interested in testing. Developing is certainly a fun path :)

Friday, June 19, 2009

More Efficient Splicing


First of all, I need to gush about how much fun session 1 of the first Live Wolfling Run was today (erm, yesterday technically, seeing as it's 1 in the morning now). It's been so long since I was in a chatroom with other creatures players, and all the silly commentary that was made about what was going on onscreen just made it so much fun. It was like we were all raising norns together. I am both excited and apprehensive about tomorrow-- Hopefully the fun will continue, but I also know creatures will start dying out, and that will be a sad thing to watch...

In my personal worlds though... I have been splicing hundreds of creatures that have been found in export files on my harddrive, doomed to an eternity of being frozen in time otherwise. But during my splicing adventures, I kept thinking how nice it would be to be able to have the splicer in an undocked world so I wouldn't have to deal with the slowdown that all those extra metarooms in a docked world bring.

So just out of curiousity to see if I could do it, I poked around in the C3 splicer .cos files, changed some coordinates, then messed around with some of the scripts involved in the powerups and bioenergy to actually get the thing running. And tada:


I found myself with a fully functioning splicer in my DS hub.

I then went so far as to add some extra rooms to the area underneath the main hub area so freshly spliced creatures land on a floor underneath the splicer-- this is so I don't accidcently splice them again until the whole first generation has been spliced.

Then I was on a roll, so I decided to fix another problem-- a ton of adult norns running around the splice room tend to block the hand from being able to click the pods to get the creatures inside them.
So I created a "sedative," an invisible agent that lowers all the drives of creatures in the hub and puts them in a sort of a delerious, happy grog, while strongly suggesting them to rest. Not only does this make their splicing the most pleasant and painless experience of their lives, but while they're lying down the hand can click the pods without accidently tickling a creature.

Still having way too much fun with this, I then created a Creature Call button, which, when pushed, teleports all creatures right above one of the two splice pods, alternating between the two so that the creatures are evenly distributed. This, combined with the sedative that makes them sleepy mean I virtually never have to chase norns around to get them into the splice pods ever again.


It's just a matter of clicking each pod and pressing the splice button now.

At that point the most painful part of the process is importing all the creatures to splice. So again I tinkered with the import button found in the DS UI and created a similar button that essentially automated the process of importing. One click imports all creatures in your My Creatures folder (or at least, until you reach the population limit or your game explodes from holding too many creatures).

So now my splice process consists of moving 40 creatures from my Random Creatures folder to the My Creatures folder, one-click importing them all, using the call button to place them all by the pods, click-click-splice, repeat until the first generation is all spliced, call the second generation to the pods, repeat two more times or until I have about 5 creatures left, which are exported.

It's quite an improvement over manually importing each creature, dragging it to the splice pod, getting it in without tickling it, repeat for second creature, splice, move offspring somewhere safe, and so on and so forth.

Right now though, this splice system is spread out in about 6 different cos files and the buttons are in random places and are unlabeled, so perhaps I'll eventually structure them into a decent control panel and use proper sprites for the buttons, and compile and release it as a tribute to fellow splicers.

I'm also considering a button based on my Random Run script that creates a pair of completely random creatures for the beginning splicer who doesn't have hoards upon hoards of exported creatures sitting around on their hard drive.

...I'm sure I'll get back to working on BattleStance and my random run and all my other projects eventually. I just have so many nutty ideas.