woodspeople

woodspeople

Member
Contributor
Design
  • Name: Cynthia "woodspeople" Kurtz.
  • From: US, upstate New York.
  • Skills / Tools: Programmer for about 25 years, Python, C++, Smalltalk, Delphi, various dead languages. Best at interface design, visual design, writing, tech writing, science. Examples of developed software are here, here, here.
  • Found via: My son and I are on a homeschooling journey together. We discovered Minecraft about six months ago and have been on a building frenzy ever since. We made a few texture packs (here, here) and were thinking about doing a mod next, but then my husband said, why don't you see if there is anything open source you can contribute to? So we found this. BTW we love the waving grass and rising and falling water. Much more ... something.
  • Interests: I probably won't have time to help with actual coding. Not enough free time, and too much like work... But I can help with feedback/ideas as a software developer, writer and researcher. My research specialty in the past 12 years has been in narrative, that is, stories and how they work (see here and here and here on that).
  • Extra: I get bored with the fighting-monsters-who-don't-look-like-you stuff in about three minutes. I had my D&D phase thirty years ago. In my view there are much more interesting challenges when you move beyond simple good-guy-bad-guy fighting (and this is one area where I think an open source sandbox game has tons of potential). Read this blog post as a test: if you hate it I probably wouldn't be of much help to you! And no offense taken if that is true. None of us have time for associations that won't work. On the other hand if what I said sounds intriguing, I would be glad to do my little part to help this project along.
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Welcome! Very impressive stuff, both your linked work and your story. I read the full blog post and found it a very interesting take on Minecraft, I certainly hadn't thought about it that way before myself. The literal skin is also rather amusing :D

I'm happy to say that I think our stories would be compatible as I personally was envisioning more of a realistic world with different species of creatures that aren't necessarily "born" hostile, although they might be uncooperative and sitting on a big pile of unobtanium... so maybe you encounter and trade with these races, or attract them to join your estate/city/civilization in a constructive fashion. At the same time I do see combat happening, but for a reason of some sort, with a story behind it. You'll have to help me keep the minion management features from feeling too much like slavery :D

Being that you hit all sorts of quirky obstacles trying to do a skin pack in Minecraft, I hope you can enjoy our goal of near effortless modding there - that system is fairly far ahead currently, you can make internal blocks extremely easily at this point (simply add a tiny png + a tiny groovy file with special stats if needed in appropriate directories), and soon we should be able to support external (outside the jar) blocks just as easily. Actually crafting or creating said blocks in-game needs a few tweaks though, we used to have a "creative" block picker but upgraded the interface since then so that's inactive at the moment.

Incidentally my wife is from NYC. Cool :)
 

woodspeople

Member
Contributor
Design
Glad to hear it. Love the unobtainium idea. We once met this kid who wanted to do nothing but pretend to have Star Wars fights. So my husband asked the kid, "What are these Star Wars people fighting about anyway?" The kid stopped in his tracks. He had no idea. I don't think it had ever entered his mind to ask why they were fighting. That is the kind of combat I have a problem with, the mindless, because-they-said-so kind. Real combat, from what I hear, is never mindless. It is full of minute-by-minute decisions about intents and motivations and alliances. That to me would be something interesting.

At this point I would like to give you three pieces of advice. Feel free to (a) use them (b) ignore them (c) tell me to go away. It is your project, I am just standing at the edge looking on.

1) About non-programmer "effortless" modification systems. I did take a look at your groovy files and images for the block definitions and like the system so far. I have struggled with several of these user-modifiable systems myself. There is an essential tension in opening up modifications to non-programmers. On the one hand, the more people can poke at the system the wider the range of amazing ideas they can bring into play. Some of the best ideas come from kids who can't program but can change simple things in simple files. On the other hand, there is this hard lower limit of being able to edit structured text. I don't know how many beginning-programming lessons I've had to give to experts in advanced subjects who just can't get to where they can understand a format that HAS to take the form [parameter]=[value]. Programmers tend to forget that not everybody can do this. I remember once writing a system where the owners could end their crippling reliance on expert programmers and make the tiny changes they desperately needed themselves, only to find out that they were afraid just to change a spreadsheet file and called in the programmers anyway. Sometimes a very simple GUI that helps non-programmers enter ideas without understanding structured text can make a world of difference. One thing I see with many moddable gaming systems is that about ten times as many people WANT to write mods as can, and that's too bad because that's lots of possibly great ideas left out in the cold.

