This sounds like it will be fascinating!
I’ll see whether I can try it out!
Posted June 1st
Animal behavior works pretty well, I've coded out all the basic movesets and the "random pattern" movegroup in general. I also implemented "move rotation" which has enabled a kind of "circle around something" pattern that all the animals are currently doing. It also paves the way for spin attacks.
I have some other more complicated systems I'm working on, but I'd rather get a skeleton of the whole combat system in place before I start adding more depth.
As far as hardcoded keys go, you can press [e]i[/e] to idle in place -- good way to see what animals are doing without moving (right now they're circling around you, which is neat).
So up next, I'll be setting up a basic combat system and then I'll start doing some basic player attacks and enemy attacks as well. Whenever those are done, I'll flesh them out a lot more and maybe start trying to randomly generate enemies and particularly battles (for the next few updates, battles are going to happen all the time in dimension 0).
The end goal is to have:
* Some interesting combat mechanics that makes the procedurally generated terrain actually mean something besides just blocking your path to resources.
* Interesting player combat that encourages players to buy and/or craft useful weapons.
I can then maybe actually get started on towns or resources.
I've got some basic combat in place now. Here's a good seed to test things:
* Each animal has a background color, which corresponds to a section on the right that records their health.
To turn on attacking mode, press caps lock. Now when you press a direction, you're attacking in that direction. There are also other things you can do here. To turn off attacking mode so you can move around again, press caps lock again.
If you press control and then a direction, you can attack diagonally:
* up -- up+right
* right -- right+down
* down -- down+left
* left -- left+up
Attacking mode will show your current weapon and its properties below the map, and will also give you a list of weapons on the left. While in attacking mode, you can press a number that corresponds to a weapon to change over to it (ex -- pressing 3 swaps over to the Staff Knock weapon).
Each weapon works a bit differently:
* Thrust -- This is a basic attack. Press one of the arrow keys (or use ctrl+arrow key for diagonal directions) and if there's an animal there, it'll hit it with 5 damage.
* Skewer -- This only does 3 damage, however it has a [y]Ram[/y] of 1, which means if there are two animals in a row, it'll hit both for 3 damage.
* Staff Knock -- This doesn't do any damage, but it has a [y]Knock[/y] of 3, which means it'll hit the animal back 3 spaces (provided there isn't anything solid there). This will also knock animals past other animals without issues.
* Shield Smash -- Similar to the Staff Knock (with a [y]Knock[/y] of 2 instead of 3), except it has a [y]Crush[/y] of 10, which means if there's a solid where you're knocking the animal to, it'll deal it 10 damage, which in this limited test run means it'll instantly kill it.
!!=sapphire Random stuff
* I have the system set so if an animal dies, a new one is created to replace it.
* I've got animals spawning closer to you so they don't get stuck in walls as easily.
* Animal movement is the clockwise rotation pattern I made earlier, and their speed is randomly set to between 1-3 (meaning you get 1-3 turns before they get a turn).
* Animals move immediately after you take an attack if their speed is 1, so knockbacks might look kinda weird.
* It might make more sense to test close-range combat in a seed that's less open -- this is a good seed for that:
* On the whole, I've got a pretty nice framework set up already so the other weapon types I've covered in other sections should be pretty easy to set up as well.
I added a few new weapons:
* Half Spin -- In weapons mode, when you press a direction, the attack affects everything within 180 degrees clockwise of that direction -- so for example if you press east (right arrow key), the attack will affect anything directly east, southeast, south, southwest or west.
* Full Spin -- Hits everything in all directions around you (north, northeast, east, southeast, south, southwest, west, northwest).
Both of the spin weapons have a knockback of 2 so it's easier to see their effects.
* Crossbow -- It'll hit anything within a range of 4 in that direction. Should be pretty intuitive, except for the lack of animations.
These properties are customizable already -- The "spin" property for example dictates how many other directions an attack will hit, and the crossbow's range can be tweaked as well.
I also made it so 9 animals are spawning at a time so these and older weapons are easier to test.
Animal colors are also fairly randomized -- I want to fix the text color thing before I make them universally randomized.
A couple more weapons changes:
* Changed the "Range" property to "Max Range" and added a "Min Range" property -- crossbows now have a min range of two which means you can't hit anything immediately next to you.
* Renamed the "Ram" property to "Pierce", and added it to ranged weapons like the crossbow.
* Added Stun Arrows -- these are a ranged weapon that don't do damage but stuns the animal for 10 turns (preventing movement and also attacks when those start happening)
* Added a Grappling Hook -- a ranged weapon that pulls an enemy 2 spaces closer (or whatever the "Pull" property is set to). It's basically just a negative knockback.
I don't really have much left at this point:
* I want to add a "hammer" weapon where you strike the ground and reverberate damage through it.
* Thrown weapons and thrown weapon techniques
* Grappling and leapfrogging type moves
* An ammo property for ranged weapons and axes
* I need to generalize all the weapon functions at some point so they're easier to work with.
* I want to set up some kind of combo system for damage bonuses or other perks that chains together basic moves.
Anything past that point is going to deal with what weapons actually *do* rather than how they *act* -- something I'll save until after I build a skeleton for animal combat and possibly magic attacks as well.
Is this a flash game? Or something that we can download?
My advice to people making a game: Keep it simple. Eliminate bloated concepts that have nothing to do with the core gameplay, then simplify the mechanics you have already come up with even further until the game is comprehensive and fun.
Many first-time game developers make a vast mistake in that they try to make an overly-complex game. It's just not worth it when you're one person... You've got to keep your sanity!
> Eliminate bloated concepts that have nothing to do with the core gameplay
Yeah I've done that a lot already. The core of this game is basically interacting with a big open world where everything is randomly generated -- but there's some actual depth and design here, for example:
* There's a lot of depth in the actual generation. I've already got the terrain to a point where I have no idea what the generation will do anymore. Ideally the whole game is like this -- algorithms so convoluted even I can't predict what will generate.
* Things are randomized, but they're also "palettized" -- meaning you get a limited range of things per area. Each dimension uses only 3-4 colors for example, but then there are also a limited amount of biomes, each with a limited amount of resources. You have to actually go to different dimensions to see different things. Similarly, enemies are extremely limited -- you get maybe 3-4 different types per dimension, which allows you to learn how to best interact with them. Towns don't contain every building type -- sometimes there won't be a Smith or an Aviary or whatever and you'll have to go to a different town to get what you need.
I'm trying to emphasize fun over grinding / inventory management / other traps these kinds of games tend to fall into.
I should probably check it out, send you some feedback.
It's rough. Very very rough.
There shouldn't be any game-breaking bugs, but the user input/interface is the opposite of polished and most features simply don't exist yet, including saving. Don't get attached to anything!
That said, it's come a long way from this:
So I have the townsfolk knowledge prototype working:
* Press up, down, left and right to go north, south, west or east respectively. This will send you to a different town.
* Ask anyone in the town about anything whatsoever and they'll follow the response tree I outlined earlier in this thread.
* I removed the town knowledge thing because that would have probably made things too complicated. I also tweaked things a bit so there's always at least one person in a town who knows how to find people.
Here's a little mini-quest I did to find someone who knew about "Dooku":
I did a *bunch* of stuff today.
Started out making a colors object so I could do something simple that needed to be done -- ended up creating a bunch of really cool effects instead.
So, some changes:
* There's a lot of lag right now. I need to address that.
* You can press b to go down a cave level. I've been using this for testing purposes, but it won't be around forever.
I've implemented water. Water generates a bit differently as you move around -- it's a kind of "shimmering" effect, and it's responsible for a lot of lag so I need to optimize it.
* If you're trying to move through water, you're not lagging out though -- it takes two moves to get through water. This is one of the things that can change by equipping different Armor.
* Water is a different color on each dimension.
* Caves now look like this. This keeps the view window from shrinking and it also fixes a big pile of bugs. In the future you'll have more of a gradient where you can see some things outside the view window but they'll be darker or you can maybe see mobs/cave holes. These systems tie into different properties of Torches.
Cave generation is also a lot different -- it's more actually cave-like now and it's a lot easier to find cave holes.
There's also lava instead of water. Lava is similar to water, except it sometimes isn't where it appears to be, and sometimes is where it doesn't appear to be. This kind of effect is known as a "quantum effect" and it's at least mild with lava.
In the final game though, touching lava deals damage. Since lava sometimes isn't where you think it is, you have to be extra careful around it.
I removed Troves, replacing them with "Quantum Dimensions" -- these have an interesting cyclical terrain generation pattern and also everything flickers with the quantum effect including the ground you're standing on, resources, anything you build, etc.
I also removed Cities, replacing them with "Entropic Dimensions". These again have a different terrain generation pattern and they also have something kinda random instead of water.
Okay, the lag isn't related to water/quantum effects at all. I'll go ahead and fix it then.
Also something I didn't add above:
* I fixed the palette generation so that the solid color is always at maximum contrast of the other two colors.
* Same deal with cave solid colors.
This was the original point of the colors object, but somehow that turned into making water and quantum effects.
Some nice changes here:
* Currency has been renamed to "Energy", and the names of everything have been changed, to "Platonic Solids", "Ajna", "Flash", "Joules" and "D-Branes". Probably pretty close to what will be in the final game.
If you press ] , you can switch between energy discoveries and materials discoveries, and what you pick up will also change accordingly.
The inventory is now categorized and you can switch between different categories. This also sometimes completely breaks the game and looks pretty awful overall. It needs work.
If you press f and a direction and what's in that direction is water, you'll fish in the pond there. All you're getting right now is JSON data.
Ponds are either:
* A big mass of water between 9-225 connected tiles
* If the mass of water is too big, it'll be based on 15x15 chunks instead.
Dimensions generate a limited amount of fish, and individual pools will pull out a subset of those, with some weight attached to them (to determine how likely that fish is to appear).
Tomorrow I'll probably work on the actual basic fishing mechanic, which will work something like this:
* You press f and a direction and wait, between 1-10 seconds or so (depending on which fish catches the line).
* The fish are weighted, so like if you have a "Grouper" with a weight of 5, it's 5x more likely to show up than a fish with a weight of 1.
* Each fish has a certain chance of catching it. This is based on the fish, and it's universal for the entire universe. Similarly, each fish has a wait time associated with it (or that might be based more on the pool / pool size).
* You can switch baits. There are several different bait classes, and each fish has a bait class that they prefer. The bait class will make that fish more likely to appear.
* The individual bait might make the fish easier to catch, or harder, or might decrease or increase the wait time. It'll tie into whatever other properties I add as well.
* Once you catch a fish, it'll go into your inventory.
* In the final game there will be fishing rod tiers but I haven't quite worked out how that works yet.
Fishing basically works 100% at this point, other than some random features I can't really add until I flesh out the resources system more.
* Remember, press ] to switch to materials discoveries. At the moment, all resources are bait, which makes things easier. You also get 1-5 of that specific bait, which helps as well.
* Press F and a direction. If what you pointed towards is water, it'll pull up the Fishing menu on the left.
* Lakes are named, for the sake of sanity mostly. At the moment they're just using the town name algorithm and a body of water title.
* You can change baits. It'll indicate the baits you have in your inventory and the amount of each. At the moment, there are three bait types, those being insects (like "Hornbeetle"), worms (like "Silk Larva"), and fish (half the fish you catch can become bait themselves).
* If you have no bait, it'll tell you as much and you won't be able to fish.
* You can also change your fishing speed. Fast will happen pretty much instantly, and will always consume bait, whereas Steady will take 1-10 seconds (depending on the fish) and might let you keep the bait afterwards (currently, a 50% chance -- in the future it'll be based on the Rod). Fast fishing is better for grinding, whereas Steady is better if you want to preserve rare bait.
* The fish in each pool are weighted -- some are more likely to appear than others.
* When you hook a fish, there's a chance you'll catch it or not. This number is currently indicated in the fishing status message area. If the fish has a preference for the bait type you have selected (Insects, Worms or Fish), it'll raise your chances a bit based on the actual bait. You can see the number in the fishing status area change accordingly.
* If you catch a fish, it'll go into your inventory.
* Below all that is some information about fishing -- you get a list of all the fish that appear in the pool you're fishing in, how many you've discovered out of the amount in the pool, as well as the amount you've discovered in the dimension as a whole. This, along with similar upcoming systems, will ensure that you're not fishing blind.
!!=sapphire Things that will happen later
* The fishing rod itself determines the likelihood of using bait in steady fishing.
* You'll be able to craft Lures to make fish appear more often. Lures are crafted from materials specific to the dimension the fish appears in. Somewhere in your fishing menu (or hyperlinked from it), you'll get the crafting recipe, it just won't specify [i]where[/i] the materials are -- you have to then explore / ask around in towns / send out birds/bats to find them.
* You'll be able to see what different baits do with different fish, as well as get more detailed information about each fish.
* There will be a kind of progressive tier system with fish/rods. I haven't quite worked out the details here yet -- it'll probably have to do with using fish as bait for other fish though.
* Obviously, more interface polish. Everything is rough as hell right now because I'm just trying to roll these features out.
I also got torches working.
When you're in a cave, press t to cycle between different torch types. Currently their properties are:
* The brightness of the space immediately around you (this isn't ever going to be dark, but it varies)
* The size of the space immediately around you that you can see perfectly
* The size of the "glow", or area outside the bright area. The glow will taper off over its distance.
* The strength of the "glow" -- higher values mean the glow will be brighter, though still not approaching the strength of the space immediately around you.
* Whether the stuff inside the glow has color saturation or not. Having it is pretty useful for distinguishing lava, for example.
!!=ruby Future updates
* There should be properties for seeing cave holes inside the glow, seeing enemies or vague outline of them, and probably resources as well. There will also be a more general property for how many turns the torch lasts before you have to replace it.
* Obviously, the torch crafting system itself -- wood, fiber and oil are probably the basic ingredients, but the materials you use for each of those things determines what the properties of the torch actually are. Rendered boar fat might give you a bigger visible area but no glow, while Angelfish Oil gives you a big glow but a very small visible area. You could then use the free crafting system to combine the two with the appropriate catalyst and get an oil type that makes torches have both a bigger visible area and a large glow.
Well I hit the first couple steps to being able to generate towns:
I can adjust all the variables seen here as well as gap thicknesses individually. I've also got a nice little framework now for constructing other things. Additionally, I've got a system in place where everything I'm generating like this can be removed all at once -- useful for offloading stuff when you get far enough away from towns.
Anyway, this update allows me to construct both the basic layout of towns (seen here with four thick walls with gaps in them) and houses (1-tile thick walls, one gap somewhere for a door) to fill them.
My next step is to build a function that will fill some space with some set of structures. For now that'll just fill towns with houses, but when I flesh this thing out you'll have more "districts" to fill and there will probably be stuff other than houses, and house construction might be different as well. This update also paves the way for dungeons -- these were planned but didn't want to promise anything unless I could arbitrarily create rooms easily which I apparently can.
So, I'll probably flesh towns out some more tomorrow. I seem to be delving into each part of the game a little bit rather than fleshing out whole features at once. It's probably better this way.
Town generation is basically working at this point.
Basically with one easy function I can generate a town (including walls and entrances) as well as fill the space inside it.
These house entrances also "work" -- in the sense that they move you either inside or outside the house and know what you're doing. When I tie this in with the rest of the framework it'll mean that houses get generated as you go inside and get offloaded when you exit. It'll also pave the way for multi-floor houses, and as an added bonus the house shape doesn't actually get stored anywhere, so if you have weird house shapes the system will just know and generate stuff inside accordingly.
There's kind of a lot of framework to set up here and a lot of work to be done in general in a lot of different directions. Since shop stuff is heavily heavily reliant on resources, I'll probably take a break and work on those a bit more, or maybe go back to combat. My IRL is probably going to go nuts soon in one way or another so there might not be many updates after tonight.
House interiors now work:
All I'm doing with the interior of houses right now is rendering random floor tiles and staircases, but the framework is all there:
* Houses don't load until you enter it
* Houses unload when you exit it
* Houses will generate staircases if the house has multiple levels -- ^ will go up a level and v will go down a level.
* Stepping on either staircase type will take you up or down a level respectively, and will regenerate the interior of the house accordingly. If you're not on the first floor you also can't exit out the door anymore (for obvious reasons).
* Staircases will change types, so the same staircase is used for both going up and going down.
* The floors are procedurally generated based on the house and floor so you get the same thing every time you enter the house, despite the data not actually being stored anywhere.
There's a lot of big under-the-hood updates here that are making all this possible, and have made it very very easy to render actual things and people inside houses, which I might do next (or switch over to resources).
I've split these threads apart so that all the long complicated notes are going in here:
While anything related to the actual development of the actual game is here.
So, a TON of updates to the actual game today:
Shops now spawn inside houses when you enter them. You just go up to the @ and touch it and it'll pop open the shops menu:
You can either buy or sell stuff in specific categories. At the moment I have two shopkeepers:
* An angler, who sells bait and buys fish and bait from you.
* A lumberjack who buys and sells branches, wood and fiber.
You click "Buy" or "Sell" to move over to that tab. The amount of money you have changes automatically, and you get a bit of a message too. You'll also get an error message if you don't have enough money.
Prices work much the same way they did in the old alpha demo -- they're the same regardless of where you get the item -- silk larva are just *worth* 15 ajna, and that'll be true regardless of which shopkeeper you go to.
Shopkeepers can have a markup -- this guy has a 150% markup so it costs more to buy his wares than they're actually worth.
!!=sapphire Materials Upgrade
I added a *bunch* of new materials and materials names. I also refined my notes quite a bit, the plants you can collect are:
* Branches, which you can make tools and weapons from
* Wood, which you can make furniture and specialized wooden stuff from
* Leaves, which you can make basic arrows, food and camo armor from.
* Fiber, which lets you make rope and other basic textiles
* Fruit/Nuts/Beans/Berries -- A type of food, bait, and could also be used for animal trapping
* Insects/Worms -- These are now in the same category. They're a secondary type of bait which fish prefer more often than they do fruit.
Branches, Wood and Fruit/Nuts/Beans/Berries all come from the same kind of tree, and each dimension has a limited amount of trees, which you can see above. There are duplicates at the moment and I do need to do some more work there (like ensuring that every dimension has at least one source of branches and fiber).
While everything has some randomized name that actually sounds like the thing it's supposed to be, at the moment the only names I'm 100% happy with are the Trees and Fiber plants -- the leaves are chosen from real-world leaf names and the insects/larvae are lacking. I'll fix these issues at some point.
I got a very very basic Crafting system set up. It looks absolutely horrible (like the rest of the interface really) and I don't have any failsafes set up yet. Despite this, it works good.
I've got it on the left for now. At some point all the interaction stuff is going on the right and also the keyboard will be rebound to wasd instead of the arrrow keys -- that'll be disorienting as hell. Anyway, you click on the recipe category.
The back button works like you'd expect it to. This menu shows you all the recipes in the category and the ingredients (and amounts) needed.
When you click "Craft" you'll be brought to a menu that lets you pick [i]which[/i] ingredients to use in the crafting recipe. Clicking craft will then subtract the appropriate amount of each item and stick the new item in your inventory.
Obviously, there's still a lot of work to be done here, but it's good progress. For my next project I'm going to set up a test recipe to create torches from maybe branches and fish and then tie that into the torches system to try to get the properties aspect of the game working.
!!!= Some updates:
* I have a basic "alchemy" system set up. When you craft, say, a torch (from fish and branches atm), it takes on properties based on the procedurally-generated properties of both the fish and branch type. The names are also drawn from the names of the base materials, with some slight alterations (like putting vowels between consonants).
* The crafting system accepts material names (like "string") in addition to material categories (like "branches"). I also have a system in place for making crafting do things other than adding stuff to your inventory -- that'll be useful once I start getting Tools (like the saw, pickaxe, etc) in place.
* I have a very very basic "Equipment" system set up -- I've hooked this into the torch system, so you're able to craft a torch out of branches/fish of any type and then equip it in caves. This is basically how the game actually works, except the properties should be somewhat less random (basing it on "work" would be better).
* Rocks are working. The names are drawn from actual rock names and pared down to four types -- "Pebbled", "Sharp", "Broad" and "Smooth".
* Bit of an aesthetic/UX update here -- materials have a background color corresponding to their material type. The actual colors also stand out a bit more and there's more padding.
* I went ahead and moved the information stuff to the left and the interaction stuff to the right.
* In caves, metals are generating. This isn't in its final form yet by any means, but the names are at least happening right. While actual metal names sometimes generate, I've got it configured to generate things that *sound* like metals. The quality here will improve as I adjust language parameters over time, but it's pretty good already.
At this point in the project I have a good foundation for all aspects of the game. I'm going to start adding more depth, building towards my notes here (or whatever I simplify or alter them into).
** I got the final two weapon types installed -- a "Grapple Glove" that lets you take an adjacent enemy and throw it to the other side of you some number of spaces (basically equivalent to -2 or more knockback) and a "Vaulting Gauntlet" that lets you leapfrog over enemies, possibly doing them damage (or other effects).
!!=sapphire Weapon Generalization
This is a huge update. Basically, I generalized *all* of my weapons code, which allows me to mix and match weapons effects to any weapon type. Here's a list of what *any* weapon type can do now:
* Knock enemies back a certain amount
* Pull enemies closer (I guess only really useful for ranged weapons)
* Crush enemies against walls for crush damage
* Stun enemies for a certain amount of turns
* Grapple and throw them behind you (this is pretty interesting to use with a ranged weapon -- it basically displaces a ranged enemy behind you)
* Makes the attack pierce through multiple enemies. Originally this was used exclusively with thrusts and ranged weapons, but now you can do it with slashes too which is pretty cool.
* Lock *all* enemies down after the attack. Equivalent to stunning them all -- this is pretty useful for testing, and I could see techniques that let you grapple / leapfrog around a few times before the enemies get a move.
* An effect called "recoil" that moves *you* back some number of spaces.
There's a lot of possibilities here. I'm going to start playing with it and maybe randomizing weapons a bit.
!!=sapphire Other updates
* Any property in the above set (as well as damage) can be randomized in a range -- you can have an attack that has a 0-2 recoil for example, or might knock enemies back some arbitrary amount. At some point I'm going to expand the probability functions and incorporate it here so you get things like a pierce chance, a slight chance of a critical hit, etc.
* I fixed a bug where enemies would occasionally not despawn after you killed them.
* Enemies are showing up as the number that corresponds to them for now, just so I can keep track of things better.
!!=gold Next update
I still have a bit to do here, but it's really just polishing/bugfixing at this point, so my next project is revamping the controls. I'll keep the caps lock weapon equipment system for now (very useful for testing purposes) but in the next update you'll be able to:
* Move with WASD. I'll keep the arrow keys bound too.
* Let you do thrusts by just touching the enemy.
* Use the mouse for directional attacks -- basically whatever cardinal/diagonal direction it is from the player avatar is the direction you'll launch an attack.
* Have a highlight on the tile where you're going to launch an attack, and if you're slashing, indicate the slash arc as well.
A bunch of updates here:
* Movement can now be done via WASD. You can move with the arrow keys too, but this enables you to do other stuff with the mouse.
* The mouse position relative to the player determines the direction you're attacking. It doesn't have to be exactly one tile away -- any distance in the right direction and the highlight will change accordingly.
* Click and you'll attack with your currently equipped weapon.
Overall, way way easier than the old system (and easier to see what you're actually doing too).
This system works with arc attacks as well -- here I have my mouse somewhere to the south and so there's a whole area surrounding me that my attack will hit. If I click, the attack will affect enemies 6, 7, and 1.
Similarly, this system works with ranged attacks -- in this case you get to see the range you can hit, which in this case is between 2-7 spaces away.
I've played with the system a lot, and it's quite easy to use and inuitive. It would be nice to have more feedback (like knowing when you're going to hit walls or knowing when you've hit an enemy), but overall it's a pretty good prototype.
I've started the process for thrown weapons. Haven't actually built anything out yet (there's a loooot of hooks involved in this, I haven't even figured out which ones are vital and which ones aren't yet).
I tried several different "mouse sensitivity" options and honestly, having it be 1:1 with the actual tile feels the best. I might be able to make it some kind of option though -- I could see players wanting to have more precision or more freedom.
All throwing weapon techniques work, with the exception of shadow weapons:
* If you throw a weapon and it hits an enemy, it gets "sticked" and gets a border around it which contrasts with the color of the enemy. It can also do damage, knock the enemy back, stun them or whatever else another weapon could do (throw weapons with piercing damage are pretty neat).
* If you throw a weapon and it hits the ground, you'll get a ( symbol with a black background.
!!=ruby Ground Effects and Techniques
"Effects" are things that happen automatically, while "Techniques" are things you perform as a separate weapon move.
* A "reverb" or "reverb stun" effect will deal damage or stun enemies adjacent to the thrown weapon as it hits the ground.
* A "tug" technique will pull the weapon towards you.
* A "jerk" technique will pull *you* towards the weapon.
* A "fragment" technique will make the weapon deal fragment damage or fragment stun, a bit like a controllable time-delayed reverb effect. It should eventually return the weapon to your inventory as well.
!!=ruby Sticked enemy techniques
* A "yank" technique will pull the enemy towards you.
* A "draw" technique will pull *you* towards the enemy.
!!=ruby Miscellaneous techniques
* A "recall" technique will return all thrown weapons, whether they're in sticked enemies or on the ground.
!!=ruby Multiple effects
If you have multiple weapons on the ground or sticked in enemies, then your techniques will affect *all* instances of that weapon -- yanks will pull all sticked enemies towards you, draws will draw you to one enemy and then the next enemy, etc -- if you stick a whole cluster and move far away a good draw might pull you all the way there. Jerks seem to pull you somewhere in between the line that the two weapons draw, or the shape if you throw more than two.
!!=ruby Eventual goals
* Shadow weapons and thrown weapon limits. This ties in too much with the equipment system though, so I'll need to incorporate weapons there first.
* Stepping on a thrown weapon will pick it back up, touching an enemy with a sticked weapon will pick it back up.
* Tugs/jerks/yanks/draws should optionally cause damage. This will require some work around enemies that get blocked by other enemies though -- at the moment you just *can't* pull them if there's an enemy there -- eventually there should be a kind of proto-physics engine, where knockback and pulls can make an enemy hit another enemy, and make them move, which can hit other enemies, etc. Will take some work in figuring out where they go if there's solids and stuff though.
I took a break from combat to work on something else.
I've added "biomes" to the game -- these are basically sub-dimensions with handcrafted terrain generation and color palettes. There's still some color variation and they're still infinite in size. They look so good I might rethink the way normal dimensions are generating.
!!=sapphire Water Biome
!!=brown Earth Biome
!!=ruby Fire Biome
!!=cyan Ice Biome
!!=green Wood Biome
!!=purple Wind Biome
The plan here is to make entrances to these biomes appear alongside caves. Each dimension has one of these "elements" associated with it, which influences which of these entrances will appear.
In order to enter a Biome you have to collect something in caves (probably quartz and metal). The stuff you collect for this isn't dimension-specific, and it opens up that biome portal globally -- so you only ever need to craft one Wood Portal for example to access Wood Biome entrances from then on.
A lot of enemies in the game will be elemental, as will the combat system. I'm still working on the details of that. Biomes will exclusively spawn enemies of that element, while regular dimensions will have a mix along with "normal" enemies.
While you can still find Crystals in deep caves, you'll find a lot more in the biome associated with their element. Biomes will also render some different variations on basic resources as well -- like wood biomes will be heavy on plant products.
Unlike Caves or Towns, you'll be able to build bases in Biomes and connect them with your existing base.
Biomes are where Deep Castles will be. In order to enter a deep castle you have to collect stuff from the biome / go to places in the biome / craft something from biome resources. Haven't figured out what the progression system here is yet.
So your progression system now looks like this:
* 1. Collect surface resources
* 2. Fish and fight for animal resources
* 3. Build things for exploring caves
* 4. Explore caves for metal and quartz
* 5. Build biome portals
* 6. Explore biomes for crystals and some way of unlocking deep castles
* 7. Explore deep castles
!!= Towns Update
There are now infinite towns and they're generating/offloading automatically.
The wall size / entrance size / house size / house margin also varies between towns. Town size also varies a lot. Not a huge update, but is a little bit of variety at least.
Provided you're in dimension 0 (towns are specific to it right now), you can press ` twice to go to the entrance of the town in whatever chunk of the world you're in. In-game there will be an item(s) and a spell(s) for this eventually.
Basically, every 500x500 chunk of the world has one town between 25-100 tiles in size. This town will generate somewhere within that chunk, except for a 10x10 space inside the chunk. To save space, the town doesn't actually generate until you get close to it. It'll also offload as you get further away from it.
This isn't the final draft for town placement, but it'll work good for now.
The last house inside a town (whatever is bottom-rightmost) will have a "Travel shop". This will show distances to adjacent towns and let you teleport to their entrances for a fee. This also isn't the final draft, but it'll work for now.
The distances are based on each tile being 1m. Interestingly, that puts the size of each dimension at 0.95 light-years, which is totally accidental.
There are a couple bugs that I need to fix (and I need to make towns work on other dimensions), but everything is surprisingly pretty solid otherwise.
I've been working on Provinces:
Not a flawless reconstruction, but it's pretty close and I'm pretty pleased with the results.
Basically what you're looking at here is a set of province maps, which would individually look like this:
This map shows where towns, cities and nexuses are and the travel paths between them:
* Black lines are for local travel and are the cheapest.
* Cyan lines are for "edge" travel and are a bit more expensive, but connect things around the edge so can be pretty cost-effective sometimes.
* Red lines connect towns to nearby cities if they aren't already connected to one. More expensive, but cities tend to be well-connected.
* Gray lines connect cities to nexuses. The most expensive, but sometimes the best way to get to the other side of the map.
This hasn't actually been tied into town generation yet, that will be my next project.
Provinces also dictate various other things:
* Where Guild halls are.
* Where non-town locations spawn.
* Probably something related to resource generation, since I'm moving away from the dimension-specific layout.
As I pointed out in my Notes post, I've been working on a new generation algorithm to arrange houses better, build dungeons and more. Below is my first attempt at generating "hallways":
While there's still a lot of work and evidently some bugs, I'm pretty happy with how flexible the hallway system is already -- it basically just creates a stair-like pattern between two points with whatever amount of granularity you want.
I'm also quite happy with the generation algorithm in general -- I've implemented even spacing with as much variation as you want, which looks really good for houses and should be useful for dungeons. Meanwhile, it's flexible enough to make ruins or other things with it, perhaps even random structures if I generalize it enough. I don't think I'll have any problem coming up with unique things to find now.
what’s your favorite thing you’ve coded so far? i tinker around with unity sometimes, and i love figuring out how to do something. it’s like solving a puzzle.
Posted August 3rd
I've reached a major milestone with the "ruins" project -- basically I can now generate all the different types of ruins with a lot of variety all around:
!!=gold Mazes (aka "Ruins")
!!=gold Miscellaneous structures
!!!=orange What's done and what isn't done
In addition to generating these, I've generalized the loading object so I can easily hook these back in when I know where I'm putting them. There's also a templating system, since they're all running on the same engine.
I need to do some more work with coloring them -- I can change colors of whatever pretty easily but this code is hardcoded at the moment.
I also haven't put anything in them yet -- each of the larger shapes should be a kind of "room" potentially (on dungeons the large shapes are all rooms). This ties a lot into the loot / NPC / combat systems. I also want to have a kind of progressive key/door system, if it's not too much work. (dungeons at least should be easy here)
Dungeons in particular should generate multiple floors in their own space. Same deal with mines probably. Nothing here has been done, but the hooks are there (it's what's happening with biomes).
Lastly, nothing is actually generating in the world yet. This ties too much into the Provinces system and how ruins/etc are distributed across a province.
Edited August 13th
> what’s your favorite thing you’ve coded so far?
The ruin generation stuff (see my post above) was a pretty big achievement, particularly given how flexible it is.
Overall, the entire project has kinda been like this -- there's a ton of work to set up the foundations but I've ended up with a really interesting engine to play around with.
The whole thing's built entirely from scratch, so the work has been very progressive -- it's gotten easier and easier over time to build new features.
Posted August 13th
It's been a while since I've worked on this project. Going to start updating it more regularly.
Today's update is pretty big.
!!=purple House Interiors
House interiors now generate walls and furniture along with shopkeepers.
!!=green Items Update / Furniture
Furniture containers work how you'd expect them to -- you can take items from them or even take all. I also did a massive items update so that each piece of furniture has almost all of the items it's supposed to have (detailed in my Notes post), as well as a bunch of work in actually generating what the names are (though I'm not done yet here -- it'll be more interesting in the final product).
I fleshed out all the Shop types as well -- at the moment everything but the Trapper and Butcher shops are working and tested, including composite shops like the Zoo.
!!=sapphire Moving forward
There are quite a few bugs and some things that haven't been 100% fleshed out yet. Furniture placement is also quite random, and interior walls sometimes block off pathways. Shop selling and Fast Travel also appear to be broken. These are things I'm going to be fixing moving forward. My goal is to create a kind of "Thief v0" update -- where you can at the very least take items from houses and then sell them to various shops, though there's no consequences to anything and nothing's particularly hard.
After that, I'll aim more towards an actual thief v1 update -- lockpicking, NPC movement, and the caught system. After that I'll probably work pretty heavily on the Provinces/town generation systems to make towns more interesting / more accessible, unless I want to switch gears to something else for a while.