Now a dungeon can have any number of subdungeons (which can, in turn, have subdungeons). Basically, a tree of graphs. What do you mean thatâs disgusting?
There are still a few edge cases I need to clean up where generating a subdungeon fails due to insufficient space (i.e. it gets pinned inside its parent dungeon or between two different dungeons).
Once I get those under wraps, I can move on to the really fun part!
Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
â Live Streamingâ Interactive Chatâ Private Showsâ HD Quality
Anya is LIVE right now
FREE
Free to watch ⢠No registration required ⢠HD streaming
Took a break from my other side project for Sketchtroid to work on something else: dungeon generation for the infinite gamemode.
Above are three 100 âroomâ levels generated using my current algorithm (colored lines are traversable paths, the green square is the start, and the red one is the end). The generation itself if purposefully lengthened so that the algorithm can be seen in action. Iâm not going to talk about whatâs going on under the hood quite yet; thereâre still some major modifications that need to be made.
Until then, here are some 2000 room levels I generated.
Iâm gonna go ahead and ignore the fact that I havenât posted here in awhile.
Wait. Shit.
Above weâve got the new-and-improved custom CLI I made specifically for Sketchtroid. The old version used Unityâs fancy UI system, which in nice, but over-complicated the GUI for this specific application. So I migrated everything over to the IMGUI system Unity also provides, which made the whole console much more lightweight. The Console has also been slowly accruing commands and features as I find I need them (e.g. I just added a channel system that allows me to split up logging information nâ the like).
And hereâs a super early version of status effect indicators.
And the ability select menu.
Oh, and thereâs these things too, theyâre great. Theyâre the foundation Iâll be building all my switches, pressure plates, doors, moving walls, and lots of other fun stuff on. Ye got yer AND gates nâ yer OR gates, which can be inverted into NAND and NOR respectively. Then ye gotchya delay nodes nâ yer clocks nâ sources (always on) nâ toggles nâ leafs (which can be inverted to make a NOR). Oh, and donâtchya ferget yer XOR nâ XNOR gates, those are essential.
The next month and a half or so is looking to be pretty open for me to work on Sketchtroid, so expect more from me.
Still chipping away at things here and there. I ran into a few issues with what I was planning to do next that have forced me to rethink how I want to approach it in the future. While Iâve been mulling over that I started to work on the HUD, specifically these fancy little abilities status things. The color of the cooldown bar is determined by the currently equipped damage type.
Hm... this post is feelinâ a little short. Take some of this art off my hands.
Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
â Live Streamingâ Interactive Chatâ Private Showsâ HD Quality
Anya is LIVE right now
FREE
Free to watch ⢠No registration required ⢠HD streaming
Not a whole lot of functionality to show off today; instead, Iâve got a load of art assets I drew up. Drew down? Drew. I drew them. Yea.
Now, these are organized into sets here, but, really, none of these parts necessarily belong with one another. Each part (cone, engine, wings) corresponds to an ability the player has equipped (with the core set, the default, corresponding to an absence of abilities). All the abilities can be swapped out for another at any time. Often, different situations will require that the player do so in order to progress.
Some of this art is definitely going to be redone at some point; the tier 2 cone and the tier 3 wings really irk me. But Iâm kinda sprinting to a demo-able state, so Iâve just noted them as things Iâd like to revisit once I hit that point.
As a side note, if youâd like to keep up to date on my progress, check out the github for this project. I keep it more or less up-to-date.
Today weâve got a New Game menu, with all the relevant options for the primary game mode in and functional, as well as a little flair for the player in the form of a little icon that displays their current damage type.
Both of these are technically in-progress. The New Game menu has a section for a planned âInfiniteâ game mode, which will be a kind of rogue-lite, make-it-as-far-as-you-can thing. And the flair will eventually include all the visual parts of the player. The wings, cone (front), and engine (back) will change depending on the abilities the player has equipped.
Which means lots more art tomorrow. Which isnât a bad thing. After all...
Still chipping away at stuff for Sketchtroid. Hereâre some gifs of the beginnings of a savepoint and the Load Game menu (with some art for the difficulties thrown in for free).
There might be a lot more of these smaller posts in the pipeline over the next couple of days; keep an eye out!
Till next time!
EDIT:
Apparently Tumblr hates all my gifs, so thereâre now on Imgur for your viewing pleasure. 1Â 2
Tumblr doesn't like this gif, so you get to visit Imgur to see it
So Iâve been working on and off for the past couple months on Sketchtroid, a top-down arcade-y metroidvania, and Iâve finally gotten to the point where I feel like Iâve got semi-interesting things to show off.
The obvious thing demonstrated by the Imgur gif is scene transitioning, which, yea took a bit to get working properly, but itâs more of a representative of all the stuff that is happening behind the scenes.
And this is that super-fancy, behind-the-scenes stuff. Â See, I wanted some data persistence in Sketchtroid. Â Having enemies respawn every time a scene is reloaded gets old really fast, so I made a system that tracks relevent data and saves/loads it as needed. Â Doing so took quite a bit more work than I initially thought, but Iâm really proud of what I ended up with.
I canât promise regular updates on this project, but Iâll try to post whenever I cook up something for it that I think is cool.
I fell off the map for a bit again; I ended up being much more busy than I could have expected, and, as a result, Vagus took a back seat.
While I wasnât working on Vagus directly, I was keeping it in the back of my mind. Â I tried to solve some of the glaring problems I was running into, but the only viable solution I found required that I start again from scratch. Â As much as I like the idea behind Vagus, I really didnât feel like restarting the whole thing. Â Iâll most likely return to it eventually, but for now Iâve decided to move on.
So for the past month and a half or so, Iâve been planning out the project that I started just last week: Sketchtroid (Itâs a placeholder name).  Sketchtroid is a top-down arcade-y metroidvania with a âsketchyâ artstyle (basically, I plan in hand-drawing everything with a tablet).  I wonât go too far into design at the mo.  Each mechanic and design decision Iâve made will be covered as I implement it.  For a general roadmap of the project, check out the repository on GitHub.
As of now, Iâm working on the code relevant to the core combat of the game: Entities, Abilities, Statuses, Bullets, etc. Â I plan on discussing each part of the system, as well as the system as a whole, as I build it. Â Some parts, like Statuses, Abilities, and a small class called a Stat, are already done, so expect posts on those in the coming days. Â The entire combat system should be done within the week (should be).
After I have the combat core done, posts should get considerably more interesting as I move out of pure code.
Iâll be back tomorrow to talk about the Stat class!
Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
â Live Streamingâ Interactive Chatâ Private Showsâ HD Quality
Anya is LIVE right now
FREE
Free to watch ⢠No registration required ⢠HD streaming
Development has been slow lately. Â A mix of work on different things, and the volume of the work that needs to be done on this project, has slowed the progress Iâve been making drastically. Â Last week I didnât really have much of substance to show so I forewent posting. Â This could become a pattern. Â However, I may have other gamedev-related things to post to fill in the gaps, so Iâm sure itâll be fine.
Anyway, whatâs this? Â Well, this is quite a few things; canât you be more specific? Â First of all, thereâs the HUD, which is only briefly featured in the above gif. Â It displays info regarding the current round, the score, as well as the playerâs heath, shields, and abilities. Â All good stuff. Â The âPauseâ menu (it doesnât actually pause the game, though it may include functionality to request a pause later on) allows for things that one might expect of a pause menu, but it has the added bonus of a âstrategic viewâ. Â Right now, the strategic view isnât much more than what the gif shows, a top-down view of the field that can be panned around. Â When finished, however, the strategic view will show detailed information regarding the capturable nodes, including their names, and the team to which they belong. Â Also, at the end of each round, players will be able to enter the strategic view to re-position their nodes.
I also put in these little pop-up dialog boxes.
So yea, I still have a lot to do to square away the strategic view, but once I have it done, most of the technically demanding features of Vagusâs primary game mode will be done.
Hopefully Iâll have some cool stuff to show off next week. Â Until then!
Teeeeechnically itâs Saturday here as Iâm writing up this post, so Iâm a little off schedule, but eh, close enough.
This week I got something working thatâs worth showing off: the Class Edit menu (featuring some placeholder art from Game-icons.net). Â In Vagus, Player customization is centered around sets of passives that change stats, add active abilities, and offer unique behaviors. Â For clarity (and to help me brainstorm), passives are sorted into sets of four called classes. Â The above gif features the Surveyor class, which is centered around passively placed markers to which the player can teleport. Â I have a few other classes laid out, like the Defender, Imperialist, and Daredevil. Â Each class is built to work well as a full set, but the idea is to have a a large-ish pool of passives that players can mix and match to suit their preferred playstyle. Â It should be noted, though, that every 4th passive of a class is locked if the 1st passive of the same set is not equipped (4th passives tend to be the strongest).
Right now, though, these passives donât do anything in-game. Â All Iâve got so far is the UI pictured above and saving/loading functionality. Â I started on syncing playersâ passive data over the network, but thatâs not quite done yet.
Once Iâve got that squared away, Iâll probably move on to the actual game, seeing as I now have all the data I need to set up each player. Â With all the UI and backend stuff Iâve been working on, Iâm looking forward to doing some actual gameplay programming.
I return from my almost two month long hiatus to reveal Vagus (or The Vagus Project)!  Truth be told, there isnât much to show off yet, even though Iâve been easing into the project over the past few weeks.  Despite that, Vagus has a much more complex design in comparison to my last project Tytans II, so I have plenty to yap about in this preliminary post.
Tytans IIÂ has taken an indefinite back-burner position. Â I learned a lot about Unity and C# though it, which was my original intention when I started the project. Â Given that it served its purpose, I donât really regret moving on before polishing it into a final product.
Now that Iâve addressed that, letâs talk about Vagus, a competitive multiplayer game that takes inspiration from a Japanese card game.
Vagus really started out as a kind of spaceship arena-shooter with an emphasis on high inertia.  The special part of the idea was the high inertia; really, the whole idea kinda revolved around it.  My first idea for a map included a singularity in the center that players would use to swing themselves around the arena.  High emphasis on deliberate movement.
The more I played with the idea, though, the more annoying the idea sounded. Â Players wouldnât be able to react quickly. Â New players would most likely just orbit the center opposite of each other and take pot shots. Â Close fly-bys would be fleeting, or would result in a DPS race as the two players just kinda unload on each other.
So I swapped out high-inertia movement for a proper game rule set, one that I knew facilitated quick, but strategic game play.  Iâm fortunate to have learned about Karuta during my hiatus.  That said, Karuta canât really be played on a computer.  The physical aspects of playing are to important to the game.  Also, the rules call for a 15 minute memorization period, which wouldnât fly in a video game.  Oh, and players need to able to speak Japanese; and, to play competitively, players must memorize 100 separate poems.
I could go on.
Nevertheless, I stuck with the idea of integrating Karuta into my existing game idea. Â The above is a gaudy representation of the result.
Players still control spaceships, but the map and the objectives are very different. Â Each player has territory on the map. Â In each territory are 12 (could be changed) nodes. Â Each node has some identifying marker that can be seen by both players. Â In each round, a marker name is slowly revealed to both players. Â The first player to capture the node with the matching name removes the node from the field. Â If the node was on the capturerâs side, nothing additional happens. Â If the node was on the opposite side, the node is removed and replaced with a node from the capturerâs side. Â The first player to remove all nodes from their side wins.
Karuta has some rules for selecting incorrect cards that I may or may not use. Â Really it depends on the pool of node identifiers I end up using and how node capturing ends up working. Â There wiil certainly be a penalty for capturing an incorrect node, though.
On top of this, players can actively fight each other. Â Death doesnât really mean much other than losing positioning and being unable to act for some time.
Iâm working on âclassesâ, which consist of sets of four interchangeable passives that affect playstyle.  Stuff like moving faster in friendly territory, placing markers that can be teleported to, or just being a menace that focuses on keeping the other player out of the game.
Thereâs still a lot to work on. Â As of now, I have parts of the Main Menu UI finished along with some the backend for multiplayer/the lobby. Â Unityâs default multiplayer functionality has really helped me get this project off the ground (though Iâm still figuring out the API). Â Right now, Iâm focusing on getting player setup in the lobby at a starting point, and then Iâm going to start thinking about gameplay options before I dive into making a prototype of the actual game.
Oh, before I go, Monday probably wonât be update day anymore. Â Expect either Thursday or Friday to take its place.
Aaaaand I think thatâs it. Â Thanks for reading, if you made it this far!
Oi, you there! Â Yea, you! Â Lemme talk at you for abit.
As you can see above, I added the Arc ability.  Now, you may be thinking âWhy, Streus, thatâs just a lazy teleport!â, and youâd be right.  Well, it canât teleport over walls, so itâs not completely lazy.  It also damages enemies caught between the start and end points; so thatâs nifty.  Arc isnât completely done yet, though.  Iâd like to add some VFX between the start and endpoints, and I need to tweak the collision detection a little, but itâs all good.
On the UI front, I spent a whole 10 minutes updating the UI for ability charges so that it wasnât just a number overlaid on the ability icon
And I gave the health bar a simple little low health animation.
And the energy heat bar got a little gradient that I may or may not keep.
Hold up. Â Heat?
Yup. Â Most of this past week was focused on redesigning the energy/mana pool system into something that fit Tytans IIÂ better. Â Heat is what I came up with. Â Instead of passively building energy to spend on abilities, players will start with an empty pool of heat that will build as they use abilities. Â Heat will decay passively, but players can also discharge heat by using their basic attack. Â Exceeding the heat limit incurs...some kind of penalty. Â Iâm still mulling over what exactly the penalty should be, but Iâm pretty sure Iâll be going with some kind of damage infliction. Â Could be straight damage equal to the exceeded amount (heat - heatMax); could be a damage over time status effect with the same value; could be a movement penalty. Â The possibilities are endless. Â Mostly endless. Â Pretty endless. Â More endless than not.
Other things will probably demand my attention this coming week, so next weekâs post shouldnât be anything too substantial.
Happiest of Mondays, everyone! Â Good holidays? Â Good. Â Letâs get into it.
Like I said last Monday, I took this week off, but I still spent a little time thinking about what Iâd like to get into this week. Â Part of that was just implementing Charge, Trap, and Arc (which I started on today; Charge can be seen above), and part was redesigning some clunkier parts of Tytans II.
This post ended up actually being pretty lengthy, so if you want details...
Lots of bits of the original Tytans found its way into my current project because I wanted a quick and easy base to start off with, seeing as this is my first solo project in Unity (and the longest running so far).  As Iâve said many times, thereâs so much wrong with the design of Tytans, and itâs taken this replotting of the path I took in developing it for me to pick out all of the mistakes I made.
And as Iâve been playtesting Tytans II, Iâve come to conclusion that the movement style it inherited from its predecessor is pretty wank.  For those that donât scour and catalog every sentence I throw up on here, the movement style for Tytans and Tytans II is a simple WASD configuration with the player locked to face the mouse position.  W moves the player to the mouse, A strafes left, etc.  I thought this style would allow for lots of dynamic circling, strafing, dodging.  In the end, it encourages a very static playstyle.  One where the player keeps whatever theyâre shooting at more or less above them on the screen so that their axes of movement donât flip (A goes right, D left, etc).  If the camera rotation was locked to the playerâs rotation, it might work...
Instead of going further off the rails in an attempt to salvage a mechanic that more or less just made me feel uncomfortable when playing, I opted for a classic 8-directional WASD setup (as can be seen above). Â Itâs familiar, and itâs flexible enough.
The other change Iâve been considering, but not yet implemented, has to do with energy.  Tytans IIâs energy system is the classic mana-type deal.  Player has limited resource pool.  Player spends resource to use abilities.  If player doesnât have enough resource for ability, player cannot use ability.  Thereâs nothing wrong with having a âmanaâ pool or resource bars, so long as they fit the pace of the gameplay.  As I see it, the kind of mana-pool system Tytans II has at the mo is better suited for a slower paced game.  Iâm not going to go any further explanation-wise, because I feel like I could write up a whole post on game pace and resource pools.  Suffice to say, the current energy system is getting a rehaul this week.
Iâll talk about it, and the changes I will have made, next week.
Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
â Live Streamingâ Interactive Chatâ Private Showsâ HD Quality
Anya is LIVE right now
FREE
Free to watch ⢠No registration required ⢠HD streaming
I donât feel like writing this post, but Iâm doing it anyway! Â Uh, I mean... Â Happy Monday, everybody!
Prometheus got even more work this week. Â I fixed up my distribution algorithm (it was quite buggy) and I settled on attack patterns (two displayed above) for him. Â He and his minions are pretty much complete; however, I canâ t help but feel like theyâre lacking something. Â Iâll probably revisit him after Iâve done one or two more bosses, but for now Iâm giving him the back burner treatment because Iâm just so goddamn tired of working on the same fight.
Iâm just going to add in his ability drops and call it a day 2-3 weeks. Â At least Iâm happy with the icons for his dropped abilities.
Charge, Arc, and Trap, respectively.
Iâll try to get some work done on those abilities and get started on Helios this week, but I really canât promise much.
This is going to be a long post, in which Iâll cover difficulty, re-balancing, AI, algorithms, geometry, and Iâll say the word âtacosâ once.
Ready? Â Letâs dive in!
So, what you see above is a taste of how I plan to tackle the three levels of difficulty in Tytans II. Â In Tytans, I handled difficulty very naively. Â I basically just treated each difficulty as a multiplier for boss health and damage. Â The result was slow, unforgiving gameplay on the higher difficulties. Â For Tytans IIÂ I settled on something very different. Â The difficulties still are, in essence, multipliers; however, they affect very different values. Â In the case of Themis, this means increasing the number of âSword of Truthâs she shoots at a time, and decreasing the interval between her first and second volleys. Â I plan on adopting similar, but not identical schemes for difficulty for the other bosses.
As a side note, both last and this week Iâve been tweaking the classes a bit. Â I nerfed the Defenderâs shield ability a bit, and gave the Obliterator a new primary fire.
This sums up what the bulk of my dev time in the past week was focused on. Â Mother. Â Fuckinâ. Â Minion formations. Â Now almost nothing else in Prometheusâs fight is finished, so ignore everything that isnât the minonsâ movement.
When I started thinking about this fight, I thought I was going to have to build some complex AI to make the fight interesting (read: not a clusterfuck of minions doing whatever). Â As I thought more about what I wanted the fight to be like, though, I realized something fundamental about my approach to Tytans II. Â Pattern and rhythm. Â Playing Tytans IIÂ isnât about fighting some super intelligent opponent that can easily outsmart you; rather, itâs focused on small sets of predictable behaviors working in tandem to present a challenge.
And so I thought, why not just make Prometheus a kind of conductor, guiding a group of musicians through a piece of music?  So I set to work on making a class that could create a pattern of n minions given a shape defined by an array of vertices.  Specifically, I focused on distributing n objects over a series of line segments.
Aaaand hereâs the code to do that (obviously thereâs a lot more code than this, but this is the important bit) (and yes, Iâm sure thereâs a way to make this way more efficient).  Distributing n objects over a single line is easy; the real challenge of this algorithm was accounting for reaching the end of a line and continuing on to the next one.  (If thereâs enough interest, I may create a separate post explaining the whole idea.)
I initially planned on including a filled polygon case, as well as cases for ellipses (and therefore, circles), but Iâve spent enough time on Prometheus as is, and I need to finish him up and move on to Helios. Â Maybe heâll be done by next week. Â Maybe.
Anyway, thanks for reading through this post! Â It didnât end up a long as I thought it would. Â Must less space to build suspense for the tacos gag. Â Ah well.