2) About NPC behaviors. I wouldn't even try to make this work in hard coding; I would open it up as well to a modification system. Why stop at block definitions? There are simply hordes of sociologists, psychologists, even ethologists who would love to mess around with behavioral rules to create amazing challenges. That's more fuel to the open source fire. A few pie-in-the-sky ideas:
- player characteristics are things about the player: standing, sitting, lying, running, wearing something in particular, with this skin, hungry or not, etc.
- NPC characteristics are similar but about the NPCs: running, about to give birth, old, newborn, angry, tame, etc.
- contexts are times, places, circumstances that change how things play out: in full sun, under a crescent moon, on a cold day, etc.
- item-actions are things one can do with or with reference to an item. give, take, steal, ask for, trade, leave to find, throw, hit with, destroy, give away to someone else, etc.
- character-actions are things you can do to/for/at someone: attack, defend against, protect, trade with, form an alliance with, befriend, mate with, provide for, keep away from, warn others away from, etc.
- durations are how long particular effects last: one day, one month, until some event occurs.
- specifications can put these together into rule sets. like: if you [throw] [gold] [near] [a wounded werewolf] [at night] [when the moon is full] [and you are wearing a white hat] they will [protect you] [on moonlit nights] [for one month]
- or: if you [run away from] [a unicorn] [with one black hoof] [that is NOT looking at you] [on a hot day] [while holding a diamond] the unicorn will [attack] [any character that comes near you] [until you hit any unicorn]

The great thing about a thing like this is, the information is already there in the system. All you have to do is set up a large and flexible system of parameters and make it easy to bolt them together. And then lots of creative people will pop out and start making amazing things. You could imagine people being able to put these things together into a fascinating array of rules. And then the fun part would be that you would have to figure out the rules by playing the game. Now THAT is what I call fun.

3) The other thing about open parameterized systems I've noticed is that there is a sort of critical mass of complexity in parameters. MC has very few material-property parameters: occlusion box, transparency, emitting light, explodes, I can't remember them but I was surprised how few there are. If you add more and they are imaginative, like "disappears after one day" or "swallows everything next to it" or "changes color if you walk on it" or "lights up during rainstorms" or "triggers nearby circuits but only on Tuesdays" and so on, people can go crazy putting them together. I think one mistake people often make is in only setting up a very small number of these, thinking people will not be able to handle them all. Some people can't but some people can, and they can do amazing things. In the plant drawing system I made ages ago I had something like 200 parameters that determined the look of a plant. Most people ignored most of them, but the master artists could manipulate every single one to do things I had never thought of. So I'd over-build that part of things: it's essentially free creativity. [The other thing people loved in that system was the plant breeder: random assemblages of parameter values. You could make a rule breeder that comes up with random rules, some of which are unexpectedly amazing.]

Actually, slavery would be a very good idea. It would be great to be able to be the "bad guy" sometimes and work through what THAT is like. Like a red-teaming approach. There is nothing wrong with playing out what it would be like to be bad; that is kind of the point of play. Nasty behaviors and their consequences would be easy for expert rule-makers to set up: say if you [fight] [an orc] [that attacks you first (not the other kind)] [and win] [on three consecutive days] they will [become your slave and do anything you say] but they will also [expect you to feed them and give them a bed], and if you [give them anything nice] they will [rise up against you and kill you]. And so on.

So anyway, there are some over-the-top crazy ideas for your use. I hope they are helpful! Will say no more else unless asked :)

woodspeople
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Lots of stuff! Will chunk up this reply a bit :)

woodspeople said:
1) About non-programmer "effortless" modification systems.
Point taken - the Groovy system as it stands is a foundation, but yeah, even super simple "put file here, add [plant] block if you want it to grow" snippets certainly could still throw off a lot of people. The idea of a GUI to help mod is great, and I'd love to see that happen. My personal focus since one person can only do so much is to throw together a solid framework, then hopefully get power-user contributors who can not only help mod, but help extend the mod system itself to help others - like that exact GUI idea you bring up.

woodspeople said:
2) About NPC behaviors. I wouldn't even try to make this work in hard coding; I would open it up as well to a modification system. Why stop at block definitions


This is exactly the plan - The Groovy definitions for blocks are only the first step. Full intentions to follow that up with other systems, like creature definitions to support other advanced stuff down the line. I see the core Java code as providing and applying the generic logic of systems to specific objects defined in and loaded by Groovy. There is indeed immense potential here, and I'd be thrilled to have more interested people help make that a reality :)

woodspeople said:
3) The other thing about open parameterized systems ...
Agreed again - one thought I have is to define a lot of material properties for metals and such, then simply provide concepts in the game that require a range of some stats, but otherwise is up to the player to figure out the specifics of and discover synergies with other systems if possible. So making rail is not "6 iron bars + 1 wooden stick" it is "Any material able to be shaped into a form suitable for a given vehicle + any connective material able to help maintain the integrity of the construction" where the player even designs the vehicles that go on the track. DwarfFortress has some amazingly complex calculations about material properties when used in armor and weapons (see http://df.magmawiki.com/index.php/DF201 ... or_Quality ) and I'm figuring if we can just build the system to potentially involve that level of complexity then the material details / tweaking / testing will come as the game evolves heavily thanks to contributors.

Plants/trees currently is the only advanced block type I've thrown some arbitrary config at as an example of how the definitions could be used by a generic growth simulator (actually implementing that hasn't been done yet). If you did something similar in the past, would that be something you'd be interested in contributing? I know you doubt your time availability to help outright code, but... :D

woodspeople said:
Actually, slavery would be a very good idea.
I haven't thought too deeply about the minion system yet, aside from knowing I'd like to see that as a core part of the game. A lot of that comes from DF (where social interactions can be immensely sophisticated behind the scenes) and Dungeon Keeper, where again the system isn't very deep. I'd like for it to be very deep, but again accept my limitations as an individual and need somebody to help prevent the system from simply becoming "Your minions work for you because they were programmed that way" :)

Different social constructs would be plenty cool, both good and bad (pros and cons to both slavery and a mutually beneficial socially equal system), tho that's probably a fairly "down the line" kind of item.

woodspeople said:
So anyway, there are some over-the-top crazy ideas for your use. I hope they are helpful! Will say no more else unless asked :)
Excellent stuff! I'm going to go with "(a)" and ask for plenty more (tho probably in the main dev forum rather than continue in this intro thread). The one drawback is that we'll very quickly be overwhelmed with good ideas vs. ability to implement (just look at the Minecraft suggestions forum...) and thus really need people willing to help actually make stuff happen. If you don't think you'll have quite the time to become a code monkey, maybe we can meet half-way somewhere one step deeper with writing up some more technical specifications / bits of pseudo-code to aid the programming work nicely? :geek:
 

Attachments

woodspeople

Member
Contributor
Design
Ah, the joys of running a project. So many well-meaning people blundering around telling you they know your project better than you do. You seem to have everything I thought of well in hand already. :) And you seem to have gracefully dealing with blundering volunteers well in hand too. I particularly like the part about "Any material able to be shaped into a form suitable for a given vehicle + any connective material able to help maintain the integrity of the construction". Hard to pull off in practice but very exciting.

I fully admit I have never played Dwarf Fortress or Dungeon ... um, the other thing. I only got into MC because the kid did, to be honest. (It was all Lego before that, which was fine because I love Lego too.) I am not a huge gamer. I like old novels better. But I have loved some great games in the past, games that made you think. Ico was amazing. We still play the sound track from the Neverhood. King's Quest. Myst in general was boring (no people) but Myst: Exile was pretty cool at the end when you could kill or save the guy. But my all-time favorite game ever was Return to Zork. There were lots of people to talk to, and they all had their own agendas and quirks that you had to figure out to get what you needed. I've never seen anything like it in terms of teasing out hidden motivations rather than fighting dwarves because they look like dwarves. Anyway, not to start a "best game ever" rant or anything. I promise to read about DF and the other thing. It's just that, after having had enough of D&D as a teenager, one glimpse of "dwarf" or "armor" or "orc" sends me running far, far away.

A growth simulator ... that could be interesting. Trying to create procedural plant/tree growth in a blocky world would be a challenge, but I can see where it could be done. My/our old plant growth simulator was(is? does software die?) an OO model, where leaves and meristems and flowers and fruits created (in the case of leaves) and vied for resources. Most people use L-systems for plant growth, but I have always found those ... too uniform, not funky enough. We put up the code a while back on GitHub but I'm not sure it would be of much use to you. I'm sure I could come up with some simple/interesting algorithms that would make simple/interesting plants/trees if I thought about it a little. That's a small thing I could do to help.

As to time, there are two options. After work and child/household care I have about an hour a day to myself, to be used for all purposes including leisure, relaxation, exercise, social life and sanity. Generally half of that goes to the daily soak and old-novel reading, so that leaves very little "spare" time. Unless I can't sleep, that is, and write forum posts really late, in which case I will pay the piper tomorrow. So I can only do things that take about a bath-sacrificing hour to complete, or that can be done across several such hour-long sessions spread over weeks. (All ye who plan to have children some day, heed these words.) This may still be helpful to you, but it has to be carefully planned and patiently awaited. That's why coding is out: it's full-in, concentration work, and there is just no way I can commit that amount of time to anything. (Between bouts of paying work I am in the middle of a massive book rewrite project that will not end.)

The second option is that, since my son and I are on an amazing homeschooling journey, anything that falls into two categories at once (things it is useful for a child to learn and things my child wants to learn) is something I/we can put some time into. This is how I got drawn into the whole MC thing in the first place. For example, anything remotely touching on circuitry or machines is of huge interest to the child. (For this reason he has not found Terasology worth playing, yet. For him it's no logic gates, no game.) We had been looking into making mods because he wanted to see how the Java mods worked. However, I kept getting so frustrated with the ugliness of the de-obfuscated code and its inferiority to open-source clarity that he lost interest. Besides, we would have to turn off our carefully-bolted-together complex of industrial-factory-type mods we have installed to work on our own mod, and that is unacceptable to some parties at the present time. However, I think if we used your smarter system we could work on some interesting things that could also help your project. And writing pseudocode - or something that might grow up to be pseudocode one day - is simple enough and quick enough to do while learning. So that's definitely a great idea. And we can work contributions into our explorations of anthropology, ecology, history, botany, math, etc etc. I also want him to see what contributing to an open source project is like (because it's soooo the future). So for example when you have a parameterized system ready to use for complex block definitions, NPC behaviors and so on, writing sample "sets" or whatever to use would be something we could do to help. I also have a new texture pack partly done, sort of a "you awaken in a strange world" ambiance, that I could switch over to making for your system instead. (The child is also working on a TP but considers it highly secret. It has many invisible items in it right now, which makes it useless to anyone but the child. This is part of the secrecy.) Or, if you wanted to use my literal-minded TP I wouldn't mind that in the least. You could pull it part or ask me to do that for you.

Okay, so I think my next step is to make a list of "things I/we could do for you" that I think I/we really COULD do (the learning ones all have to be rubber-stamped by the child). Then you could say which you would like me/us to do, then I/we could do them. Or you could suggest other things. Or you could say you don't want any of those things, or don't want them yet, and you want me to stop taking up your time writing long posts on your forum. Which is also fine.

Tell your wife I used to spend every other Saturday at the Metropolitan Museum of Art. (But that was a long time ago and now I live in the woods and love it just as much.) I was once in Copenhagen and dragged my jet-lagged self through one of the huge ancient castles there (not sure which one). Nearly had a claustrophobic fit in the dark creepy dungeon part downstairs. Hm, maybe that's why I hate dungeons so much.

woodspeople
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
woodspeople said:
I fully admit I have never played Dwarf Fortress or Dungeon ... um, the other thing. I only got into MC because the kid did, to be honest. (It was all Lego before that, which was fine because I love Lego too.)
Lego is awesome - I'm from Denmark so I had plenty of it before I left for the states. And yeah, the castles by Copenhagen can be sort of creepy ;)

Dwarf Fortress is definitely not easy to get into, as it has an atrocious user interface, but you might like the depth of social interactions and how the individual dwarves develop over time and retain stuff from their experiences in the past (from scars earned in combat to getting sick in sunlight if they never leave their cave)

Problem with DF is that it isn't 3D nor multiplayer, so I'd like to see some of the same concepts, but in a Minecraft-like world :)

Neat game notes, also, although I've somehow managed to not play any of those :(

woodspeople said:
A growth simulator ... that could be interesting.
I'd love to see any re-usable material you could dig out of your project, or new algorithms you could think up thanks to the experiences of developing that. We have the L-system generator in place but I would like to see step-by-step growth in the world too, and ways for players to impact it. I think both systems could be driven by characteristics defined in the appropriate Groovy files.

woodspeople said:
As to time, there are two options...
I'm thinking pseudo-code / algorithms / technical ideas would be plenty useful, possibly also texturing if the two of you are so much into making TPs. Maybe again focused on plants / plant textures :)

woodspeople said:
Anything remotely touching on circuitry or machines is of huge interest to the child
Huge interest here too, although we don't want to just clone redstone. My thought was to focus on steam-based mechanics for starters (steam engines driving physical mechanical systems), which could also get fairly complicated. Especially when following the idea that it shouldn't just be "place iron object here, coal there, water in container" but again picking a suitable material as per what you have available that matches the right characteristics. That's a little ways out though, I imagine, so much to do just to get the basic systems off the ground first :)

Maybe a thought would be thinking about how redstone is coded when playing MC (or how mechanics work in DF - there is a lot about it in their wiki) to get ideas on how one would implement a steam-based system with pipes and such - both of them deal with transferring and reacting to "charge" somehow

woodspeople said:
Okay, so I think my next step is to make a list of "things I/we could do for you"
I would say start by reviewing our current growth simulator / tree system / placeholder potential in the Grass block and compare it with the sort of algorithms you had in your old project, then throw some thoughts with snippets of pseudo code in a new thread in the dev forum? I'm sure we can brainstorm for a while and get a better idea on how to implement (which is when me, begla, or somebody else could actually code some more stuff)

Some handy links (not exhaustive):

Flora Generator: https://github.com/MovingBlocks/Terasol ... Flora.java
Growth Simulator: https://github.com/MovingBlocks/Terasol ... lator.java
Grass: https://github.com/MovingBlocks/Terasol ... ass.groovy
Neato reading on machines in DF: http://df.magmawiki.com/index.php/DF201 ... _component

I'm not quite sure how to structure plants/trees in Groovy just yet, the main trick being that a tree for instance can consist of several different blocks (trunk blocks and leaf blocks primarily, but also potentially horizontal branches?) - so how do you tie them together, where do you put which growth stats, etc
 

woodspeople

Member
Contributor
Design
Promise to:
1. Do due diligence on getting up to speed on the materials/plans/specs and code you have so far and what "the team" wants to do.
2. "reviewing our current growth simulator / tree system / placeholder potential in the Grass block and compare it with the sort of algorithms you had in your old project, then throw some thoughts with snippets of pseudo code in a new thread in the dev forum".
3. Learn more about DF and DK and what is worth emulating in them. Downloaded DF (reminds me of a civilization-type game from around 1980 but is probably much more sophisticated).
No promises on timing other than keeping the promise clearly in mind.
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Thanks! I've made a thread for the topic for whenever any of us have updates :)

viewtopic.php?f=4&t=116

DF hint: Use the lazy newb pack setup and a texture pack - helps a LOT. Still has a learning curve akin to EVE Online :D
 

begla

Project Founder and Lead Developer
Contributor
Architecture
Logistics
Hey woodspeople! Glad to have someone joining the project who is going to put all his passion into the "green stuff" of the game. :D

Lots of stuff to read here... Just digging through all the posts I have missed the last couple of weeks.
 
Top