PDA

View Full Version : Google's Retro 8-bit Art Stuff


Googleshng
04-19-2011, 09:55 PM
So I totally should be working on these other, more viable projects, but this little voice in the back of my head keeps pestering me to work on retro 8-bit games instead. I actually really dig a lot of the self-imposed restrictions I'm using here, and how they're forcing me to be extra efficient. I'm cheating a bit here and there (I should really limit myself to 3 or 4 colors per sprite for instance), but I'm definitely sticking to 256x192 resolution, 16 color palette, and tiled backgrounds (mostly) here. So yeah, art samples from the RPG that's getting more love than the Zillion clone right now:

Backgrounds!
http://www.kekkai.org/google/samples/plains-day.pnghttp://www.kekkai.org/google/samples/plains-dusk.pnghttp://www.kekkai.org/google/samples/plains-night.png
The clouds are a total cheat at the moment. I should really standardize more there... and possibly have them drift across the sky based on step count. I mean, the truly classy thing to do would be a bunch of bands of parallax scrolling cumulus clouds, but that sort of thing you have to save for sequels. I'm definitely going with changing moon phases though, because it's so much classier to throw that into the random battle background than just have an indicator in the corner.
http://www.kekkai.org/google/samples/moon-cycle.png

A couple monsters!
http://www.kekkai.org/google/samples/biteworm.pnghttp://www.kekkai.org/google/samples/groundsnake.pnghttp://www.kekkai.org/google/samples/hoodsnake.png
These I'm pretty proud of. Given how heavily influenced this is by the original Phantasy Star, these should actually be significantly larger, and have groovy attack animations, but, call me lazy. The first of these is going to be the slime-equivalent. I figure roughly man-sized earthworms with fangs pretty much hit the sweet spot of cute and wimpy, but not so wimpy looking that it's an insult to be fighting them, right? And I dig how I can palette swap'em into burrowing poisonous snakes for later, and then add a cobra hood for the next recycling. This is, of course, another form of cheating, but hey.

Now these I'm less proud of. I kinda want to work in some close-ups with different expressions so your party isn't just a bunch of text and numbers like real 8-bit RPGs but... yeah, that's Not Easy with this color palette.
http://www.kekkai.org/google/samples/protagonist-normal.png http://www.kekkai.org/google/samples/protagonist-happy.png http://www.kekkai.org/google/samples/protagonist-sad.png http://www.kekkai.org/google/samples/portagonist-shocked.png

So yeah. Feedback's nice. As are subtle in-joke monster suggestions. Claw Shrimp are groovy (and maybe deep crows), Percy's a little too pop culture (although I may still work in some form of horrific item stealing plant monster).

Bonus section:
The other one of these I'm working on!
http://www.kekkai.org/google/samples/Central.png
http://www.kekkai.org/google/samples/12-frame-robin.png
(Probably cutting that down to just 6 frames)

Soren Highwind
04-19-2011, 10:02 PM
I like that that monster of yours is actually a small step up in evolution, rather than a simple palette swap. Your other stuff is lookin' mighty fine as well. I'd offer constructive criticism, but I know nothing about this kind of thing. =/ Do you have any sort of plot for this RPG you're making, or would you rather keep that under wraps for now?

Googleshng
04-19-2011, 11:14 PM
I honestly have very little in the way of plot in mind. The idea here (besides learning/relearning how to code this up in HTML5/flash/whatever) is that I'm trying to take stuff down to the bare basics as much as possible. One of the problems I have with the road RPGs in general have taken in general is that waaaaaaay too much emphasis terrible, slow paced stories, while ironically completely dropping the groovy immersive vital importance of talking to everyone you see to get cryptic clues to piece together in a notebook and work out what to do next. Plus even recently, the plot of every really good RPG, old or new, is still pretty much "This one guy is an evil jerk who has done/is going to do something really bad so go kill him" with a lot of random filler in between (or before this even gets introduced).

So... I'm going to have SOME plot, and hopefully make it interesting enough to want to see how it turns out, but it's a secondary concern to retraining people in how to do the notebook and graph paper pad deal. So, interesting piece-together-clues sidequests scattered around, but capital-P Plot is going to be restricted to like... 5 cutscenes tops, consisting of a handful of splash images like this:
http://img159.imageshack.us/img159/1766/psjapa0017pb.png
... except holy $@#% there is no way I can hope to compete with that artwork... and oh hey, that screen's from some kinda weird fan retranslation which cheats and wads in twice as much text as originally fit.

I might back this up with some more expansive manual backstory in an out-of-game manual if I can (find someone to) recreate that glorious SMS manual art style-
http://img.photobucket.com/albums/v87/johnmora/Grump%20Factory/Phantasy%20Star/Phantasy%20Star%201/scan_alis_tears.jpg

Of course, that would mean I couldn't stick to my guns on having the instructions for both these games consisting of just the following-


Controls:
http://www.kekkai.org/google/samples/d-pad.png
Figure the rest out on your own.


But yeah, what little I have plot-wise:
- The main character is summoned from another world (which may be visitable later) to deal with Stuff, and has a one-way translation artifact to explain away all the explaining away and silent protagonist syndrome.
- Brainstorming a title that says "8-bit RPG" but isn't TOTALLY generic or derivative gave me "Moon Serpent" so one or more big badass monsters of a reptilian nature will be of Some Importance.

Soren Highwind
04-19-2011, 11:41 PM
But yeah, what little I have plot-wise:
- The main character is summoned from another world (which may be visitable later) to deal with Stuff, and has a one-way translation artifact to explain away all the explaining away and silent protagonist syndrome.
- Brainstorming a title that says "8-bit RPG" but isn't TOTALLY generic or derivative gave me "Moon Serpent" so one or more big badass monsters of a reptilian nature will be of Some Importance.

Well it's better than nothing! It's nice you're trying something original. I know this is kind of a sudden jump, but what kinda battle system do you have planned? Traditional turn-based stuff, or something different?

Googleshng
04-20-2011, 12:04 AM
Pretty much straight-up fight magic item run, plug everyone's actions in, watch'em unfold. Kinda planning to rapidly follow this up with increasing complexity, but I want to make sure I've mastered the real core genre fundamentals first, then layer on complexity later. Especially since I've got a couple weird secret meta mechanics I want to test out in a controlled environment.

Although, again, I started this thread primarily because I'm self-conscious about grass tile perspective and the sucky sucky 32x32 16 color portraits.

Soren Highwind
04-20-2011, 12:07 AM
Pretty much straight-up fight magic item run, plug everyone's actions in, watch'em unfold. Kinda planning to rapidly follow this up with increasing complexity, but I want to make sure I've mastered the real core genre fundamentals first, then layer on complexity later. Especially since I've got a couple weird secret meta mechanics I want to test out in a controlled environment.

Although, again, I started this thread primarily because I'm self-conscious about grass tile perspective and the sucky sucky 32x32 16 color portraits.

Gotcha.

Though, again, I'm not the one to consult on graphical matters. I'm sure another member here could help/advise/whatever with that.

Googleshng
04-20-2011, 03:46 AM
Here's another quick palette swap set.
http://www.kekkai.org/google/samples/ichorbod.pnghttp://www.kekkai.org/google/samples/glooper.pnghttp://www.kekkai.org/google/samples/fissionaries.png

Pun-y name or not, Fissionaries honestly kinda creep me the ^%#$ out. Totally wasn't planning them either, just a last minute inspiration before doing a second simple recolor.
http://www.kekkai.org/google/samples/fission.gif

Brr....

And yeah, Gloopers dodge like crazy.

Balrog
04-20-2011, 07:36 AM
I really like limited retro color palettes but in some of those screens I think it's doing more harm than good, namely the yellow skin portraits. Everything else looks really nifty.

Also, this pixel artist Arne came up with a pretty versatile 16 color palette here (http://www.wayofthepixel.net/pixelation/index.php?topic=4306.0) that might be interesting to toy with.

Googleshng
04-20-2011, 03:28 PM
Hey waaaaaaaaaait a second.

"The SMS had up to 32 simultaneous colors available (one 16-color palette for sprites or background, an additional 16-color palette for background only) from a palette of 64 (can also show 64 simultaneous colors using programming tricks)."

I'm actually making this way harder on myself than I need to!

I'm still going to try and sick with the 16 I'm using though here, just as more of a personal challenge sorta deal, but... yeah that's crazy. Any combination of 00 55 AA or FF for hex RGB values apparently are fair game next time I'm doing this sort of thing. Let's see if I can't fix that jaundice the hard way!

Googleshng
04-21-2011, 03:41 AM
And more'o'these:
http://www.kekkai.org/google/samples/runtle.pnghttp://www.kekkai.org/google/samples/gruntle.pnghttp://www.kekkai.org/google/samples/grogre.png

Chu
04-21-2011, 05:12 AM
Perhaps there should be more of a difference between the first and second forms. Something subtle, like a protruding fang or a modified expression.

Anyway cool work so far! I'm intrigued with how far you go with this project, although I don't have much useful advice to provide.

Googleshng
04-27-2011, 12:50 AM
Here's a few scarier, later in the game type monster sprites!
http://www.kekkai.org/google/samples/moulder.pnghttp://www.kekkai.org/google/samples/skullie.pnghttp://www.kekkai.org/google/samples/returned.pnghttp://www.kekkai.org/google/samples/mockingweed.png
http://www.kekkai.org/google/samples/moon-serpent-1.png

I'm not especially happy with that last one. Turns out the whole giant snake monster looping about as it trails back to the horizon deal is hard to draw! Which doesn't excuse the face. Problem there was I started with the eyes and mouth, dug how they came out, but yeah, I really can't draw a head that works right with'em.

The undead set here look a little weird too, but hey, fun gameplay preview time! Initially, the player is going to separately run across Moulders (the zombie torsos), which have a decent wad of HP and hit REALLY hard... but pretty much always act last and miss like crazy, and Skullies (possibly in the same area), which are pretty much going to be a glass cannon sort of thing. Way late in the game, oh hey, here they are stuck together... so now we have something with a ton of HP and high damage that has good accuracy and probably some nasty spells for variety's sake. Hopefully, the exact nature of the threat will be immediately obvious there.

Also, here's something interesting that comes from going oldschool like this. How many monsters can be encountered at once, and the character limit I'm sticking to for names and commands are actually pretty severely limited by the tiny screen dimensions I'm using (256x192... pixels will, of course, be blown up to 2 or 3 actual pixels across). Space fills up pretty darn quick:
http://www.kekkai.org/google/samples/combat-clutter.png

I was actively avoiding referencing other games when I worked out that arrangement of potentially screen-filling windows, but wow did it ever come out looking like Phantasy Star. Throwing that together also lets me determine which areas of the screen are going to be always visible, and a good place for sticking interesting background features. Fighting in the ocean for instance, I've got this nice uncluttered little bit to have the sun and moon reflected in distorted fashion (costing me only 2 and 1 tiles respectively):
http://www.kekkai.org/google/samples/ocean-dusk.png
http://www.kekkai.org/google/samples/moon-cycle.png
http://www.kekkai.org/google/samples/moon-reflections.png

I'm actually about half done with the combat art here, and I can probably recycle most overworld/town stuff from other projects. So... yeah, this is coming along. Soon I might be forced to pick what I'm coding it in and start testing the mechanics some.

Googleshng
04-28-2011, 01:53 AM
I'm saving the other sprites in that plant monster family as a surprise for any brave enough to play this thing, but dear gods I don't even like looking at their thumbnails.

More importantly, since this thread here is attracting way more attention on the "Oh hey, oldschool RPG?" front than the criticizing sprite art front, I might as well toss this little open question out to you. As this particular project is me putting my money where my mouth is with regards to that article I wrote a year ago (http://www.gamespite.net/toastywiki/index.php/Games/HowRPGSLostTheirWay), what few occasions will call for exploring a dungeon are going to be about exploring a dungeon. Which is to say, rather than a meandering path through a change of scenery leading to a boss fight, they're going to be nasty, you'll probably need to map'em mazes, which serve as a challenge in and of themselves by way of random encounter based resource attrition.

OK, for those of you who didn't just run screaming from the thread, this means I have to design things in such a way that players will be tricked into heading down a bunch of dead ends, getting into more fights because of it. This requires some method of restricting the player's ability to see what's ahead and avoid bothering with the dead ends, and an encounter rate high enough to make checking every nook and cranny hurt. The games I'm using as inspiration offer up three ways to accomplish this:

The super-minimalist approach, used by DQ1- Dungeon maps are actually super tiny (like, 12x12 tops), but you can only see one space in any direction, and the encounter rate is jacked up through the roof. Pros: Elegant Minimalism, Least work for me, Possible to make a spell/item that expands your sight radius. Cons: Seriously, we're talking like, a fight every, like, 2-7 steps.

Zoom way in, used by DQ2 and PS2- You have the same encounter rate as you do outside, but take the above map and scale it up so a "one space" dead end turns into a full screen dead end. Pros: You don't say "ARGH! I'M GETTING ATTACKED EVERY 2 @%#$ING STEPS!" Cons: It's kinda frustrating having to walk down all these looooooooong hallways, especially when they dead end, and really, it feels more like the dungeon is taking forever than the dungeon is some deadly experience you really want to be through with as soon as possible.

Faux 3D! Faux 3D! Faux 3D! Used by PS1- Again, you take the same map as the first method, but rather than just displaying it, you feed it into a crazy engine that translates it into technically tile-based groovy 3D exploration mode. Pros: Looks @#$%ing awesome, allows monsters to just drop right into the first person view we're already using. Cons: ... do you have any idea how much work it'd take for me to do this? More than the rest of the game combined.

So yeah. Input appreciated. Assuming of course that it's in the form of pushing for one of these 3 options here and not say, "Option 1 but without the encounter rate cranked!" For what it's worth, I'm not really recreating the sort of encounter rate/necessity for grinding found in the oldest of console RPGs (for starters, I'm making a multiple-die-using roll for steps until next fight vs. the 1 in X chance each tile deal real old school games pulled). I am however giving monsters enough teeth to make the trip from point A to point B deadly without proper strategy unless you're over-leveled/drop the encounter rate/get a snazzy vehicle.

Mightyblue
04-28-2011, 02:16 AM
The jokey response is to do a combo of Options A and C ala Sword of Vermilion (actually, not so jokey, as that was my first RPG, and still my favorite, oddly).

Also, if you had an encounter every seven steps on a tile based map like that it would be pretty forgiving, actually. Most early tile based RPGs are something like 3-5 steps in dungeons.

Googleshng
04-28-2011, 02:57 AM
Yeah, that wasn't "I'm going to pick a number from 2 to 7 as the average." That's (values very likely to be tweaked in testing), base steps before a new fight=6d4 (6-24 steps, HEAVILY weighted towards 15). Different terrain types count as different numbers of steps. Dungeon tiles count as, say, 4 (2-6 steps, heavily weighted towards 4)... assuming the DQ1 style micro-map. Honestly, I don't have a problem with really frequent encounters as much as unpredictably frequent. DQ1's base rate is like... 1 in 40 chance per grass tile (1 in 20 forest, 1 in 8 dungeon, or some such) which is horrible, because hey, you can get attacked every freaking step in a dungeon, and trying to actively grind, sometimes it takes a full freaking minute or two to hit something. So I'm going for damn-high-by-modern-standards still, but consistent enough not to feel like the RNG is $@#%ing you over, plus I'm building in a couple weird mechanics which let you tweak it on the fly to suit your taste in odd ways.

Meanwhile, on the grindage front, I'm aiming for a general level of "the more new abilities you/local monsters have to familiar yourself with, the longer a period of recommended grind to get your feet wet before continuing," coupled with a high-risk/high-reward model where yeah, if you're confident/competent enough to risk your neck in the next monster selection over, you'd be crazy not to. At the absolute most though (beginning of the game, when picking up new characters) we're talking like, pick 10 fights, level up, heal, move on, but just quick islands of that between "if you really know what you're doing, no grinding needed." Ideally anyway, still working the math out and how many different monsters I'm willing to doodle to split exp/cash values between.

Mightyblue
04-28-2011, 03:13 AM
Actually, the one thing I would always like to do if I made a game from scratch is make it so that experience isn't divvied up between characters (each PC gets the same XP from each monster) because it reduces the amount of math you have to do and cuts down on the grinding. It also makes the requisite grinding to get your party levels to roughly match much less annoying, and you can always stretch out the next level bar like ~15% to stretch out the length of encounters you want the party to experience.

The weird thing I keep seeing in JRPGs is that devs continually treat levels and experience gain as almost separate from the encounter rate/general level of grindage required to "clear" a boss or area. They usually design an area around a level range that you're expected to hit by the time you hit the end or the boss and the average number of encounters you'd be expected to hit by the end. Which basically means God help you if they've instituted wildly varying experience curves and extra party members that start below the average level they were shooting for in the previous area/boss.

Then again, I'm not phrasing this well. Hrm.

namelessentity
04-28-2011, 07:32 AM
I hate mazes in games, because it normally feels like the developers are just trying to piss me off with dead ends. The only time I didn't feel this way was during some of the old SNES 3d dungeons (if I was at MY computer, I could name some for you). This situation you can have one tile dead ends, but due to the new perspective you don't know that until you've gone down there. Also, one can quickly lose your bearings and get lost, so you don't need as much space to create an effective maze.

On the other hand, option three would be a hell of a lot of work. Like, almost to a ridiculous degree. So I don't know if I would really suggest it, but as a gamer I would prefer it.

Googleshng
04-28-2011, 10:11 PM
Well, let's see how much work it is exactly. This doesn't quite match up to sprite tiling since it's just a rough mock-up, but could be made to do so without much trouble:

http://www.kekkai.org/google/samples/animated-halls.gif

OK, that's not too bad. Actually looks kinda nice. Pretty sure I covered all the bases except for a looming dead end or other object of interest, but that's just a question of drawing a square at 3 different sizes really. Now how hard is it to throw a turning animation in here?

http://www.kekkai.org/google/samples/animated-turn.gif

%@$#! First off, my first effort at a turn looks pretty bad. Second... oh hey. The way I'm working this, if you're facing the wall of a corner there's all this space which... has like a dozen edge cases I suddenly have to account for. How the heck did Phantasy Star handle that anyway?

Oh right. They just completely $@#%ing cheated. (http://www.youtube.com/watch?v=bMMEsWKemCw&feature=related) This video here doesn't do the greatest job of showing what I mean, but basically, they hit the same problem I did. If you're facing down a hall, and never open up into full-on rooms, it's actually really easy to add in the various side passages and such required. If you're turning or facing a wall though, @%$# IT'S HARD. So... they just kinda put their fingers in their ears and say if you're in the process of turning, or turned at a point in a hall that isn't a junction, "LALALA IT'S A LONG STRAIGHT HALL CONTINUING FOREVER IN BOTH DIRECTIONS!"

It's also a good example of what I was saying about how I pretty much perfectly recreated the combat layout without trying, and totally humbles me with those monster animations (slimes especially), and gorgeous $#@%ing backgrounds... although they kinda cheated on those too. Phantasy Stars backgrounds aren't especially tiled, they just made this custom 4 meg cart and went to $@#%ing town on artwork for that sucker. In the weird alternate timeline this thing I'm making comes from, I'm working for someone who doesn't have the resources to swing that. At least that's what I'm telling myself.

Mightyblue
04-28-2011, 10:15 PM
You might want to look at how Sword of Vermilion did it as a form of contrast, because it does show gaps in the corridors and the like for turn offs.

Googleshng
04-28-2011, 11:34 PM
I MIGHT... but that would involve me actually touching Sword of Vermillion again... and if I recall, suffering through talking to everyone in town.

Googleshng
04-29-2011, 02:50 AM
So how does trying to hide stuff I don't want to draw with shadows work out?

http://www.kekkai.org/google/samples/animated-turn-2.gif

OK, yeah, I need to do more actual math and get these angles right but... it's something?

Mightyblue
04-29-2011, 07:50 AM
Okay, now I remember what's different with Sword of Vermillion: The overworld/dungeon part takes place on a flat static plane which rotates and moves as the player does ala PS1, only the foreground objects are sprite objects of a set size that tween smaller as you look farther into the distance.

The reason this works is because when you hit a turn in SoV, they rotate all the sprite objects at the same time while rotating the visual plane (or at least it looks like it does, without trying to peer into the code), so you don't get the weird angular cutoffs.

Kirin
04-29-2011, 01:50 PM
Man, personally, I would take one look at this problem, go code the dungeon hallways in actual 3D, and then try to get them to render to look as if they were sprite-drawn. Probably not the solution you're looking for, though.

Googleshng
04-29-2011, 08:08 PM
I'd be potentially willing to do it, but that seems like even more work than the more honest stuff I'm thinking of.

On that note though, yeah, Sword of Vermillion just has a @%$#load of scaling tree sprites swinging around. Totally beyond the hardware limits of my imaginary platform here.

Kirin
05-03-2011, 11:52 AM
Yeah, it totally depends on your skillset. I happen to know OpenGL better than any naturally sprite-based toolkits, so I default to 3D.

Googleshng
06-03-2011, 11:21 PM
Bet everyone thought I wasn't still working on this, right? Well... OK I wasn't for the last couple days, but before that I totally was, it was just on stuff that doesn't allow for visual aids, like working out how to properly do a 3D maze and pondering the overall world design some. Also, working on the sprites for Super Secret Stuff I don't want to go spoiling here. Here's some simple stuff I can actually show off though art-wise!

We've got two more party members...
http://www.kekkai.org/google/samples/protagonist-normal.png http://www.kekkai.org/google/samples/rouge-normal.png http://www.kekkai.org/google/samples/forat-normal.png

Horrifyingly small, but this is a low res game I'm working on. Also, one nice thing about the crazy limited color palette- It encourages diversity of skin tone! Because there's only like, one good one!

Also, here's another sorta-palette swap monster set:
http://www.kekkai.org/google/samples/demand%20bird.pnghttp://www.kekkai.org/google/samples/despair%20bird.pnghttp://www.kekkai.org/google/samples/deep%20bird.png

It contains another two in-joke monsters, but you probably can't tell without the name on one of them. Could have sworn I had a third to use for the middle one but meh, sometimes you just need sorta weird looking generic giant evil birds, you know?

Kishi
06-03-2011, 11:22 PM
I really like limited retro color palettes but in some of those screens I think it's doing more harm than good, namely the yellow skin portraits.

Googleshng
06-03-2011, 11:47 PM
See, I really like it for the monsters and backgrounds, and I think these other two look pretty decent (well, orange skin/red hair isn't the best combination)... and for what it's worth, the yellow skinned main character IS magically summoned into the world at the start of the game, so... looking weird is excusable.

Traumadore
06-12-2011, 07:30 PM
If you had a different color palette for the characters nobody would care.

Googleshng
06-13-2011, 09:15 PM
Well, I would care. Gotta stick to my guns on my arbitrary restrictions!

Anyway though, yeah, everyone hates the look of the main character here. I'm not too thrilled with it either. I still like the weird exotic look due to being summoned from another world angle though (and, again, I like how my palette restriction pretty much forces me to populate the world with nothing but brown and bronzed skinned folk, maybe with the occasional albino, fantasy settings in general skew WAY too caucasian as a rule). One possibility is to just switch to a really really noticeably different skin color:
http://www.kekkai.org/google/samples/protagonist-green.png
It's better, but here's the thing. I've been working on plot stuff in general, and one thing I'm considering is, either as a late game surprise, or something for a sequel, introducing this weird complicated system for traveling back and forth between the standard setting, and the world the main character is summoned from. One aspect of this I'm pretty well married to is, when doing this, characters can't take their stuff with them. Rationalizes the main character starting with nothing, and also lets me shake things up down the road. There's a bit of a headache involved here if there's a lot of going back and forth though, would it dump your inventory in a box or something?

Well, between working on that, and some weird secret notion I'm saving for a future game which I could now rationalize as a secret here, there's a nice simple fix. All your stuff stays on you, and you just become a drooling vegetable, while your soul gets yanked out and transfered into whatever's convenient. Working that into the setting not only solves the current problems, but opens the door to some interesting fodder for side quests and sequels and such. So OK... our main character (who I already wanted to be canonically mute and weird looking) can go ahead and be a possessed statue. A nice fancy one, made of gold and precious gems. I get to keep the weird yellow skin, and now it is completely reasonable why you start in a part of the world where you can't really acquire anything of value. The locals sacrificed everything they own to get their big shiny chosen one type on the scene. So tada! Redesigned close-up for our protagonist:
http://www.kekkai.org/google/samples/astra-normal.png
Kinda weird, but being weird sets this project apart from just being a shameless clone of other 8-bit RPGs, and SECRET CHARACTER was actually already supposed to be an otherworldly golem, so now I have this AA AB BA BB deal with the 4 characters gender/made of meat statuses, which I can use for rationalizing who can use what equipment and is affected by certain weird conditions too.

OK. So now all I still need graphics wise is proper little map screen sprites. I'm going with 16x16 tiles, so I can either go with 16x16 characters, or get all fancy and apply 16-bit sensibilities, with 16x24 characters. Whichever I can make look decent I guess. One option would be to just blatantly crib the style from some existing game, but that's just tacky. I actually have this huge sprawling collection of 16x16 sprites ready to go from the odd roguelike I was originally working on when this current project sidelined me:
http://www.kekkai.org/google/samples/squat.png
Our protagonist here, in some placeholder clothing, looks a little off like this:
http://www.kekkai.org/google/samples/squat-goldie.png

Or I can stretch these out some vertically, and have heads overlapping the next tile up, FF style:
http://www.kekkai.org/google/samples/stretch-test.png
http://www.kekkai.org/google/samples/stretch-goldie.png

Or I can throw all this out and start from scratch. Whatever I do though, I kinda want to avoid the usual 50% of the sprite is the head compromise people make, and I'd like to at least partially be able to reflect equipment changes appearance wise (manageable since, well, I'm not throwing in 30 materials for incrementally better gear). As usual, input good.

I probably should have used higher contrast backgrounds here, ah well.

Googleshng
06-17-2011, 03:33 AM
Actual coding type stuff.

So, my cousin, being an avid HTML5 advocate of late, has talked me into coding this sucker in it. 2 full days wasted learning the odd little details of the canvas tag, it's... actually starting to look half-decent. So... yay? Still feels like I'm committing some sort of blasphemy here though.

Kirin
06-17-2011, 08:42 AM
You're... you're writing an RPG in HTML? I'm not really sure how I feel about that. Fascinating.

Googleshng
06-17-2011, 12:53 PM
The original plan was to do it in flash, which seems a lot less WRONG to me, but there's a general push out there to phase Flash out, while the dark heretical things I'm using here are supported by darn near everything capable of web browsing, with pressure being on the few holdouts to add it. So far it's... actually looking pretty decent in practice. Just need to not think about the hideous vile atrocities going on behind the scenes to make it work.

Also dagnabit it's hard to make 16x24 sprites not look awful without caving and shamelessly co-opting the visual style of a Square game or otherwise really going for the SD look. Granted, I'm not helping myself by deciding to make the one you're going to spend the most time staring at a shiny bald weirdo with bug-eyes, but still.

Olli T
06-18-2011, 01:12 AM
H-how do you save state?

Kirin
06-18-2011, 11:46 AM
Well, it's certainly true that Flash is a festering pile of evil behind the scenes, so I don't fault you for trying out HTML5 over that option. Either one seems pretty weird to me, but I'm kind of old-school in my programming background, so you can ignore me. And Olli, I imagine a nice big client-side cookie could take care of state flags pretty well.

Googleshng
06-18-2011, 12:36 PM
Yeah, once I work out some of the more embarrassing wonky issues I can toss an example in here of how no really, you can actually get a real proper real time videogame out of a webpage of you squeeze hard enough. It's not like I'm making a bunch of links you click on to select actions or anything.

And... yeah, I'm probably going to take the lazy way out and handle saves with cookies, at first at least. I mean, the classier route would be to store things server side, but then I'd have to have log-ins, and then I'd want to create some grand unified log-in that lets people save any webby games I make together, post on any forums I might set up, comment on announcements, etc., but then I have to deal with spambots...

You know... I might just have the thing spit out passwords along with the cookie thing so people with cookie-clearing habits don't get screwed. Advice is welcome on this front I guess.

Olli T
06-18-2011, 12:48 PM
I think it may be technically impossible to prevent savegame hacking with that kind of an implementation, not sure if it's a huge problem.

eternaljwh
06-18-2011, 04:37 PM
Still feels like I'm committing some sort of blasphemy here though.Should be good as long as you don't use <BLINK>.

Googleshng
06-18-2011, 06:26 PM
I think it may be technically impossible to prevent savegame hacking with that kind of an implementation, not sure if it's a huge problem.

Totally. The way I'm implementing all this also means it's impossible to prevent people from viewing the source code, spoiling any surprises within, or even copying the whole thing and modding the hell out of it to their liking, with nothing I can do to stop it besides asking them not to for the sake of their own enjoyment (well, that and suing them for copyright violations if some weirdo were to actually try and copy/paste the game and steal credit for the whole thing).

Honestly though, I'm OK with that. If you want to cheat your way through a game, I'm not going to try and stop you. Especially when attempts to stop you are going to cause serious problems for other people just trying to play the game properly.

But again, first thing's first. Must iron out basic interface wrinkles.

Another thing I'm doing to make things needlessly complicated for myself- Making the world map behave as a sphere, not a torus.

Kirin
06-19-2011, 02:11 PM
Honestly though, I'm OK with that. If you want to cheat your way through a game, I'm not going to try and stop you. Especially when attempts to stop you are going to cause serious problems for other people just trying to play the game properly.

You have no idea how much I wish all game developers felt like you right now. *internet fistbump*

Ossobucco
06-19-2011, 04:12 PM
And... yeah, I'm probably going to take the lazy way out and handle saves with cookies, at first at least. I mean, the classier route would be to store things server side, but then I'd have to have log-ins, and then I'd want to create some grand unified log-in that lets people save any webby games I make together, post on any forums I might set up, comment on announcements, etc., but then I have to deal with spambots...

You know... I might just have the thing spit out passwords along with the cookie thing so people with cookie-clearing habits don't get screwed. Advice is welcome on this front I guess.
HTML5 has you covered (http://diveintohtml5.org/storage.html).

See also: HTML5 Game Development Tips (http://hernan.amiune.com/teaching/HTML5-Game-Development-Tips.html)

Olli T
06-19-2011, 11:48 PM
HTML5 has you covered (http://diveintohtml5.org/storage.html).

See also: HTML5 Game Development Tips (http://hernan.amiune.com/teaching/HTML5-Game-Development-Tips.html)

Ooh, that's actually really neat!

Googleshng
06-22-2011, 10:52 PM
This is still super rough, but I figured it would be nice to toss up a proof of concept that yeah, you can really do this sort of thing in HTML. (http://www.world-domination-llc.com/games/web/moonserpent/)

Going to be smoothing that animation out some, replacing all these graphics, smoothing the keystroke check out some (and making it behave better across browsers), and, you know, making an actual game here at some point. But, hey, scrollable map with proper animation and all that good stuff.

And unrelated, these water tiles are from a different project, (and missing some beach corners) but I am darn proud of how those lakes came out.

Edit: Oh hey! Making these temporary tiles conform to my color palette left me with puke-yellow sand... and trying to fix that actually gave me a decent caucasian skin tone should I chose to apply it somewhere. Huh.

namelessentity
06-23-2011, 08:11 AM
Wow, I didn't know you could do that. And his hair bobs when he walks, awesome.

Googleshng
06-23-2011, 02:28 PM
So, noticing how awesome that sand now looks, and how even more awesome the tundra which isn't actually displayed in that little proof of concept looks, I figure now's as good a time as any to examine just how many colors we can really get out of this 16-color palette, the oldschool way!

Much like how old monochrome monitors gave you grey by alternating black and white in a checkerboard pattern, several colors I'm using here blend together nicely. For some initial experimentation, we can mix everything with white, or black. Obviously, dark colors alternating with black look even darker, and generally pretty good. In this palette, only yellow is bright enough to blend with white though.

Adjacent colors also are likely to blend well, again, some better than others. And since, hey, there's only 16 choices here, it's not too hard to test every possibile combination, and find several more that work surprisingly well, particularly with browns and greys in the mix.

http://www.kekkai.org/google/samples/palette-fun.png

Really, I have about 41 decent colors to work with. I might repaint some of the monsters accordingly. Plus I actually like the gritty look sometimes.

Googleshng
07-08-2011, 10:12 PM
So you know how every RPG ever has made it so their world map wraps north to south just like it does when going east to west, connecting the north pole to the south and making for worlds that are all shaped like donuts if you actually try and fold a map to correctly reflect it?

THERE'S A REASON PEOPLE CHEAT LIKE THAT.

Turns out it's a royal pain to do things correctly. Here's a visual aid which... well, it actually doesn't make this clearly. It makes it way more confusing. Because if it doesn't seem confusing, turns out you're visualizing wrong.

http://www.kekkai.org/google/samples/poles.png

In order to accurately have a scrolling map wrap around as if it were a sphere and not a donut, what you have to do is, when going north to south, add a flipped row centered on half-the-map's distance from whatever row is in the center of the screen (let's call it the one our character is in)... and then when moving left or right, any rows which are displayed and over the pole from where the character is have to scroll the other way around, giving you this crazy seam on the map where everything looks totally crazy.

And that's STILL not making the map rows near the poles actually contain far fewer cells than the ones near the equator, which you really should do, which would just be totally and completely screwy.

eternaljwh
07-08-2011, 11:16 PM
Yeah. Trying to mix Cartesian coordinates with spheres and wanting spheres out just doesn't end well.

Secret of Mana did a decent job of fooling you; Terranigma illustrates how Mercator projections Can Have Problems.

Belmont
07-08-2011, 11:28 PM
I'm at a loss here Google. I see a lot of constructive criticism in this thread and you acknowledging it as being right--but then you rationalize it with X because you want to work within constraints or like you're a victim of circumstance.

Googleshng
07-08-2011, 11:42 PM
I do want to work within constraints. That's actually the whole premise here. Seeing how good of a game I can make under a bunch of constraints, largely in place to force me to come up with novel ways of doing things, and maintain a consistent minimalist level of efficiency with everything.

Belmont
07-08-2011, 11:45 PM
I can understand that--people work best under constraints because they're forced to improvise and be creative. But... yellow skin?

Loki
07-08-2011, 11:55 PM
Yeah! Who ever heard of that (http://images.paraorkut.com/img/pics/images/h/homer_simpson-12447.gif)?

eternaljwh
07-09-2011, 12:07 AM
Yeah! Who ever heard of that (http://images.paraorkut.com/img/pics/images/h/homer_simpson-12447.gif)?Which were explicitly so to fuck with people and make them maladjust their TV sets' color knobs, ne?

I think of the colors you arranged the yellow-white dither is the most http://hrwiki.org/wiki/Skin_Flesh]Skin Flesh.

Just remember that drawing programs in fact have algorithms to turn higher-colordepth images into dithered, low-palette images, if that's not something you're restricting yourself to.

Googleshng
07-09-2011, 01:01 AM
Might not be a bad idea if I end up throwing in big splashy cutscene type images, but I think I'm pretty much done with any graphics that aren't actually easier to do using my standard pixel by pixel deal. Honestly, I'm actually more comfortable creating images like I'm setting type then drawing freehand.

Also, oh hey! Getting the map here flipped around isn't a big deal. Only tricky bit is accurately drawing the weirdness at the poles... and ohoho! I can avoid THAT problem by just making the poles boring as heck and totally cheating on some stuff! Go me!


And on the skin-tone front- Seriously, I might do one or two caucasian types with white-yellow dither, but after getting a slight push that way, seriously, why the heck shouldn't I make up for the general lack of melanin in fantasy settings in general?

Belmont
07-09-2011, 01:58 AM
I'd be potentially willing to do it, but that seems like even more work than the more honest stuff I'm thinking of.

On that note though, yeah, Sword of Vermillion just has a @%$#load of scaling tree sprites swinging around. Totally beyond the hardware limits of my imaginary platform here.

This is the other part of it. If you can accomplish what you want to do without anyone being all the wiser to the whats going on underneath the hood then why not go for it? It just seems like you're making things harder for yourself here by imposing hard, and as you said yourself, imaginary limits. And at what point do you draw that imaginary line? Do you stifle yourself to only the programming capacities that existed during the Master System days and put limits on memory usage as well? You've got a lot of different tools at your disposal and you don't have to only use the hammer to accomplish and assemble what it is you want to make while staying true to your vision. While it's kind of emblematic of its design I suspect it will only really matter to yourself at the end of the day. I dunno man. I guess I'm just trying to say that you should probably "cheat" when you're met with an impasse that requires way more effort than necessary.

Googleshng
07-09-2011, 12:56 PM
Do you stifle yourself to only the programming capacities that existed during the Master System days and put limits on memory usage as well?

That's roughly what I'm doing yeah. The basic goal is to end up with something which, if not running as is, could conceivably have been ported to the NES, SMS, or MSX with no really major changes. I'm also, for what it's worth, trying to restrict myself to designing the whole thing as if development started in 1987. Any original ideas are fair game, but no adopting genre conventions which had not been established by the end of that year.

Me really wishing I could get my hands on Retro Game Challenge 2 may or may not be a motivating factor here.

I have, however, for what it's worth, been talked into doing nice happy vector based maze graphics for dungeons, rather than driving myself insane doing that sort of thing with tiles.

Belmont
07-09-2011, 02:47 PM
Any original ideas are fair game, but no adopting genre conventions which had not been established by the end of that year.

Oh my.

Kayin
07-10-2011, 04:34 PM
I think the best thing you can do to the map to get a sense of realism for a tad bit of inconveninece is not have a wraping map. Particularly good if you wanna focus on say, a continent instead of 'whole planet'.

Kfroog
07-10-2011, 04:47 PM
I've always seen Final Fantasy torus-maps as representing only a small portion of a planet, and just wrapping for convenience.

Googleshng
07-11-2011, 11:45 AM
I think the best thing you can do to the map to get a sense of realism for a tad bit of inconveninece is not have a wraping map. Particularly good if you wanna focus on say, a continent instead of 'whole planet'.

Well, the absolute best thing to do is wrap the whole thing against a polygonal approximation of a sphere (at least an isosahedron), and dynamically rotate stuff around and such, which isn't entirely painful if you're using a hex grid or something, but yeah. Civ pretty much has the right idea putting walls at the poles.

Meanwhile, just because, seriously, it has bugged me forever how many games wrap north to south, and I already have the map display coded in a weird way that allows for it, I'm legitimately presenting a 180° rotated world if anyone happens to cut over a pole... which, honestly, the way I otherwise have the world laid out there really isn't going to ever be a real call for ever doing. Although I might end up throwing in some landmark that's more easily spotted that way or something.

Googleshng
07-20-2011, 09:13 PM
So this is buggy as @#$%, but I'd rather post it than make a bunch of animated gifs.

Insanely buggy link! (http://www.kekkai.org/google/samples/moon-serpent.html)

That'll break if you look at it funny, because I just hastily plugged in some really quick and dirty character swappery into the latest "stable" version I had lying around, where I was about, oh, 10% of the way through the process of doing my crazy pole garbage.

What you're intended to do here is just kinda walk around in circles checking out these new sprites I just tossed in, using X and C to switch between a for-now-nude version of the totally weird looking gold golem protagonist, and what a different character is actually going to look like when I'm done with this.

What you can do if you just want to see what buggy unstable code looks like is keep walking south after you see the warning line of random map tiles into Crazy Upside Down Land. As long as you keep going down until you're back in line with the well, this actually works totally fine (aside from how you don't come out in quite the right place yet, and I haven't added the function to flip corners around the right way). Until you've looped back around to being in-line with the right-side-up well though, %$#@ed up stuff is likely to happen when going in any other direction.

Again though, mainly all I'm trying to show off at the moment is these character sprites. It's hard working on this small a scale and making recognizable characters without just stealing the art style some old game has already worked out. I'm pretty happy with this. Kind of an FF6-but-not-quite proportionality, with enough room for the body that I can actually have recognizable differences in clothing styles (and make limbs generally identifiable even if everything's the same color). In particular, I'm happy with what I've got here in comparison to the games I'm "competing" with. Face sideways in the original Dragon Warrior, or look at an NPC's map sprite in the original Phantasy Star and you'll see what I mean.

Also, in addition to needing to generally clean this code up, I've apparently hit the point where I need to do some graphical pre-loading!

Lady
07-21-2011, 09:05 AM
hitting x and c clears the canvas terminally in ff4 osx, but I can make him walk. The walk animation seems really fast though, like he's shuffling

Kirin
07-21-2011, 10:45 AM
Yeah, I also get a blank screen from X or C on WinXP/Firefox right now. I wonder if the fast-walk animation would look less weird if it didn't pause slightly on each tile when holding down a direction - but I dunno if you can eliminate that with the framework you're using, or if there's too much I/O lag (or my computer's just slow).

Googleshng
07-21-2011, 02:20 PM
Yeah, the pauses between steps are a temporary thing as is... pretty much everything else. It's a combination of me having weird priorities and different browsers being not-quite standard in how they pass keystrokes along, particularly when it comes to repeats. Mostly the weird priorities though.

The screen clearing meanwhile is just me being super super lazy and jamming that in to the animation code. Should redraw the screen if you start walking after switching though, assuming it isn't hanging because graphics haven't finished loading. Again, I need a preloader.

And this, folks, is why people don't usually show stuff to people this early on.

Anyway though, yeah. I might need to tweak the animation speed some. Probably keep the scroll speed the same but half the speed on the characters.

Also, probably should have done this to begin with, but here's the actual spritesheet I'm using in there:
http://www.kekkai.org/google/samples/mapsprites.png

Fun fact- That's literally the file currently being called to load in the graphics. Stretching everything out for the blocky pixelated look is being done on the fly. If I were going for an SNES aesthetic rather than 8-bit, I could throw in some fake-y Mode 7 stuff here too.

Lady
07-21-2011, 03:06 PM
when the screen clears, there's no network activity, so I dont' think it's actually grabbing the new graphics
[edit- jk earlier, I'm on ff5, not 4]

Kirin
07-21-2011, 03:26 PM
Did you upload a new version? The walking animation looks better now, and X/C works to switch characters, though it still clears the map until you move.

But I'm also at home on Safari5/OSX10.6

Googleshng
07-21-2011, 04:01 PM
Screen clearing is because this is how sloppily I dropped the character switch in there:

Valid button gets pressed.
Well, no matter which direction we're moving in, we're going to be scrolling, so let's just clear the screen in advance.
Now call whichever screen scrolling command is relevant.
... and we'll just tuck in a temporary character switch right here!

I'm super lazy it turns out!

And... I did crop down the sprite sheet there (the original was 640x96, with a bunch of extra space for other characters/visible armor changes). Any speed performances that generated are either from the images fully loading sooner (or not needing to if you actually had a cached version the second time you looked), or, possibly, your browser chugging while it was cutting segments from a larger image file. Hopefully not that last one, but it's easy enough to optimize around if that turns out to be the case. Again, I'm going to need to add a preloader in soon. Should smooth things out all over.

Googleshng
07-29-2011, 05:46 PM
So one of the many steps in my crazy map flip bit here is to actually properly change the tile that gets called when looking at things upside down. Honestly, it's not hard at all, NW corners become SE corners, NE become SW, top sides bottom, left sides right. These are all pairs, so simplest way to do it is set up the sprite sheet with all the simple tiles on one side, all the regular ones on the other, run a little procedure to flip accordingly. This means I really should quit just making tiles on an as-needed basis though and really finalize which ones are going to go which way. So... time for more art! I'm messing with shorelines some more (there's some corners missing and I want a better grass/sand border), I've already got some nifty lake/pond stuff, I think rivers are covered there too albiet with somewhat ugly edges. Pretty sure I'm doing single-tile towns for this, and the maps for those don't get flipped. So all that leaves is mountains.

http://www.kekkai.org/google/samples/mountains.png

So here's some fun tile map drawing tips! For the base central mountain tile, I do what I always do. I make a bunch of little interesting features which aren't in line with the edges of the tile, mountain peaks spilling over the side, nothing really lined up in a straight angle. Makes it harder to see where the tile edges are when in a big clump, which is nice.

For the corners, it gets tricky. I need 12 tiles to do the shoreline, because I want to border every land mass with these, and they need flexibility. Lakes, I rounded corners off right on the edges, so you can connect corner to corner, or corner to flat edge, which saves on work. I'd like to do something similar with these but, well, mountains don't have nice smooth sides. I made 4 corners, taking the base tile, and shaving details off from one edge, until each can stand next to grass no problem (I might be tweaking these though, toss some hills in, whatever). A ring of 4 looks great, but, a straight line of them looks way off. However, since I generally slashed them all off at 45 degree angles, I can alternate and get some real sloppy natural edges. There's some annoying limitations on how I can set these up now of course, but I'm willing to live with'em. Forcing more natural looking shapes into the world map is a plus.

Traumadore
07-29-2011, 09:00 PM
If you actually manage the world-wrapping thing then you are a genious. I don't think it's ever been done before, but I suspect there's a reason for that.

Lady
07-29-2011, 11:36 PM
as best as I can wrap my mind around the last few posts, you want to make a world where australians actually are upside down compared to some arbitrary pole?_? or you're just trying to show another angle of the same scenery? I really can't follow it!

eternaljwh
07-30-2011, 01:55 AM
I think the mountains could stand to be broader- I thought they were vegetation until I read that they were mountains.

Googleshng
07-30-2011, 02:05 AM
Let's say you have a continent shaped like "P" you're looking at with a satellite camera. Spin around around to the far side of the world going east or west and you're looking at the ocean on the far side of P-land. From here, go east or west, and eventually you'll come across P land again. In RPGs in general, if you were to spin the globe along the other access (i.e. you're panning north and south), go halfway around and there's a big P on screen again... but that's not what happens with a real globe. If you go north or south far enough, well, eventually you hit one of the poles, and technically from there you can't keep going, say, north, because any way you go is south. Let's say though, you just keep going spinning the globe the same way you have been to reach the pole. Eventually, you're going to come to that continent again, but from the angle you're spinning the globe, it's not going to look like "P" it's going to look like "d."

So... that's basically what I'm working out here. Try to go north or south too far, and when you hit the end of the world map and wrap around, you don't teleport to the other pole, you end up basically just flipping the map over and continuing along.

It's kind of confusing in practice, INCREDIBLY confusing trying to actually achieve the effect, and ultimately completely pointless, but I'm doing it anyway, because I hate how everything else ever cheats in a way that makes no sense if you think about it.

And just kind of as a general math exercise.


I think the mountains could stand to be broader- I thought they were vegetation until I read that they were mountains.

Fair point, yeah. I might end up taking a second pass at them. The thing is, I can't actually think of any 8-bit (or 16 for that matter) which really gets the look of mountains right on the map. The DQ games make an individual little mountain on every tile, which just looks awful. The Final Fantasies just kinda go with these... stone slabs or brown messes depending on the game. Phantasy Star really just kinda had the one mountain and avoided the situation. I actually started out here with fewer peaks and wider slopes, but it got back into obvious tile territory. What's everyone think of the snow caps by the way?

Also, thanks for reminding me. I still need to give forests the same sort of treatment here.

Mightyblue
07-30-2011, 02:22 AM
Hmm, maybe try for a wider angle on the mountains themselves and fewer peaks per tile?

Lady
07-30-2011, 12:48 PM
Let's say you have a continent shaped like "P" you're looking at with a satellite camera. Spin around around to the far side of the world going east or west and you're looking at the ocean on the far side of P-land. From here, go east or west, and eventually you'll come across P land again. In RPGs in general, if you were to spin the globe along the other access (i.e. you're panning north and south), go halfway around and there's a big P on screen again... but that's not what happens with a real globe. If you go north or south far enough, well, eventually you hit one of the poles, and technically from there you can't keep going, say, north, because any way you go is south. Let's say though, you just keep going spinning the globe the same way you have been to reach the pole. Eventually, you're going to come to that continent again, but from the angle you're spinning the globe, it's not going to look like "P" it's going to look like "d."

So... that's basically what I'm working out here. Try to go north or south too far, and when you hit the end of the world map and wrap around, you don't teleport to the other pole, you end up basically just flipping the map over and continuing along.

but wouldn't that be saying that each side of the world is identical to the other?, split across some arbitrary plane? if you kept going forward, you wouldn't run into the P continent again until you passed the other pole. That'd only happen if you turned around and went back the way you came, right?

Kirin
07-31-2011, 08:36 AM
Yeah, if you go in a straight line starting north from the western hemisphere, you'd go through an "upside down" eastern hemisphere and then come back to a "right-side up" western hemisphere again. So you wouldn't actually see your P upside down by just traveling straight, but you would see inverted versions of the opposite side of the world. So, when passing the pole, inverting the map *and* shifting it half a world-width to the side should work (roughly).

Googleshng
07-31-2011, 05:20 PM
Right, I was simplifying a bit. If the western hemisphere has a big W and the eastern has a big P, starting out heading north in the west you see W d W d W d, and if you start in the east you see P M P M P M as you loop around.

Mightyblue
07-31-2011, 07:12 PM
Wouldn't it just be easier to just have the map rotate as the player changes directions so that "north" follows the direction the player is looking?

Googleshng
07-31-2011, 08:24 PM
Not by a long shot, no.

Traumadore
08-01-2011, 08:49 AM
Wouldn't it just be easier to just have the map rotate as the player changes directions so that "north" follows the direction the player is looking?

That still doesn't solve the tiling cheats in a 2D game. Personally I don't think it's something that's broken and thus doesn't need fixing. No games were less fun because of it, thus it's a marginal concern in the context of a game, where Fun is King.

Googleshng
10-08-2011, 01:27 AM
So I've kinda been taking a break from working on this, mainly because other stuff was taking higher priority, then when that cleared up I went on such a Minecraft bender.

The last thing I was working on was that crazy polar map flip thing. I actually worked out how to do that without too much of a headache, but since one step involves twisting any tile around that sits at an angle, and it's easier to do that if they're all on the same side of the sheet, I figured I might as well draw the whole world map tileset. Generally, not a big deal. A lot I was able to recycle from other tilesets I've made over the years just kinda for the hell of it, and I've already shown off these totally boss Toriyama-looking mountains all of you apparently hate. Eventually though I was laid low by the mortal enemy of all map tile artists. Trees.

Seriously. Go find an RPG with decent looking trees. DQ8 manages, but they kinda cheated and made big freaking polygonal models for every individual tree. With tiles, basically your options are just to make individual trees that look ugly because you don't have the space to not have them set up in neat orderly rows and are totally out of scale with the rest of the world, or you can go the FF route and make some weird green spongy thing which doesn't really look like a forest but hey, close enough.

Anyway, I eventually got some trees I don't totally hate and finished the rest of these tiles (well I still need snow for the poles but solid white isn't exactly hard to pull off). Then I went and made dusk and night variants, because I accidentally pulled off a pretty snazzy setting sun for the combat backgrounds and there's some mechanical benefits. So basically, here's what we've got:
http://www.kekkai.org/google/samples/day-tiles.png
http://www.kekkai.org/google/samples/dusk-tiles.png
http://www.kekkai.org/google/samples/night-tiles.png

The single space of sand looks horrible because it's really only meant for placing adjacent to coastlines, and I didn't want to bother with that much water.

Of course, had I bothered with that much water, the dusk sand and night ocean wouldn't look so wrong. You're kinda going to have to take my word for it, but if the water is on the outside and the land on the inside, both look better. Which, incidentally, is the only way you're going to see these shoreline tiles. Any chunk of water that isn't part of the big frelling ocean gets handled with my handy dandy lake tiles, which are so handy they're doubling as rivers here.

Anyway, aside from the 16-color palette deal, I'm trying to minimize tile usage here. There's 12 shoreline tiles (16 if you count the river miles) because coastlines need serious freedom of movement. Every other terrain border gets restricted to 4 tiles, which forces some interesting placement behavior. The lake/rivers use the most basic approach possible because they look just fine hugging the tile edges. Mountains basically get right triangles, which lends to diagonal sprawls I'm actually rather fond of, and trees have rounded off sides in the 4 cardinal directions. It's pretty severely limiting really, nothing but rectangles with the corners removed, but all I want from them is a little visual variety here and there, so I don't mind not being able to do sprawling irregular shapes.

The other thing you can see here, especially in the night screen, is that a slight error in how tiles are getting sliced out of the sheet bleeds a little color over from the edges. I've already gone and redone the whole sheet with bleed space around the edges of each tile which should fix that, but I figured I'd leave it in here in case anyone wanted to work out exactly where the borders were.

Anyway, still not entirely happy with this, but... take a good look at any 8-bit RPG's tileset. I'm already seriously ahead of the curve. And oh hey, I seem to have accidentally anti-aliased the dusk hills. Neat.

I should probably make that town bigger though.

Kirin
10-10-2011, 11:29 AM
Not bad at all, though I have to wonder if there's any way, with your limited palette, to wrangle dusk sand that looks a little less like lava. Also, yeah, the town should totally be bigger; it's pretty unidentifiable right now.

Lady
10-10-2011, 12:37 PM
Try orange and yellow dithering for your dusk sand

Googleshng
10-10-2011, 05:26 PM
I was experimenting around a while back with how dithering could expand the palette here and frankly yellow crashes with just about everything:

http://www.kekkai.org/google/samples/palette-fun.png

Might work better if I use the pink-orange combo there though. It'll still be a pretty dramatic change, but it won't look like there's been a horrible massacre along every shoreline. Might pink up the water highlights too while I'm at it.

Remind me if I ever use this palette restriction again to go heavy on the blues and purples. All kinds of variety there.

Lady
10-10-2011, 06:00 PM
Just because it doesn't look good like a solid shade doesn't mean it won't do what you want, especially considering you're giving the sand extra dots of texture anyway. Step out and try it.

Kirin
10-11-2011, 09:32 AM
Or maybe even a three-way yellow-orange-tan dither or something. If you used the yellow at say half the frequency of the other two it might look like sparkles in the sunset... or it might just look garish, hard to say without trying it.

(Last time I attempted a tileset was waaaaay back in the day, working in B&W. Simplifies things quite a bit, though it does allow for some interesting stylistic short-hand.)

Googleshng
10-21-2011, 02:59 AM
http://www.kekkai.org/google/samples/dusk-tweaked.png

So the yellow-orange isn't nearly as bad as I thought in practice. Also visible here, the bigger town tile, actually bothering to shade the trees. Pretty sure I just need to tweak add the bleeds around the edges to avoid weird grid lines there and I'll officially be done messing with this particular file.

Googleshng
04-14-2013, 08:59 PM
So after spending waaaay too long on the back burner, this is getting dusted off again. A lot of things are currently undergoing a major overhaul, but I'm pretty much keeping a live up to the minute version up here (http://studioxia.com/moonserpent/) right now.

Don't bother telling me about the 5 million "bugs" because it's no where near the point where things should, you know, work. This IS however a potentially final version of the tileset, night/day timing, and starting bits of the overworld. Character sprites too I suppose.

Things I'm antsy about:

Not really sure about this character sprite style. I'm trying to do my own thing with it, and given that I'm going for an early 8-bit aesthetic, the bar (http://pnmedia.gamespy.com/classicgaming.gamespy.com/images/oldsite/clusterimages/dwar3.gif) is not (http://mybrainongames.files.wordpress.com/2012/03/phantasy-star-town.png) that high (http://www.geeklegacy.com/wp-content/uploads/2012/08/final-fantasy-1-nes-screenshot.jpg) but... I feel like these heads are too round or something.

The straight river/lake-interior tile has these little green pixels on the corners. They're basically invisible in the daylight, and the idea was to just kinda make them wavy and maybe suggest plants of some sort in lakes but... those gotta go, don't they.

Hills are hard. I've tweaked these a lot to try to get a nice single tile that doesn't look really "tiley" or look weird next to anything else. Really happy with how they look at sunset now, not sure about day and night though.

Forests are the hardest thing ever. Again, one thing I really want to avoid here is obvious tiling, so I'm going for more of an FF approach than DQ1 with the forests and mountains. Other than with coastlines where it can't really be helped though, I wanted to avoid going with 8+ tiles for a single terrain type. So, I was experimenting with trees and mountains. Trees I set up with a top/left/right/bottom/center thing (so I basically have a + of tiles), mountains only have corners and a center. I think both look OK, but I was worried about how actually laying a mountain range out would look until I tried it. Pretty sure I nailed it, but forests are a pain. I can only lay them out in rectangles, but even then I needed to go up to 7 tiles just to pull off this weird collection of rectangles thing. So... should I take another stab at making them follow mountain logic, or stick with this?

It's not just me right? These mountains look fantastic, right?

Pretty sure I'm good to go making a map with these. Can't cross mountains, rivers or oceans on foot. No way to stick a mountain tile next to an ocean tile. I figure for vehicle progression, you actually get a ship first, which lets you do a ton of exploration, but keep getting cut off by rivers. Then maybe toss in like, a rowboat, allowing you to go ocean to river, maybe an incrimental upgrade to get over rivers that just kinda chop out chunks of the map by draining into lakes, maybe a low-flying airship that can't cross mountains, maybe even one that can but has restrictions on landing. Ideally, I'm actually going for enough permutations that I can do a sequel that actually recycles the same map, but progresses differently by having a different vehicle track.

Traumadore
04-14-2013, 10:39 PM
That doesn't display for me. do you have a screenshot of your current tiles?

Googleshng
04-14-2013, 10:48 PM
That doesn't display for me. do you have a screenshot of your current tiles?

Oh right. Should have mentioned that. One of the many currently missing features is a preloader. Blank screen until you start hitting arrow keys.

And due to the inherently open-source-as-all-getout nature of this particular project, a little digging gives you the whole tileset (http://studioxia.com/moonserpent/terrain.png) here.

Might as well toss some posterity screens in anyway though:
http://www.kekkai.org/google/samples/41413screens.png

These actually show things off pretty well. While I'm at it, let me expand on the mountain thing- All I have is the center mountains-here-and-on-all-sides-of-me tile, 4 corners, and variations on those 4 corners that also feature caves and rivers forming (which are really restrictive- i.e. a river can only flow out west from the northwest mountain tile, if it's a southwest mountain tile, it has to flow down).

The thing about this is, there's an inherent bias towards placing these in diagonal configurations. The look and flow really naturally like that, as really showcased in the middle screenshot there. If the edge of a mountain range needs to be horizontal or vertical, you end up with this really visible jagged pattern: /\/\/\/\ which looks awful if repeated too much, but works just fine for a 3 tile stretch (again, plenty of examples here).

This leads to some interesting restrictions on how I can lay things out. Obviously, I can't put down less than a 2x2 clump of mountains, but I also can't put down a 3x3 clump, and which a 4x4 clump works, it looks pretty nasty. So, weird irregular shapes all over. And then if I want rivers coming out, which I do, because they're the primary means of sectioning off the map, more restrictions there. And any tile a river can start in is one a cave can't... fun design challenge!

Olli T
04-14-2013, 11:34 PM
Yeah, the character sprite needs some work. The walking looks pretty awkward, especially from the sides. Smaller arm movement could work. The up/down walk animation should have less outwards-pointing feet.

Googleshng
04-15-2013, 12:46 AM
This is where things get tricky in 16x24 land. The feet can really only point out to the sides or be stumpy hooves. One of each might work out OK I suppose, and I may have to test that at some point.

Mind going into more detail on the arm thing though? I can't really think of a good way to go with only 2 frames besides fully forward and fully down.

Olli T
04-15-2013, 01:08 AM
This is where things get tricky in 16x24 land. The feet can really only point out to the sides or be stumpy hooves. One of each might work out OK I suppose, and I may have to test that at some point.


That could work. There's also room to make the feet less outward-pointing. Not sure what is the best solution.


Mind going into more detail on the arm thing though? I can't really think of a good way to go with only 2 frames besides fully forward and fully down.

Now it looks like both arms are moving forward and back at the same time. Either reduce the amount of arm movement or show the opposite arm from behind the body a little.

Oh, one more thing: the hair could maybe be static? Now it wiggles a lot.

Googleshng
04-15-2013, 03:03 AM
There's also room to make the feet less outward-pointing.

There actually isn't. Right now, her leg is 2 pixels wide, and her foot is 3. It's like the famous thing with Mario's nose. It can be huge, or it can not not exist. No middle ground.

Now it looks like both arms are moving forward and back at the same time. Either reduce the amount of arm movement or show the opposite arm from behind the body a little.

AH. Yeah, that's definitely something to consider. I think I actually tried it at one point and it really didn't work, because the palette doesn't really support the shading it would take to get across. Totally something I'd be doing if I was going 16-bit style and had a broader palette to work with though. And its still something I might try playing around with later. Kinda want to get these other character/outfit designs fleshed out, toss in conga line code, and do some side-by side comparisons.

Oh, one more thing: the hair could maybe be static? Now it wiggles a lot.

With this specific character, I actually am intentionally going for a lot of loose floppy movement as a stylistic sorta thing. I might tone it down a little though. Does it bug you in every direction or just the super-exaggerated right-facing frames?

Olli T
04-15-2013, 04:02 AM
There actually isn't. Right now, her leg is 2 pixels wide, and her foot is 3. It's like the famous thing with Mario's nose. It can be huge, or it can not not exist. No middle ground.

Ah, that's right. Oh well.


With this specific character, I actually am intentionally going for a lot of loose floppy movement as a stylistic sorta thing. I might tone it down a little though. Does it bug you in every direction or just the super-exaggerated right-facing frames?

Yeah, that's the one that caught my eye. It might not be so bad if other characters are less flashy.

Googleshng
04-18-2013, 08:30 PM
Officially made the tree tweak, and yeah, that worked out just fine:
http://www.kekkai.org/google/samples/after-trees.png

Other recent tweaks (This stuff should work for everyone, if not, let me know)-

The white-screen on load is dead!

Scrolling is smooth and bug free!

Input handling is exactly where I want it! (Right down to the point where you can, while holding right, tap down once to take a step down ASAP before continuing your rightward journey and you shouldn't scroll the page while moving downward.)

Animation speed seems pretty good for step distance!

Basic support for CONGA LINES is in place!

Things that are like they are just because I'm lazy-

What you can step on is inconsistent! (When there was about 1 screen worth of content, I made sure all the tiles appearing on that screen blocked movement when they should, I'll toss the rest on when I'm done walking through walls to see how mountain ranges look.)

There's two weird debug messages! (I don't want to misplace the code for stepping on particular tiles and tile types.)



I've also been working on a tileset for backgrounds while fighting (http://studioxia.com/moonserpent/combat-tiles.png). Only after completely finishing all 50 tiles was it pointed out to me that no actual 8-bit RPG actually builds combat backgrounds from tiles, they pretty much all just go with a single static image if anything, and things will go easier if I just do the same. Welp. Guess I'll use these anyway since I have'em. Maybe do some fancy business with drifting clouds. Plus hey, the 16-color palette already has me working under tighter limits than the games from my target retro year. Let's say the fake system I'm developing for is weird like this.

After I finish playing with these, I suppose the next step is to add in the other two party members/alternate looks for everyone, and fine tune those.

Live test link again. (http://studioxia.com/moonserpent/)

Olli T
04-18-2013, 11:40 PM
Awww, it's Threepio!

TK Flash
04-19-2013, 12:27 AM
That looked much better in motion than I expected it to. I like it.

Googleshng
04-19-2013, 01:37 AM
Thanks. Anyway, right now I have a jump sized conga line up and running with spacers in there, so it doesn't take too much effort to see all 4 characters animating from every angle.

The two in the back are the old models for Astra (AKA 3PO) and Rouge (AKA red hair), while the two in front have a couple tweaks. I shortened their arms by a pixel, and I did the hoof thing with their unlifted leg.

I'm thinking, from the back this is the way to go, but from the front, I really need to keep the toes on both feet, and I prefer the shorter arms if only to give me another minor way in which to make the big grey guy there all gangly and weird looking.

Feedback appreciated, particularly on the subject of said big grey dudes twinkly eyes. Plot wise, we've got 2 humans and two gem-eyed golems so this isn't a question of "why on earth give the obvious big bruiser twinkly gem eyes" just trying to work out if they read as such. And whether I should similarly animate Astra's.

Olli T
04-19-2013, 01:45 AM
Is Rouge a rogue?

Googleshng
04-19-2013, 02:57 AM
Obviously! Hence the big gold piratey earring and impractical adventuring clothes! Also the cheesy almost-pun name.

Torzelbaum
04-19-2013, 07:10 PM
That's a sausage that looks to be coming together well. For the most part. Care for some criticism / bug reports?

Also, I'm curious - what language did you write this in?

Googleshng
04-20-2013, 12:57 AM
That's a sausage that looks to be coming together well. For the most part. Care for some criticism / bug reports?

This whole thread is specifically here for the sake of criticism really, so go ahead on that front.

Bug-wise, I THINK the only outstanding ones are 2 testing features (walking through mountain-interiors and the stepped on hill/town ones), plus a Mac-only(?) oddity where holding command when hitting an arrow key is a bad idea. So... anything other than those is definitely worth mentioning. Oh, and the starting uncentered bit.

Also, I'm curious - what language did you write this in?[/QUOTE]

I am mainly piggybacking on the code to something my cousin is doing (hence the URL) but it's all just javascript and HTML5. Which has the interesting side effect that you can just view source and see how it ticks. Which, honestly, I'd prefer wasn't the case for various reasons but hey.

The advantage here (besides again, being able to piggyback on my cousin's thing) is that if it connects to the internet and has a keyboard, this should run on it. Removing that "has a keyboard" requirement is on the todo list. I'm particularly keen on adding Wiimote support and come to think of it I have no idea why that isn't in yet. Besides Opera being less friendly than most browsers about turning off the canvas tag's image "smoothing" feature.



Anyway though, what I was coming in here to say was I tweaked sprites a little more. Generally happy with the bodies at this point, and I'm testing something with making the heads less round. Facing left is unchanged, facing right is me smooshing faces in. I think it's generally an improvement but Rouge is bugging me. Also golem eyes are set to permanent twinkle. Thoughts?

The other thing I did was expand the map out enough to cover everywhere you can get before getting the ship, and rewrite the collision detection code. Dungeon code is sadly low on the list, so you kinda have to clip through that cave.

Not really sure what's next on the list. Either going to be towns or combat I guess. On which note, did I show these off?
http://studioxia.com/moonserpent/beach-dusk.pnghttp://studioxia.com/moonserpent/forest-day.png

Torzelbaum
04-20-2013, 09:09 AM
This whole thread is specifically here for the sake of criticism really, so go ahead on that front.I was going to mention how when walking down the fully stretched-out conga line went offscreen but it looks like you fixed that.

Anyway though, what I was coming in here to say was I tweaked sprites a little more. Generally happy with the bodies at this point, and I'm testing something with making the heads less round. Facing left is unchanged, facing right is me smooshing faces in. I think it's generally an improvement but Rouge is bugging me. Also golem eyes are set to permanent twinkle. Thoughts?I can't reallly tell any difference in facing left or facing right. Was that what you were going for? The animation for Astra's and the golem's eyes and Rouge's hair (mostly when walking right) looks weird. But I'm not sure if I can explain why I feel that way. Also, I think the dark-haired guy could use a more contrasting color for his sleeves or something - it's hard to tell where his hands/arms are. Also, I think it might be nice if when walking sideways more characters had different arm positions (like Rouge does as compared to the other three). Maybe somebody could swing their arm back.

Googleshng
04-20-2013, 01:35 PM
I was going to mention how when walking down the fully stretched-out conga line went offscreen but it looks like you fixed that.

Yeah, I had it all spaced out to get a better look at everyone's legs when going up and down but that much is pretty much settled on now.

I can't reallly tell any difference in facing left or facing right. Was that what you were going for?

Before, heads were perfectly spherical, with eyes pressed right up against the edges. That's still how it looks when facing to the left. Facing right I flattened the front of everyone's face out some and moved their eyes back. Not sure if this is an improvement or just makes things worse. I kinda like it on the priest though.

The animation for Astra's and the golem's eyes and Rouge's hair (mostly when walking right) looks weird. But I'm not sure if I can explain why I feel that way.

Agreed. Tweaked a little. Better?

Also, I think the dark-haired guy could use a more contrasting color for his sleeves or something - it's hard to tell where his hands/arms are. Also, I think it might be nice if when walking sideways more characters had different arm positions (like Rouge does as compared to the other three). Maybe somebody could swing their arm back.

Hmm... There's SOME variety as is, I could have Mr. Golem's swing more for some personality though. For now, time to work on other things though.

Googleshng
04-24-2013, 02:57 AM
I'll get back to sprite tweaking as soon as I get some input on that facing stuff, but took a quick break to get combat started. Here's how it stands as of now:

Backgrounds are in except for clouds. Not 100% happy with the tileset but it's pretty nice, especially along the beaches.

Menus are super-crappy placeholders. They're not even rendered "in engine" right now, which yields hilarious results if you have everyone cast a spell.

Fight, Magic, and Item are all placeholders that do nothing. Run is a placeholder that ends combat. So... run from every worm. It's the law.

Feedback good. (http://studioxia.com/moonserpent/)

Googleshng
04-25-2013, 02:48 AM
We now approach the bit where things get way less showy and the whole thing crashes more often as I start wedging some of that there gameplay in there. Which will be followed by the bit where you can kinda start playing the game with no save points and constant dead ends until you get sick to @#$%ing death of the starting region! I'd recommend not doing so.

Also shot in the dark, but if anyone wants to do a little creative type stuff, for little or no pay, at some point here I kinda want to toss in music and sound effects and such, and... that's the one end of things I just plain flat out have no clue about from either the technical end of how one creates really 8-bit sounding tunes, nor, honestly, how to compose something decent if I did.

So if anyone wants to bail me out on that front/point me in the right direction/give me the thumbs up on filing the serials off the Mythri soundtrack or whatever, that'd be neat.

Olli T
04-25-2013, 05:44 AM
Warg does chiptune music, right? Maybe he can contribute, or knows some people who can.

Googleshng
05-01-2013, 02:36 AM
Fun stuff at the moment:

A good chunk of groundwork for actual mechanics is in place.

I'm getting started on making Actual Towns... but getting distracted by the awesome bug when a town's map is too small to fit on screen. It just kinda goes and throws a mini-map over the corner of the overworld. I'm tempted to turn that into a feature of some sort.

I'm making use of a Festivus Gift (http://www.kekkai.org/google/random/turnabout-festivus/06.png) to make some barebones placeholder music. (http://studioxia.com/moonserpent/music/) Why yes, this DOES involve me holding my DS up to a cheap microphone, why do you ask?

Traumadore
05-01-2013, 08:00 AM
You can get an audio cable to connect the headphone port on the DS to the mic port on your PC too. If you or someone you know ever bought an iPod dock with speakers it likely came with just the right cable.

Also if I needed to compose music I would probably do it in Little Big Planet 2, so I don't think using WarioWare is weird at all!

As for sound effects I know you can get open source sound libraries to start with, and replace the assets later if what they have isn't specific enough for you. Also doing your own foley is fun as heck, but you probably want a slightly better microphone.

Traumadore
05-01-2013, 08:22 AM
My first impression when I loaded up the new update: Holy crap this is awesome!

I'm glad you fixed the tiling issues with the dithered dusk/night tileset. I also thought the dithered map looked bad in screenshots, but in action it's really cool. I was still able to walk through the interior of one of the mountains, but it was by a picture that looked like a mountain path so maybe that was intentional. I walked all the way around to the castle surrounded by small mountains.

In battle I tried attacking the biteworm, but then the worm got stuck in a cycle of attack messages against two of the party members for eternity so I had to reload the page. It also kept prompting me to enter multiple commands for each party member until there were like 8 command windows stretching way outside the game view.

Also if you're having several options that all sound like they do about the same thing in your attacks and retreat menus, please make sure they're well explained. I know they probably don't do anything different right now. I just think if you're trying to take only the good ideas then ambiguous spells, items, and abilities are not one of them. I get that in 1987 that was a part of every game, but I think one small concession to modernity wouldn't hurt.

My only thoughts on the graphics is maybe don't make the eyes of the gold and grey characters wiggle around when they walk. It's pretty distracting. Also about the town map glitch, maybe just work with your limitations and make the town map the same dimensions as the view, at the minimum. There were plenty of maps in old NES games that had a lot of extra open space, they just had invisible objects that sent you to the world map when you bumped into them, right?

I will play this game when it's done.

Googleshng
05-01-2013, 04:11 PM
You can get an audio cable to connect the headphone port on the DS to the mic port on your PC too. If you or someone you know ever bought an iPod dock with speakers it likely came with just the right cable.

Huh. I may have to seriously consider that. Or just, you know, find a DS emulator and a ROM of this game so I don't need to go outside the computer at all. That's still pretty neat though.

As for sound effects I know you can get open source sound libraries to start with, and replace the assets later if what they have isn't specific enough for you. Also doing your own foley is fun as heck, but you probably want a slightly better microphone.

I think I'm going to be OK when I get to sound effects. Games of the era I'm going for went with some pretty arbitrary and surreal stuff, and I have a program here that'll just randomly generate weird synthy sounds.

My first impression when I loaded up the new update: Holy crap this is awesome!

I'm glad you fixed the tiling issues with the dithered dusk/night tileset. I also thought the dithered map looked bad in screenshots, but in action it's really cool.

That's been fixed (in most browsers) for a while now. It turns out canvas tags are really really keen on uglifying things by default. Fixing it required this:
ctx.scale(2, 2);
ctx.mozImageSmoothingEnabled = false;
ctx.webkitImageSmoothingEnabled = false;
ctx.imageSmoothingEnabled = false;

And it's STILL trying to anti-alias a little in Safari, and a lot in Opera (Wii version at least) last I checked. Bugs the heck out of me. Pretty sure most current issues actually come from bad browser-side scaling methods. Looks totally great in Firefox though, so hey.

I was still able to walk through the interior of one of the mountains, but it was by a picture that looked like a mountain path so maybe that was intentional. I walked all the way around to the castle surrounded by small mountains.

As it stands, mountain-interiors are set to be passable so you can cheat through the one cave, while waiting for the actual proper dungeon exploration to go in. Which is hopefully going to look like a much less fancy version of this (http://studioxia.com/moonserpent/rpgbase-client/mazetest.html) because... Phantasy Star was a huge influence on me. (http://www.youtube.com/watch?v=OW4QfaloPl4#t=2m40s) That current sample there doesn't fly thanks to how much it ups the hardware requirements (and being too smooth).

In battle I tried attacking the biteworm, but then the worm got stuck in a cycle of attack messages against two of the party members for eternity so I had to reload the page. It also kept prompting me to enter multiple commands for each party member until there were like 8 command windows stretching way outside the game view.

Actual combat stuff is all kinds of under construction. Mainly because there's a few other things I'd like to get at least basically functioning first. At this particular moment, any for of running instantly ends combat, and Attack->Strike will actually do damage and kill things eventually (with ugly debug messages) and Repeat works exactly as intended. So... you can either run from everything, or you can have everyone Strike something the first time you get in a fight and then just repeat from there out.

Menus are also Totally Not Really In Yet. Literally even. Those are CSS stand-ins floating over the drawing window, which is why they're in the wrong resolution and wander out of frame on magical adventures.

Also if you're having several options that all sound like they do about the same thing in your attacks and retreat menus, please make sure they're well explained. I know they probably don't do anything different right now. I just think if you're trying to take only the good ideas then ambiguous spells, items, and abilities are not one of them. I get that in 1987 that was a part of every game, but I think one small concession to modernity wouldn't hurt.

For actual spells, I'm trying to be as clear and concise about what everything does as possible with 6-character names (which can get tricky). Old school RPGs were actually better about this on the whole than modern ones (I can guess what Freeze or Ice does a whole lot better than Blizaga or Mabufu). Not going to be perfect though since I legitimately have a restriction on how wordy I can be purely as a function of the low resolution.

The fact that choosing Attack or Defend gives you a giant menu of sub-options though is intentionally unintuitive, specifically so there are really handy early game hints to be had from talking to NPCs and hopefully train the player into that "talk to every random dude, they actually all say important things" mindset. Alternatively, they're something to mess around with experimentally if you find yourself stuck grinding (and before people freak out, I'm not going all Dragon Warrior with it, really smart play should allow for a grind-free run, but a fair bit should be needed to really brute force things).

My only thoughts on the graphics is maybe don't make the eyes of the gold and grey characters wiggle around when they walk. It's pretty distracting.

That's the one big sprite issue I was still looking for feedback on, yeah. I might kill the twinkle, wouldn't mind a couple more opinions first.

Also about the town map glitch, maybe just work with your limitations and make the town map the same dimensions as the view, at the minimum. There were plenty of maps in old NES games that had a lot of extra open space, they just had invisible objects that sent you to the world map when you bumped into them, right?

It's not something I expect to be an actual issue I need to avoid really. Just making a town big enough to contain the basic shops/inn/save point setup and a couple people to talk to should make it at least fill a single screen, plus I don't think I'm going to stick with this walk off the edge business as the walk animations look kinda janky on a static background. Just one of those "hey, that's a neat accident" sorta deals.

I will play this game when it's done.

Woo! Should really only take a couple months to finish once all the major basecode infrastructure is in, and there isn't TOO much of that left to go. I'm rather looking forward to it myself, really.

Kishi
05-01-2013, 04:55 PM
As it stands, mountain-interiors are set to be passable so you can cheat through the one cave, while waiting for the actual proper dungeon exploration to go in. Which is hopefully going to look like a much less fancy version of this (http://studioxia.com/moonserpent/rpgbase-client/mazetest.html) because... Phantasy Star was a huge influence on me. (http://www.youtube.com/watch?v=OW4QfaloPl4#t=2m40s) That current sample there doesn't fly thanks to how much it ups the hardware requirements (and being too smooth).

Phantasy Star is pretty smooth itself. The difference right now seems to be more in the draw distance and non-fixed corridor width.

Googleshng
05-01-2013, 06:02 PM
Phantasy Star is pretty smooth itself. The difference right now seems to be more in the draw distance and non-fixed corridor width.

Phantasy Star's dungeons are so awesome I would copy exactly what they did in a second if I knew exactly how they did it. By smooth though I mean this uses some 3D plug-in that does not especially play nice with my resolution lowering gimmick or restricted color palette.

More importantly, my computer's graphics card is not up to the task of running it. Which... yeah.

TK Flash
05-02-2013, 02:02 AM
I am seconding getting yourself a double-male (http://www.amazon.com/QVS-CC400M-06-feet-Audio-Cable/dp/B0000932A9) speaker cable to hook your DS up to your computer mic input. You'll get much better sound that way.

Good work on the songs so far.

Olli T
05-02-2013, 02:29 AM
I like the progress this has made in the last week or so and I'm curious about how this will turn out. I especially like the context-sensitive battle backgrounds, they look really nice!

I'm also seconding non-glittery robot eyes.

Googleshng
05-02-2013, 06:00 PM
I am seconding getting yourself a double-male (http://www.amazon.com/QVS-CC400M-06-feet-Audio-Cable/dp/B0000932A9) speaker cable to hook your DS up to your computer mic input. You'll get much better sound that way.

Good work on the songs so far.

So, weirdly enough, turns out I had one of those lying around! But... something seems to have gone terribly wrong here.

Recorded by holding DS to microphone. (http://studioxia.com/moonserpent/music/battle.mp3)

Connecting DS to laptop directly. (http://studioxia.com/moonserpent/music/DS%20test.wav)

Anyone know why this is warbly as all hell?

Kishi
05-02-2013, 06:25 PM
That must be what it sounds like when Charlie Brown's parents fight.

Googleshng
05-02-2013, 07:29 PM
Yeah... playing around with it some more (mic to speaker (http://studioxia.com/moonserpent/music/cave-exploration.mp3)) (direct connection (http://studioxia.com/moonserpent/music/cave-corded.wav)) what it seems like is that these big eyesore bulbs on this cord are causing stability issues on the DS end. I may require More Convoluted Means of getting this to work.

Kinda proud of this cave music though. Here's hoping I can actually work something out here... actually I suppose if someone else had this game and a better way of stripping their DS audio some kinda wacky go-between would work.

Traumadore
05-06-2013, 10:28 AM
It could also be that the extremely crappy DS speakers are smoothing over a lot of distortion and hearing more accurate output is jarring? Just a hypothesis. I would still go with the second file of the two.

Cool music, by the way!

Googleshng
05-06-2013, 02:02 PM
Fiddling around with it a bit more eventually yielded something less wonky, although the lowest notes in that one track still kinda just drop out (http://studioxia.com/moonserpent/music/cave.mp3). Other ones have significantly better results (http://studioxia.com/moonserpent/music/boss.mp3).

Now, the question is, can I get these to loop smoothly in every browser?

Guild
05-06-2013, 03:35 PM
Your dedication to this project is inspiring, Googleshng. I'm sorta curious why you aren't using computer software to generate the music. Seems like that would eliminate any warble/static completely.

Googleshng
05-06-2013, 04:04 PM
Your dedication to this project is inspiring, Googleshng. I'm sorta curious why you aren't using computer software to generate the music. Seems like that would eliminate any warble/static completely.

Because I seriously know absolutely nothing at all about basic music composition theory, the programs I would need for that, or the actual restrictions I should be placing on myself to stay true to the 1987 aesthetic I'm going with for everything else.

Seriously, I'm plenty confident in my ability to produce simple little low-res sprites and background tiles, lay out maps, stat things out, and if absolutely forced I can sit down and code stuff, but the music for this thing was the one thing I where I was willing to admit my shortcomings and pass it off to someone else. It's generally miraculous that I have stuff here that sounds halfway decent as a result of just kinda randomly screwing around with an odd little toy.

Guild
05-08-2013, 05:09 PM
Alright, it seems that another word for 8-bit music is Chiptunes. So a google search for a chiptunes composer shows me that I can use ymVST (http://preromanbritain.com/ymvst/) on the SaviHOST (http://www.hermannseib.com/english/savihost.htm) platform to generate simple chiptune sound effects using a keyboard. I don't have a keyboard, so it's on to FruityLoops on pirate bay to act as my mechanical musician. That installed, I can open the programs and record some simple chiptune sound effects, import them to FruityLoops and begin composing them into songs, theoretically.

Sounds easy, turns out to be tough as hell.

First of all the chiptune emulator ymVST doesn't seem to have a hot button for record start/stop, so all the waveforms I generate and record have these huge gaps of silence on either end of them while I move my mouse down to click a key then back up to hit STOP RECORDING. In addition, fruityloops is confusing as s%it. So it's time for 1) more research into editing sound files and 2) fruityloops simple tutorials.

To be continued...

Mogri
05-08-2013, 05:14 PM
Because I seriously know absolutely nothing at all about basic music composition theory, the programs I would need for that, or the actual restrictions I should be placing on myself to stay true to the 1987 aesthetic I'm going with for everything else.

Seriously, I'm plenty confident in my ability to produce simple little low-res sprites and background tiles, lay out maps, stat things out, and if absolutely forced I can sit down and code stuff, but the music for this thing was the one thing I where I was willing to admit my shortcomings and pass it off to someone else. It's generally miraculous that I have stuff here that sounds halfway decent as a result of just kinda randomly screwing around with an odd little toy.

Try Famitracker. There are some decent tutorials on YouTube and the software is free.

TK Flash
05-09-2013, 07:16 AM
I thought the music samples sounded great, myself.

Googleshng
05-09-2013, 02:15 PM
Thanks. And yeah, at this point, I'm not terribly concerned with finding the best possible solution on the music front. I've got something that works, I'm good.

Guild
05-09-2013, 03:05 PM
Alright, I spent about 4 hours playing with Fruity loops then finally broke down and watched a video that showed me how to set up and make songs, then I found a tutorial on chiptune emulation (http://www.neoseeker.com/forums/97/t1222386-masterclass-fruity-loops-8-bit-tutorial/) and created this by following their instructions. And holy crap, that took another 4 hours. Plus it's wonky because I didn't bother being careful. Also, it needs a chorus, whcih I had planned but I'll have to put off for another day.

LINK REMOVED - SEE NEXT POST

According to the guy's tutorial, this is very authentic chiptune emulation.

Guild
05-09-2013, 07:17 PM
Alright, I finished the song insofar as I made it a little longer and added some variety of sounds. For a first shot it's not complete garbage? I'll try to write a few more songs later this week. Music creation is definitely something that takes practice and lots of time.

http://www.mediafire.com/?94dd48fd5zrikmq

Tyler: i like how in the thread you're like hey man this is easy in this hundred dollar professional program
Tyler: this is unlistenable
i love the NES tones but you got to learn how to count time
me: hahaha
yeah i'm a bad artist too
me: Well maybe someone who doesn't suck at music composition will read my posts and make not-crap for google.

NiemenZ
05-09-2013, 10:58 PM
Man, FruityLoops is a BITCH for emulating chiptunes. Trust me, I've tried. D:

See the Tuned Chips (http://www.talking-time.net/showthread.php?t=14076) thread for a few other links; I've been interested in that field a while, and with the incoming paychecks (and being able to pay off my electric cello) Imma make the real thang happen. Hardware chiptunes sound the best!
...in theory.

That being said, I'd loveloveLOVE to have a legit reason to make musics again! I'm so rusty I'm not even iron anymore!
JUST IRON OXIDE.

Guild
05-10-2013, 12:02 AM
As far as I can tell the only hard part is making the music sound good. Of course it might have been a little easier for me since I've worked with oscilloscopes and am therefore somewhat (I feel) more familiar with how to work with that imagery/concept.

Googleshng: On that bad song I wrote there is 1 channel left unused. Chiptunes use 4 channels of sound, so if you wanted to program all your sound effects on a single channel you could maintain TOTAL authenticity if you also programmed all your music to have only 3 channels so that there are never more than 4 channels making sound at any given time. I can also make explosions and punches on a single channel for you if you need, but I'm all thumbs at composition.

Olli T
05-10-2013, 01:52 AM
Chiptunes use 4 channels of sound, so if you wanted to program all your sound effects on a single channel you could maintain TOTAL authenticity if you also programmed all your music to have only 3 channels so that there are never more than 4 channels making sound at any given time. I can also make explosions and punches on a single channel for you if you need, but I'm all thumbs at composition.

The amount of channels you have depends on the chip - for example, the SID chip on Commodore 64 has three (although a "virtual" fourth channel can be created via modulation trickery). As a result, C64 chiptune music uses a lot of really fast arpeggios (playing chords where the notes aren't played simultaneously but instead in a quick sequence on the same channel)

Googleshng
05-10-2013, 02:23 AM
I am generally restricting myself to, if I recall, 2 channels with anything that might have sound effects going, 3 otherwise yeah. That said this is getting a little deraily up in here.

On the other hand, not much to be said while I'm tweaking stuff off camera I suppose. Soon to come: Actual windows and NPCs.

TK Flash
05-10-2013, 05:17 AM
It's only a derail if you're sure you want to go with the DS Mp3s, which is no problem. If you're set on the one music maker, then the other guys should move their discussion to the chiptune thread.

I think the male-to-male DS cable stuff sounds fine. I'd like to hear more tunes though.

TK Flash
05-14-2013, 03:00 AM
I suspect the best sound quality you're going to get with Warioware and a male cable is to record each track on solo mode into a separate audacity channel, then mix it again using audacity. I don't even know if it has a solo mode, but I'm going to try it myself and see.

Edit: Shit, wrong warioware game here.

Googleshng
06-07-2013, 05:38 PM
Very rapidly approaching the point now where curious folks will be able to play the first 15 minutes or so of this sucker before hitting an unexpected edge of the world!

Most notably, the town (well, "town") just south of where you start can be entered, and is close starting to look pretty close to finished. There's a bit more boring code stuff that needs testing and such, then all these party members are going to be vanishing off to the places they actually show up, and monsters that aren't worms will be showing up, and all that good stuff. Speaking of monsters showing up, this was a bit of a pain:
http://studioxia.com/moonserpent/monsters/stoneman.png

Googleshng
07-13-2013, 04:04 AM
So I've been continuing to chip away at this here and there. The combat code is like, 50% in. Spells are placeholders, items are a little buggy, running away works too well, and a couple attack/defend options aren't quite in all the way (engage dodge and cower) but... yeah important nuts and bolts stuff is slow and boring and holds up the fun stuff.

Still, you can wander around and get killed by wimpy monsters or mindlessly grind them, that's something.

Here's something else! I'm bucking the trend of 8-bit games and changing appearances based on armor:
http://studioxia.com/moonserpent/pc-sprites-no-spoil.png

These of course always look kinda lousy without the context of animation and backgrounds, but so far so good? Not erring too sleazy on Sleazy Roguish Gal? (That third one I just started working on, for what it's worth, provides the 0 points of defense it looks like it does). Vests read as such?

It's interesting deciding what to do with these, because there's only so many viable colors for things that look at all protective, which already see a lot of use in these characters, and I'm restricted to stuff I can convey in 8 all-caps characters. SILKWRAP LTHRGOWN HIDEVEST etc.

Also of note right now- most of a functioning town (with a couple obvious placeholders) and an early stab at a 3D CAVE ENGINE. Check it out now, because it actually looks too good to use as is. Gotta staircase up them vectors and dither the those greys to only use 3 colors. Plus there's this wall-clipping thing, and monsters should be there, and torches but, hey.

Olli T
07-13-2013, 04:36 AM
How do I get to AMAZING 3D CAVE?

Googleshng
07-13-2013, 02:16 PM
Go east until there's mountains, then south until you see the cave leading into those mountains, by the second town I should really put in.

Also since I haven't posted this link in a while... (http://studioxia.com/moonserpent/)

Traumadore
07-17-2013, 01:42 PM
All I see today is a small square of a menu box with nothing in it. I wanna see the cave!

Googleshng
07-17-2013, 03:00 PM
All I see today is a small square of a menu box with nothing in it. I wanna see the cave!

Try reloading? Also browser? Platform? Error console messages if any? Pretty sure the whole thing should be pretty stable today.

Guild
07-17-2013, 04:03 PM
Looking good man! A literal bug killed me, not a computer bug. I wanted to see the cave but I guess I should wait until a walkthrough exists :)

Traumadore
07-17-2013, 04:07 PM
Try reloading? Also browser? Platform? Error console messages if any? Pretty sure the whole thing should be pretty stable today.

Windows 7, Internet Explorer, reloading did nothing, no error messages.

Googleshng
07-17-2013, 04:58 PM
Looking good man! A literal bug killed me, not a computer bug. I wanted to see the cave but I guess I should wait until a walkthrough exists :)

I'm reasonably certain that any form of running has not yet been set to actually start a round, so Cowardly Tourism works out just fine.

Windows 7, Internet Explorer, reloading did nothing, no error messages.

Aha. Probably some quirky less universal than previously believed javascript somewhere. Added to the list of things to fix, meanwhile if you're curious enough, it should be fine in Firefox.

Teaspoon
07-17-2013, 05:53 PM
I...I can't figure out how to run or fight. I'm stuck on the combat screen.

It looks pretty though.

Guild
07-18-2013, 12:16 AM
On my keyboard it's X to make a choice, and just pick Escape (if you can). Then pick one of the four options that works (sometimes the first one doesn't work for me for some reason) and bam, you escape 100% of the time I think.

http://s23.postimg.org/pp5hlys6j/ghjk.png

Using this method, I found these hills in the middle of nowhere.

Googleshng
07-18-2013, 12:22 AM
I...I can't figure out how to run or fight. I'm stuck on the combat screen.

Look down slightly:
http://studioxia.com/moonserpent/d-pad.png

It looks pretty though.

Thanks. I'm actually precariously close to the point where all the basic functionality is fully in, and I can get to balancing/fleshing out the actual meat of the game. Then it's just a question of dealing with some super ugly placeholders like how awful these menus are and the flippy-clippy dungeon walls.

And, at this exact moment, what it is is, a manner of escaping has an X% chance of working when selected.... but the part where a round of combat happens along with making that check is not yet in. So like, the 30% effective one? You select that, and you just keep hitting C with nothing happening at all until that d100 gives you a 30 or less.

Hopefully this will cease to be true by the end of the weekend.

Googleshng
07-31-2013, 04:27 PM
OK so... at this point this is pretty well resembling a game here!

Magic is, I think, still slightly on the honor system, with Health being the only thing you should cast, and you shouldn't be getting it until level 3.

Items might not be properly consumed when used in battle.

There is a Pretty Serious outstanding bug where it is highly recommended you never hit X as a battle is loading, and never exit the cave unless you're sure you won't trigger a fight on the exit tile.

Torches are on the honor system, try to buy one before entering the cave even though it does nothing.

May still not run in Windows Explorer, don't think I've yet gotten around to iPad support.

Equipment costing 100 is placeholder gear. Don't go saving up for it.

Those points aside, there's a decent chunk of actual playable game here (http://studioxia.com/moonserpent/) now!

If you have 2 party members, you're out of new content. Particularly looking for feedback on how the NPCs in towns beyond the first look. Wouldn't mind gameplay feedback either I suppose.

Googleshng
10-23-2013, 02:41 AM
Help I can't font!

http://studioxia.com/moonserpent/plot/title1.png

Serifs are tricky bastards and I can't figure out just what here is making my eyes say "gross!"

Also there's an intro now when you start playing and functional torches and very few remaining plot placeholders. Soon I'll be out of stuff to work on that isn't just getting all fiddly with stats!


Also it's been a while and a lot of major code overhaulage has happened. Curious how this is doing on the "runs on everyone's browser" front right now.

Olli T
10-23-2013, 03:43 AM
Tried it on Firefox. Couldn't get past the intro. I managed only to clear the first "text box" and then it stopped.

"Moon" looks nice on that typeface, but "Serpent" is kind of bad. Particularly the E, R and P, the other letters are mostly fine.

Guild
10-23-2013, 12:43 PM
I've noticed you seem to be good at lots of things with no formal training, and as I'm the same way I'm gonna take another whack at helping,
\
Can you describe what your eyes dislike about them? You might just be saturated, which is where you stare at something so long you lose objectivity, just in case anyone doesn't know that. It's pretty great to me, because all the problems I had with it I fixed here in a few minutes so you can see even if I were to change stuff there's not much I would change really.

First of all that moon is bad ass.

While analyzing your typography I noticed you repeated the same patterns for similar parts of letters, such as the serifs all follow rules, and so do lines joining ascenders like in the bottom of the P's bowl... good instincts but you missed a few subtleties such as you followed the rules of repetition for serifs but when you finished the bowls on all your letters looked like fisheyes that were out of center from the rest of the letter, and so now you either 1) change the font to be more fishlike or B) alter the rules you came up with so the bowls don't look like fish eyes, and as a pixel artist you know that can be 1 pixel away from happening. The disparity there happens strongest in the contrast with the O in moon, which has a perfectly centered calligraphic flat stroke making thicks on the sides and thins at the top and bottom, versus the fisheye bubblepop holes you have elsewhere which look off center.

If you really want to obsess and stress I'd recommend looking at some Arabic fonts for elements you can hijack. Here are a few I have fondness for: Maiandra GD, Nyala, Kruken, and I'd probably land you somewhere between Adobe Arabic and Maiandra... Arabic calligraphers are among the most disciplined letterers in the world so their influence is heavy in the typography world.

But I don't think you should change much, those letters are fantastic. The N in Serpent is too wide so I squeesht that down a bit. The serpent's neck looks broken (I'm making these notes while I edit the font) and I would try to find a way to make his head pointing left more naturally (I'd keep the left-facing element as you are making a retro game and that's a great call as it bespeaks history to have a left-facing character or element) hmm hrmmmmrmmm three colors? Do you need yellow? It's disjointed to have teh S in such a value disparity from the rest of the letters in the word, makes it scan a little funny. Get rid of yellow or lighten to a light green

So you can see i left 99% of the pixels in place and just moved some things around and united the elements visually a bit. And at the bottom there is Maiandra which I modeled the R after. I also moved the moon to the lefthand spot to balance all the visual elements within the typography a bit and so that the O in moon is looking at the moon instead of awa, and I did change that O because tehre were rules of thicks on the left you'd implemented elsewhere and I wanted to add a bit of harmony there but looking at it I'm neutral about the change which means it might be bad.

http://img811.imageshack.us/img811/2992/76s9.png

I can't wait to try the game. I've seen lots of stuff from it and that goes against my no spoilers rule for infrequent times when I'm free enough to play a game, so I'm just going to wait until it's out to play it again unless you for whatever reason need me to try it out because my name has 5 letters or whatever.

Guild
10-23-2013, 12:44 PM
Edit: I managed to not make the snake's neck look any less broken to me, so meh. Pixels are hard.

Googleshng
10-23-2013, 03:29 PM
Tried it on Firefox. Couldn't get past the intro. I managed only to clear the first "text box" and then it stopped.

That might be a temporary bug where hitting any key other than C while in cutscene bugs the heck out. Noted though.

"Moon" looks nice on that typeface, but "Serpent" is kind of bad. Particularly the E, R and P, the other letters are mostly fine.

Yup, those are the ones that were bugging me here.

First of all that moon is bad ass.

Thanks.

While analyzing your typography I noticed you repeated the same patterns for similar parts of letters, such as the serifs all follow rules, and so do lines joining ascenders like in the bottom of the P's bowl... good instincts but you missed a few subtleties such as you followed the rules of repetition for serifs but when you finished the bowls on all your letters looked like fisheyes that were out of center from the rest of the letter, and so ... alter the rules you came up with so the bowls don't look like fish eyes, and as a pixel artist you know that can be 1 pixel away from happening. The disparity there happens strongest in the contrast with the O in moon, which has a perfectly centered calligraphic flat stroke making thicks on the sides and thins at the top and bottom, versus the fisheye bubblepop holes you have elsewhere which look off center.



But I don't think you should change much, those letters are fantastic. The N in Serpent is too wide so I squeesht that down a bit. The serpent's neck looks broken (I'm making these notes while I edit the font) and I would try to find a way to make his head pointing left more naturally

Originally I did, and initial feedback was that it made the whole thing look too much like an 8. Bent it in by about 1 pixel and here we are.

hmm hrmmmmrmmm three colors? Do you need yellow? It's disjointed to have teh S in such a value disparity from the rest of the letters in the word, makes it scan a little funny. Get rid of yellow or lighten to a light green

Yes. The S is supposed to really stand out in a decidedly unsubtle fashion, and I'm probably going to be getting all fancy about shading the whole thing once I'm happy with it, which should make it fit better.

I can't wait to try the game. I've seen lots of stuff from it and that goes against my no spoilers rule for infrequent times when I'm free enough to play a game, so I'm just going to wait until it's out to play it again unless you for whatever reason need me to try it out because my name has 5 letters or whatever.

Honestly, this is one of those things where the progress I make on it is directly tied to how much I am able to beat down the nagging thoughts that the number of people in the world who will want to actually play the finished game is only in the single digits. So... yeah, nice to have it confirmed that it's at least more than the number of people I am directly forcing it on.



So anyway, squaring off the joints in the E R and P a little, pulling the second N in a few pixels, getting fancy with shading, and blowing things up to actual displayed resolution... how's it look now?

http://studioxia.com/moonserpent/plot/title3.png

Edit: And screwing with it ALL DAY...


http://studioxia.com/moonserpent/plot/title5.png

Finally don't hate the R, yay.

Guild
10-23-2013, 07:00 PM
move P and E a pixel closer together maybe? And move the S closer to the E? I'd have to see that to decider if it improved it. That's fantastic work.

Guild
10-23-2013, 08:00 PM
It makes me want to play Prince of Persia (2d please and thanks) or Spelunkey or Milan or whatever that game was csalled...

Edit: If it were me I think I might try ust moving the P one pixel right to give the R some space and make the kerning flow a little better, but again I'd have to see it and also it's amazing work. The scales on the snake really help the snake get some presence and feel part of the word now. I especially like the work at the top of his head. It's a lot of implication with few pixels and it's good.

Googleshng
10-23-2013, 08:05 PM
move P and E a pixel closer together maybe? And move the S closer to the E? I'd have to see that to decider if it improved it. That's fantastic work.

There's a 3 pixel gap between each letter as is. The P is the only letter where I could get all fancy with kerning, but... it's similar enough to the R that if I did it, you'd see the difference between THOSE gaps (where I can't because the leg on the R's in the way) so... not tweaking that.

The S I could move, but... it's kinda off doing its own thing and nobody else is griping about it. So I'm moving on to this other stuff that needs doing for now.

Lady
10-23-2013, 10:04 PM
I'll gripe about the S. I think having the S be a descender is a bad choice. It leads you out of the logo with no way to get back. If that were at the end of the last word, that would be fine, but not in the middle of the name.

I like guild's inspiration to move the moon over, though.

Kishi
10-23-2013, 10:19 PM
http://i.imgur.com/CHcsdmT.png


The angular serifs are obviously at odds with what you're going for, but—just something to think about.

Googleshng
11-22-2013, 01:15 AM
Let it never be said that Waterpot is not a righteous dude.

http://pilli-adventure.com/wp-content/uploads/2013/11/monsters.jpg

http://studioxia.com/moonserpent/monsters/thornbeast.pnghttp://studioxia.com/moonserpent/monsters/mockingweed.pnghttp://studioxia.com/moonserpent/monsters/returned.png
http://studioxia.com/moonserpent/monsters/groundsnake.pnghttp://studioxia.com/moonserpent/monsters/skullie.png
http://studioxia.com/moonserpent/monsters/moon%20serpent-1.png

I'd actually been thinking of starting from scratch on that last one, but this here reinterpretation won me back over to keeping it as is.


Also yon game is getting dangerously close to being like... a whole game, with balance and stuff and plot and such. Very few spells don't currently work right and the groundwork has been laid for me to quit procrastinating already and make more places to go.

A big snag is that I'm trying to balance around lowball runs and I may have accidentally made strategy too nuanced for me to be able to infer the best tactics for a given situation. I suppose nobody but me will be upset if there turns out to be a secret strategy that makes things a cakewalk, but I'm losing sleep over that turning out to be the case because I missed it, you know?

TK Flash
11-22-2013, 03:42 AM
The snake needs a redo. It looks like a decapitated snake with a face where the would would be. Where is the head?

TK Flash
11-22-2013, 03:44 AM
The snake needs a redo. It looks like a decapitated snake with a face where the would would be. Where is the head?

Edit: it would be an awesome two-stage boss! HERO decapitated SNAKE! Oh noes it has a noghtmare neck-face growing baaack quick kill it again

Balrog
11-22-2013, 06:51 AM
the snake needs a redo. It looks like a decapitated snake with a face where the would would be. Where is the head?

Edit: It would be an awesome two-stage boss! Hero decapitated snake! Oh noes it has a noghtmare neck-face growing baaack quick kill it again

yes

Googleshng
12-09-2013, 01:58 PM
So I'm trying to kick development of this sucker into high gear and get it done by the end of the month. I probably won't actually pull that off, but I'm trying.

If you're using Firefox, it's starting to solidify pretty nicely. (http://studioxia.com/moonserpent/) Aside from a couple minor details, the first... I don't know, 20% of the game is pretty much in right now. If you're using other browsers, results vary, a lot.

Healy
12-13-2013, 11:12 PM
I played your game for a bit, and seemed to have run into an issue where I got poisoned but couldn't cure myself of the poison. Are the hot springs in the first village supposed to cure poison? If so, that seems to be bugged. If not, you really need to add a way to cure poisoning in the first village.

Edit: Oh! And also, the red flash that appears when you're poisoned is bugged. When you come out of a battle the screen stays all red until you take a step. Once I used an antidote before taking a step and the screen stayed red even after walking around a while. This stuck even when I loaded a save. So yeah, that needs to be fixed too.

Googleshng
12-14-2013, 04:53 PM
I'm going oldschool to the point where inns (and hotsprings) only cover HP and MP. Need a priest if someone dies, need an antidote if you're poisoned.

I did forget that the hills I tossed in all "peninsula of power" style have groundsnakes in them though, and yeah, the second town's a bit of a trek from there, so there probably should be antidotes on sale in the first. I'm fairly impressed you made it back from there while poisoned though. What level were you?

Healy
12-14-2013, 10:40 PM
I had the heal spell, so it must have been 3 or 4.

Googleshng
12-22-2013, 03:54 PM
Antidotes are in that first town now, and I MIGHT have towns 4 and 5 in game by the end of the night, so yay. After that comes the bit where things get all kinds of non-linear and I get to slack off on keeping the balance so insanely fine tuned.

But since this thread is officially just me showing off spritework and such, here is, I THINK the full final compliment of NPC sprites:

http://studioxia.com/moonserpent/npc-sprites.png

I kinda cranked the SWART dial to 11 on all the men. Wasn't really an intentional thing, it just sorta happened.

That Old Chestnut
12-22-2013, 05:59 PM
If you're using Firefox, it's starting to solidify pretty nicely. (http://studioxia.com/moonserpent/) Aside from a couple minor details, the first... I don't know, 20% of the game is pretty much in right now. If you're using other browsers, results vary, a lot.

I like how this is coming along so far! Especially the multiple options for attacking, defending, and the like.

However, when I tried to select Tactics, the "hasn't been implemented yet" window stays up a little too long, and actually covers up the other combat menus when you're trying to decide on an action. Just wanted to run that by you.

Googleshng
02-21-2014, 01:55 AM
So... I've kinda been stalling out on this lately like you do, but I finally forced myself to really knuckle down and get some work done in random scattershot fashion:


80% of all NPC dialog is now written.
80% of all NPC dialog is now written.
Everyone's full level progression is in.
I THINK I got all the magic implemented... I should double check that at some point.
Today I finished the whole world map (except for some decorative water ocean features).


So... I just need to finalize some encounter tables, stat up a few monsters (particularly bosses) implement a really fundamental game mechanic, actually map these last few towns and dungeons, get sound effects in here, redo some music, and... then I suppose work on getting this to play nicer with different browsers and input methods.

But right now horrible bugs mean there's actually less to show off than last time I said anything.

Anyway, it might actually even be done by the end of the month if I manage to avoid getting all randomly depressed again.

Mogri
02-21-2014, 12:43 PM
80% of all NPC dialog is now written.
80% of all NPC dialog is now written.


Was that supposed to say something else or did you just duplicate the line on accident? (Or maybe it indicates that you've written 96% of the NPC dialog?)

Googleshng
02-21-2014, 01:30 PM
Whoops. One of those should say cutscene.

Healy
02-22-2014, 08:40 PM
Hey, I didn't really get around to this the last time you updated, but I really think those Percy guys use their item-grab attacks way too often. I think you could probably bump its occurrence down to once or twice a battle (or once every ~5 turns). As it is now (or, er, last time I played it), they take way too much stuff to be worth fighting.

Googleshng
02-22-2014, 09:28 PM
Hey, I didn't really get around to this the last time you updated, but I really think those Percy guys use their item-grab attacks way too often. I think you could probably bump its occurrence down to once or twice a battle (or once every ~5 turns). As it is now (or, er, last time I played it), they take way too much stuff to be worth fighting.

I MIGHT change the rate at some point, but they are absolutely there to serve as objects of hate and fear. Also to force people out of relying on the parry-heavy strategy that gets you through to the point they show up so well it's a no brainer.

Googleshng
05-23-2014, 10:24 PM
So, filling in a few last blanks with this, I realized I was still missing a background for polar region battles. After messing around for a while trying to get the look of a weird red scrubby tundra for a while with a minimal number of tiles, I realized it'd just confuse everyone and I should just go with snow. Now, check this out. We've got 1 tile for the moon, solid blue tiles for most of the sky, 3 tiles to get these clouds here. Those are all pre-existing on the sheet. I needed one more for the snow-capped top edge of the cliff here, and another for the bulk of it (I suppose I could actually cheat around that if I offset the top and just drew over the seam), but I have my restrictions on these things.

Now, how many tiles did I need to get the rest? That is, from the shadows at the base of the cliff all the way to the bottom edge of the screen?
http://i.imgur.com/M7GlxoK.png

Just two.

Doesn't look it though does it? The upper snow tile has shadows at the base of the cliff line in the top row of pixels. The bottom row has another dashed line, turning those into doofy little ridges. Repeat 3 rows of that, then comes the new tile, which flows down from those to make the unique row there. The bottom 3 rows of pixel in that tile, which you can clearly see at the bottom of the screen, match up in a different pattern, giving the shadowy peaks.

I am really proud of how that turned out, at least on a technical level. Artistically, maybe not so much.

As far as actual art goes, remember out old friend the snake without much of a head?
http://studioxia.com/moonserpent/monsters/moon%20serpent-1-old.png

I did some touching up there, because yeah it was wonky:
http://studioxia.com/moonserpent/monsters/moon%20serpent-1.png

Still not 100% happy with it, but eventually there's going to be 7 of these things, and I'm actively trying to make them look a bit weird and distinct from each other. Here's another, which looks pretty weird because I'm cheaply cheating foreground issues:
http://studioxia.com/moonserpent/monsters/moon%20serpent-2.png

Once I finish the rest of those, and I think a couple missing NPC sprites, I MIGHT be done on the art front for this sucker. Well, there's still the ending cutscene I guess.

Nindokag
07-16-2014, 10:53 PM
Hi everybody,
So, I'm the main programmer for Moonserpent. I've been a lurker on the forum up until now (I've really enjoyed some of the amazing Let's Plays on this forum especially). Now I'm going to de-lurk in order to contribute to this thread.

I started writing the Moonserpent game engine in April 2013. I haven't been able to work on it for a few months due to real life getting in the way, but I'm now getting back into it, in order to fix the last few bugs and add the last few needed features.

As I work through the last few bugs, I thought it would be fun to post screenshots here and talk about what the bugs are, why they're there, and how I'm fixing them. Sort of a "countdown to zero bugs" feature.

Ask me anything about game programming in general or the Moonserpent game engine in particular; I'm happy to de-mystify this stuff.

Torzelbaum
07-16-2014, 11:10 PM
Ask me anything about game programming in general or the Moonserpent game engine in particular; I'm happy to de-mystify this stuff.Welcome. I guess I'll start off with a baseline question - what language and tools are you using to build the Moonserpent game engine?

Nindokag
07-16-2014, 11:15 PM
Here's the full bug list: https://github.com/jonoxia/rpgbase/issues

"Rpgbase" is meant to be a generic re-usable RPG engine that I can recycle for future projects. There is a separate, private, much smaller github repo that contains the code specific to Moonserpent. Most of the bugs I'm fixing are in the Rpgbase code.

Tonight, I'm working on bugs related to the ship. (Hope it's not too much of a spoiler that you get a ship in this game!) I wrote the code for the ship pretty early in the project as a proof-of-concept for vehicle entities, and haven't touched it much since then. It's kind of janky. Since Googleshng is now creating the content for the "seafaring" portion of the game (hope that's not too much of a spoiler), we've been putting the ship through its paces lately, which has uncovered some bugs.

First off, here's what happens if I save my game while my party is on board the ship. Here's the state before saving:

http://studioxia.com/moonserpent-bugreports/bugreport0.png

But here's what I get if I try to load that save state:

http://studioxia.com/moonserpent-bugreports/bugreport1.png

My party is in the same tile as the ship, but it's not actually aboard the ship. So when I press the arrow keys, instead of moving the ship, it tries to move my party, who of course can't move because ocean tiles are impassible to the party.

At least this is somewhat of an improvement on the previous behavior, which is that the ship's location would not be saved at all; when loading a save, the ship would simply be created in its port of origin, and if the party was on a different continent, they'd be stranded forever, making the game unfinishable. Now, it's only unfinishable if I try to save while at sea.

We tend to take it for granted that everything will be as we left it when we load a save file, but a lot of programming work goes into creating that illusion of continuity. It's hard to be sure you've tracked down every gameplay-relevant state variable and serialized all of them into the save-game file (I keep saying file but it's actually a JSON blob in a MySQL database on the server) and then making sure the right thing is done with each of those variables on reload.

Nindokag
07-16-2014, 11:21 PM
Welcome. I guess I'll start off with a baseline question - what language and tools are you using to build the Moonserpent game engine?

Hi Torzelbaum!

It's entirely Javascript. (The only part that's not Javascript is a tiny bit of Python on the server-side to help with uploading save game states to the database and retrieving them again.) The graphics are rendered in the HTML5 <canvas> element which became standard across browsers a few years ago.

The tools I use are Emacs for editing code, GitHub for version control, the built-in Firefox web console for debugging, and Jasmine for unit testing. The only third-party library in the code is Jquery. (I tried using Three.js to do the first-person maze graphics, but ironically I couldn't get it to look as "bad" as Googleshng's retro aesthetic required, so I ended up hand-rolling my own 3d engine.)

Googleshng
07-16-2014, 11:54 PM
... which is still driving me nuts with the resolution being twice as high as the rest of the game. Same with the current menus... which oh hey you actually tweaked that when I wasn't looking. Just need to use 2x scale pixels now and yay.

I seriously would love to see what kind of crazy magic went into Phantasy Star's smooth scrolling mazes though. Everything before or after just went with static images, or Sword of Vermillion's walls-made-of-lines-of-tree-sprites until everyone was able to just start cheating and using polygons.

Nindokag
07-18-2014, 12:20 AM
Well, isn't this fun times! While testing my fix to the "save your game in the ocean" bug, I discovered a new bug -- in certain restored save files (not ones where the game was saved at sea), the ship becomes able to move through land tiles but not through water tiles. It starts acting like a car, instead of a ship:

http://studioxia.com/moonserpent-bugreports/bugreport-4.png

It seems that the ship is following the normal party's movement rules, instead of the ship-specific movement rules. This used to work correctly, so I deduce that I broke it with one of my recent changes.

...this is exactly the sort of regression that a unit test suite is supposed to prevent, but alas, I did not start writing unit tests for Rpgbase until a week ago. Out of laziness, the desire to move quickly, and the fact that this is a hobby project and not a paid project. I regret not writing tests from the beginning. But at least I can add them now, as I discover bugs.

Nindokag
07-18-2014, 12:32 AM
Haha, wow. As I suspected, the code that I put in to save and restore the "are you on a vehicle?" variable was causing the land-sailing bug. I had:

if (jsonobj["embarked_vehicle"] != "")

to check whether the save file being loaded had the party embarked on a vehicle or not. If you're not on any vehicle, that should be an empty string.

But the old save files, saved before the change, they didn't have this variable at all, of course. And in Javascript, "no string" and "empty string" are two different things, so this comparison computes to false, and the load game code would then assume that you actually *were* supposed to be on a vehicle, just a nonexistent vehicle with no name. Then when you try to get on the actual ship, the program thinks you're trying to bring the nameless vehicle on board the ship with you, and gets all kind of confused. A hilarious slapstick cascade of failure. Computers, everybody!

Anyway, I have now fixed both the original bug and the secondary bug. The ship stays in the ocean where it belongs, and you can save your game aboard it without screwing yourself.

Bugs squashed: 1
Bugs to go: 33

Onward!

aturtledoesbite
07-18-2014, 12:35 AM
Bugs squashed: 1
Bugs to go: á̷̸͞͏ ̶͝b̵̴u̧͢͞n͏̵͞c̛h̴̸̢͏̸

Fixed.

Nindokag
07-22-2014, 09:52 AM
Fixed.

Hehehehe ain't that the truth. Aturtledoesbite knows how software development really works.

More progress last night. Moonserpent has a canoe for exploring rivers; the canoe can be loaded on board the ship to cross the ocean.

http://studioxia.com/moonserpent-bugreports/bugreport2.png

Last night's bug was this: if you saved your game while the canoe was aboard the ship, then Moon Serpent would freeze when it tried to load the save file.

As you might guess, loading and unloading the canoe onto the ship is a bunch of special-case code that works like nothing else in the game engine. The base code for vehicles is in Rpgbase, but the specific behavior (like "canoe can move in river tiles only" and "canoe can be loaded onto ship") are specific to this game so they're in Moonserpent code. My goal is to eventually have a clean separation between the two, for reusability of Rpgbase, but at the moment there's a lot of sphagetti code connecting them.

Loading the canoe onto the ship is the first time that a vehicle has ever been removed from the overworld map. Unlike the ship, which is permanent and always has a map position.

So when loading the save file, Moonserpent would start trying to apply its game-specific custom properties to the vehicles, and it would say "ok rpgbase, gimme the canoe" and rpgbase would say "canoe? what's a canoe? the only vehicle on the map in this save file is the ship" and then Moonserpent would flip out and have a temper tantrum.

(And now I've typed "canoe" so many times that it doesn't look like a real word anymore.)

The solution was to have the game engine keep a permanent list of all vehicles whether or not they're on the map screen at the moment. Rpgbase saves and restores that list, then Moonserpent checks a special "canoeLoadedOnShip" boolean and if it's true quickly puts the canoe back aboard the ship before the player can notice.

Bugs squashed: 2
Bugs to go: á̷̸͞͏ ̶͝b̵̴u̧͢͞n͏̵͞c̛h̴̸̢͏̸

Nindokag
07-22-2014, 10:20 AM
Things I need to work on:


Animation glitches
Adding sound effects
Implementing the "TACTICS" command
"REPEAT" command lets you cheat
Glitches in combat when some party members are dead
Weird stuff happens if last party member dies of poison
NPCs can walk through each other
Using a consumable item in combat doesn't consume it until combat ends
Tweak menu border appearance
Browser compatibility issues
Save your game by talking to a priest (instead of "save" button)


TACTICS and sound effects aren't so much bugs as they are missing features. There's a bunch of smaller nitpickier bugs too, but these are the main ones that impact gameplay and/or aesthetics.

Anybody have an opinion about which one I should fix next?

Googleshng
07-22-2014, 11:19 AM
Cross-compatibility is probably the biggest issue, although I'd kinda like some functionality for the titular monsters... who I really should create stats for first shouldn't I.

Nindokag
07-30-2014, 10:12 AM
More progress! I fixed three bugs in the battle command menu system.

Actually, they were more "design flaws" than bugs. I've known they were problems since I first built the battle command menu system last year.`I just didn't fix them because I wanted to work on fun stuff instead. ;^_^

http://studioxia.com/moonserpent-bugreports/bugreport5.png

First bug: if you had two or more items with the same name, only one would show up in the item menu in combat. Not game-breaking, but pretty confusing if you bought a bunch of healing items and then only saw one.

The cause was the way a character's inventory list gets turned into the "ITEM" submenu. All of the player options in battle are generated using a class called BattleCommandSet, which stores commands internally using a hashmap / dictionary type data structure, keyed on the command names. Works great 98% of the time because every command you can use in battle has a unique name... except for the single case of duplicate items, where the second LIFEPLUM command would overwrite the first LIFEPLUM command. So I had to completely rewrite the BattleCommandSet class to use an array and support multiple commands with the same name, adding a ton of logic to deal with the new potential complexity. (What if I request a command by name and there's more than one match? What if I want one comand to replace another?)

Second, closely-related bug: if you used a single-use item during combat, it wouldn't be removed from your inventory until after the battle ended. This is the kind of bug that can be seriously exploited by a clever player -- you could get full-party healing by continuously reusing a single cheap healing item, if you felt like dragging a battle out long enough.

This happened because a player character's battle command menu was generated once at the beginning of combat, under the assumption that it wouldn't change. The item was actually removing itself from your inventory as designed, but you still kept the same command menu that no longer reflected the state of your inventory. The solution was to regenerate all player character command menus at the beginning of every combat round just in case they changed, even though 99% of the time they don't.

Hmmm. I wonder if I should actually leave some bugs in on purpose, just so players can have fun discovering obscure ways to cheat? Certain bugs did add a lot to the legend of certain classic games... what if the Metroid developers had fixed the bug that let Samus wedge herself into a doorway and climb through the wall off the top of the screen?

Opinions?

Bug 3:

http://studioxia.com/moonserpent-bugreports/bugreport6.png

Ahh, the REPEAT command. It's a very helpful UI feature Googleshng came up with. What could be simpler? Just have everybody do what they did last round, again. The code for it even looks simple: because each player character retains the value of their lockedInCmd variable from last round, all we have to do is start a new round without changing their commands and they'll automatically do the right thing. Easy.

Except it's not so easy, because blindly repeating all the commands allows a bunch of exploits. If I cast a spell one round, and then REPEAT the next round, the spell would happen again, even if I no longer had enough MP for it. This is because the check for sufficient MP happened on command selection, which REPEAT bypassed.

Re-casting spells without MP was the most obvious problem, but there could also be cases where you're REPEATing an action against a target that's no longer valid. This doesn't come up much in Moon Serpent since most commands are randomly-targeted anyway. The exception would be something like re-using a heal spell/item on a character who had died in the meantime, which shouldn't be possible.

There were two ways to fix this bug, the mean way and the nice way. The mean way would be to repeat all the valid commands, but make the invalid ones fizzle. Your character trying to REPEAT a spell with insufficient MP would just waste their action.

That's exactly the kind of aggravating nonsense that a game from 1986 would probably have pulled, come to think of it. I seem to recall Final Fantasy 1 characters would happily attack an empty spot where a monster used to be. Am I remembering that right?

But I decided to do it the nice way. When you try to select REPEAT, it checks if all your commands are still valid, and if any fail, it shows an error message and doesn't let you REPEAT.

Bugs squashed: 5
Bugs to go: á̷̸͞͏ ̶͝b̵̴u̧͢͞n͏̵͞c̛h̴̸̢͏̸

Mogri
07-30-2014, 10:32 AM
It's hard to be sure you've tracked down every gameplay-relevant state variable and serialized all of them into the save-game file (I keep saying file but it's actually a JSON blob in a MySQL database on the server) and then making sure the right thing is done with each of those variables on reload.

Hold on, why is the save data stored server-side if everything else is executed client-side? Is the idea that you'll be able to transfer save data between machines? Because I'd gladly sacrifice portability for not needing a login.

aturtledoesbite
07-30-2014, 10:43 AM
Bug 3:

http://studioxia.com/moonserpent-bugreports/bugreport6.png

Ahh, the REPEAT command. It's a very helpful UI feature Googleshng came up with. What could be simpler? Just have everybody do what they did last round, again. The code for it even looks simple: because each player character retains the value of their lockedInCmd variable from last round, all we have to do is start a new round without changing their commands and they'll automatically do the right thing. Easy.

Except it's not so easy, because blindly repeating all the commands allows a bunch of exploits. If I cast a spell one round, and then REPEAT the next round, the spell would happen again, even if I no longer had enough MP for it. This is because the check for sufficient MP happened on command selection, which REPEAT bypassed.

Re-casting spells without MP was the most obvious problem, but there could also be cases where you're REPEATing an action against a target that's no longer valid. This doesn't come up much in Moon Serpent since most commands are randomly-targeted anyway. The exception would be something like re-using a heal spell/item on a character who had died in the meantime, which shouldn't be possible.

There were two ways to fix this bug, the mean way and the nice way. The mean way would be to repeat all the valid commands, but make the invalid ones fizzle. Your character trying to REPEAT a spell with insufficient MP would just waste their action.

That's exactly the kind of aggravating nonsense that a game from 1986 would probably have pulled, come to think of it. I seem to recall Final Fantasy 1 characters would happily attack an empty spot where a monster used to be. Am I remembering that right?

But I decided to do it the nice way. When you try to select REPEAT, it checks if all your commands are still valid, and if any fail, it shows an error message and doesn't let you REPEAT.

Bugs squashed: 5
Bugs to go: á̷̸͞͏ ̶͝b̵̴u̧͢͞n͏̵͞c̛h̴̸̢͏̸

Honestly, just letting them fizzle would be perfectly fine. Now, targeting issues could potentially be solved by having them default to the first available target, maybe. But spells without MP? Sure, let them fail.

(Alternatively, if they can't cast anything, have it change to a standard attack against the first enemy.)

Nindokag
07-30-2014, 10:44 AM
Hold on, why is the save data stored server-side if everything else is executed client-side? Is the idea that you'll be able to transfer save data between machines? Because I'd gladly sacrifice portability for not needing a login.

You're exactly right, it's so that you can load your save file from different machines.

But it would be just as easy to store the save file in a large cookie, or HTML5 LocalStorage. I just didn't think anybody would particularly want that feature.

Now that I know somebody wants it... well, consider it added to the feature request list!

Googleshng
07-30-2014, 12:34 PM
Hmmm. I wonder if I should actually leave some bugs in on purpose, just so players can have fun discovering obscure ways to cheat?

I'm sure there's going to be plenty we just miss outright, and people will already goof off plenty by pulling up the console to use as a game genie.

(Alternatively, if they can't cast anything, have it change to a standard attack against the first enemy.)

The thing there is, directly targeting enemies is straight up not a thing. It works like Phantasy Star or DQ2 (if there only happens to be one monster group). You attack the party of monsters, being most likely to hit whoever's in the lead, and least likely to hit whoever's in the back, just like they deal with you.

As is, it's ONLY an issue when you try to heal your own party member and they die. Where yeah, spell fizzles/item is wasted, but in the unlikely event that you accidentally hit repeat too fast, it's not going to be a total jerk and have you try to heal someone who was already dead before the round started.

You're exactly right, it's so that you can load your save file from different machines.

But it would be just as easy to store the save file in a large cookie, or HTML5 LocalStorage. I just didn't think anybody would particularly want that feature.

Now that I know somebody wants it... well, consider it added to the feature request list!

I've always wanted saves to be locally stored. Under the current temporary system, there's a very real risk of two people naming a save "cave" or "allscales" or something and overwriting each other's progress, and once the proper "select a slot" system goes in, there'd still need to be some sort of login on top of that (unless you tied saves to IPs, which would be awful because some people's aren't stable). I'd go with LocalStorage rather than cookies though, way too high a chance of those getting deleted accidentally, or not saved to begin with.

aturtledoesbite
07-30-2014, 01:04 PM
The thing there is, directly targeting enemies is straight up not a thing. It works like Phantasy Star or DQ2 (if there only happens to be one monster group). You attack the party of monsters, being most likely to hit whoever's in the lead, and least likely to hit whoever's in the back, just like they deal with you.

As is, it's ONLY an issue when you try to heal your own party member and they die. Where yeah, spell fizzles/item is wasted, but in the unlikely event that you accidentally hit repeat too fast, it's not going to be a total jerk and have you try to heal someone who was already dead before the round started.

Then just a standard attack, no targeting, then. I mean, do I really need to specify that?

I've always wanted saves to be locally stored. Under the current temporary system, there's a very real risk of two people naming a save "cave" or "allscales" or something and overwriting each other's progress, and once the proper "select a slot" system goes in, there'd still need to be some sort of login on top of that (unless you tied saves to IPs, which would be awful because some people's aren't stable). I'd go with LocalStorage rather than cookies though, way too high a chance of those getting deleted accidentally, or not saved to begin with.

Is that the same way Flash games get saved? Those are usually pretty stable, aside from something like CCleaner.

Nindokag
07-30-2014, 01:59 PM
I've always wanted saves to be locally stored. Under the current temporary system, there's a very real risk of two people naming a save "cave" or "allscales" or something and overwriting each other's progress, and once the proper "select a slot" system goes in, there'd still need to be some sort of login on top of that (unless you tied saves to IPs, which would be awful because some people's aren't stable). I'd go with LocalStorage rather than cookies though, way too high a chance of those getting deleted accidentally, or not saved to begin with.

Yeah, if we save games to the server I would have to add a login feature, which means people would have to create accounts. There's really no way around it. Creating an account can be a surprisingly big barrier to entry -- even if it's free, if I'm just checking out a casual game to kill time, I'm way less likely to stick around if I have to think of a password or whatever.

So, the LocalStorage thing gives us a much better first-time user experience, but I'm a little worried about what happens if the player purges their browser history.

An amusing third alternative is go have a "password' save like the original Japanese version of Dragon Quest, presented in a period-appropriate style. The password is of course just a hash of all your save file data, and you "write it down" to re-enter later (meaning, copy-paste it to a text file, of course).

Maybe we could even offer players a choice of save methods (although that has its own cost in terms of UI complexity and asking people to understand the trade-offs involved.)

I'll leave the decision about how to handle REPEAT failures up to Googleshng; I have no strong opinion there.

Googleshng
07-30-2014, 02:14 PM
I wouldn't want passwords in the actual game interface, but there is very much something to be said for having a fancy frame around the whole thing which can "break character" and let you toss in passwords as an emergency backup against data loss, change volume settings, change the resolution, language settings eventually...

Mogri
07-30-2014, 03:02 PM
I'll leave the decision about how to handle REPEAT failures up to Googleshng; I have no strong opinion there.

I'd suggest making commands that are known to be invalid default to a standard command -- probably Attack.

You could also change the existing interface to allow you to select any command regardless of costs, and check costs only at execution time -- the Final Fantasy Tactics approach. This lets you queue up a spell with your wizard and have your thief use an MP-restoring item on him before it resolves. I'm not sure offhand if Moon Serpent has MP-restoring items, though...

Googleshng
07-30-2014, 03:26 PM
It does not. Consumables restore HP, cure poison, and that's it.

TK Flash
07-30-2014, 07:37 PM
I love the clawshrimp screenshot!

Googleshng
07-30-2014, 09:18 PM
I'm pretty darn happy about the reflected moon/sun in the water when it comes up. Unless you meant the shrimp itself, in which case, neat, I've always been kinda self-conscious about that one.

TK Flash
07-30-2014, 09:22 PM
I mean all of it. The menu balance, the background, the cute little shrimp, all of it. I like the clunky yet functional menus and how the roster lines up at the bottom of the screen. I like how the item list lines up with the menu item.

Nindokag
07-30-2014, 09:48 PM
Fixed another bug just now!

As some people pointed out on earlier pages of this thread, error messages in the battle system (most commonly "NOT ENOUGH MP" but also "TACTICS ARE SO TOTALLY NOT IMPLEMENTED YET. SORRY") didn't go away as they should when you hit a key, but stuck around blocking your view of the menu.

This is now fixed.

The explanation for this one isn't very interesting -- I was just calling the wrong function, because last year I wrote two different functions for displaying text, one which responds to user input and one which doesn't, and then sometime in the intervening months I totally forgot which was which.

Nindokag
07-30-2014, 09:59 PM
aturtledoesbite, I JUST realized that your user icon is a cute upside-down turtle, and not, as I previously thought, some kind of misshapen cauliflower-like vegetable. :-P

aturtledoesbite
07-30-2014, 10:09 PM
Sage Ghido when he's flipped over by the world merger, actually.

Googleshng
07-30-2014, 10:25 PM
I mean all of it. The menu balance, the background, the cute little shrimp, all of it. I like the clunky yet functional menus and how the roster lines up at the bottom of the screen. I like how the item list lines up with the menu item.

Well thanks then. Most of that is just me subconsciously ripping off the layout from Phantasy Star though.
http://www.phantasy-star.net/art/screenshots/psi/monsters/manticor.gif

Also now that I really look, it's still pretty far off from my original layout:
http://studioxia.com/moonserpent/combat-clutter.png

Borders are too thin there still, and commands are full-width (which... I guess is just as well with items being in the mix and breaking the 6 character limit like that.

Kirin
07-31-2014, 11:39 AM
It occurs to me that a different way to solve both the "two identical items didn't correctly become two commands" bug and the "could use the same item command multiple times in battle" bug would have been to have the items not actually be commands; make picking items a sub-process of the top-level "item" command instead. This would of course require writing a new procedure, but wouldn't require re-writing the old command procedure you already had.

I'm not actually suggesting that would have been better as I haven't seen the code-base and hell, it could just be a matter of taste. It's just interesting to think about two orthogonal solutions to the same fairly simple problem.

Nindokag
07-31-2014, 12:57 PM
It occurs to me that a different way to solve both the "two identical items didn't correctly become two commands" bug and the "could use the same item command multiple times in battle" bug would have been to have the items not actually be commands; make picking items a sub-process of the top-level "item" command instead. This would of course require writing a new procedure, but wouldn't require re-writing the old command procedure you already had.

I'm not actually suggesting that would have been better as I haven't seen the code-base and hell, it could just be a matter of taste. It's just interesting to think about two orthogonal solutions to the same fairly simple problem.

Hi Kirin!
Yeah, I spend a lot of time weighing different approaches to solving the same problem, so it's always interesting to hear alternative ideas.

You said "just" a matter of taste, but actually in my programming career I've found that (once you get past the basic "can you make it work" level), taste is what separates the OK programmers from the really great ones.

One of the top programmers I ever worked with was a guy named Atul. He'd often pick a solution that I thought was slightly more complicated than it needed to be. I would argue for doing the simplest thing to just get it working right now, but Atul would go for a more flexible, general-case solution that I didn't think we needed. And then MONTHS later I'd be working with some of Atul's code and discover that he had already solved the problem I was ABOUT to run into, and then I'd be like "OHHHHHHH THAT"s why he did it that way." This happened over and over again. The extra 15 minutes he spent on extra flexibility would save us literally weeks of programmer time down the road. And it all came down to his sense of taste about subtle differences in code organization.

Anyway, bit of a tangent there, but I love telling that story.

In the case of the Rpgbase battle system, I made it so that any BattleCommandSet can contain another BattleCommandSet. (So COMBAT contains MAGIC, which contains HEALTH, but we could also have MAGIC contain say WHITE, BLACK, and SUMMON, which contain spells...) It's infinitely nestable, and there's a recursive function makeMenuForPC that transforms any BattleCommandSet into a stack of nested menus by calling itself repeatedly. I like the flexibility of this system and I want to reuse it for other games in the future. I decided that adding the "allow multiple commands with same name" feature was something that might prove useful in other games so it seemed worth my time to add it in to the core command system, rather than special-casing the item menu.

But who knows, maybe some months down the road I'll have to reverse that decision, since I don't have Atul levels of taste ;-)

P.S. Kirin it sounds like you're a programmer too? What kind of stuff do you work on?

Kirin
07-31-2014, 01:09 PM
True, since this is designed to be the base for a bunch of projects, a good flexible system that handles edge cases gracefully is probably a worthwhile investment.

And yeah, how'd you guess? ;) Right now I'm lead on a big laser scanning scene reconstruction package aimed at the forensics market. Mostly C++ stuff; the project started like 15 years ago. Lots of graphics and data/project structure stuff. (Honestly I wish I had someone else to work on the huge dataset memory management side since that's so not my cup of tea, but it's just me right now.)

Of course, I also have lots of indie game ideas kicking around in my head that I never get around to because I don't feel like committing nearly all my free time outside of work to more coding... though I'm intrigued by the new app language Apple's just putting out. Reminds me of HyperCard, which is what I cut my baby programming teeth on back in the day.

But I don't wanna derail Google's game thread here... this should probably go in the CompSci thread or something (which I embarrassingly haven't gotten around to reading in, like, years...)

Nindokag
08-03-2014, 04:32 PM
Just got done tweaking all the menu borders to be pixel-perfect to Googleshng's original layout. This is a purely visual change. Here's a screenshot of the new look, which you can compare to the same battle pictured a few days ago:

http://studioxia.com/moonserpent-bugreports/bugreport7.png

This is one case where it's hard to know how much menu code belongs in Moon Serpent vs. belonging in Rpgbase. Other games I make with this engine won't use the same window styles, so I'm trying to keep as much stylistic information as possible in Moon Serpent, but some things were easier to implement by hard-coding certain things (like the assumption that there's a list of monster HPs) into Rpgbase. Those assumptions are going to have to be ripped out of Rpgbase when I start making the next game with it.

Rpgbase actually contains two different implementations of the menu system: in my original implementation, the menus are actual text, rendered in HTML as part of the web page. (So for example, you could drag your mouse over them and copy the text.) In order to get the pixel-level control that Googleshng's design demanded, though, I wrote a second implementation that was entirely in Canvas. (Using pictures of text, rather than actual text.) The hilarious irony here is that I spent a really long time re-inventing text layout functions, like line-wrap, which are handled automatically by the browser already. But the browser's built-in text display is modern-looking to work for Moon Serpent, so this was the only option.

Googleshng
08-03-2014, 05:36 PM
Honestly, I just don't like to see smooth antialiased text in videogames. It just looks WRONG, especially if you're going with a retro art style. I mean, even with all the in-game art smoothed out to match, tell me this text doesn't look gross:
http://a3.mzstatic.com/us/r30/Purple4/v4/3c/96/89/3c968968-5aee-3d09-713f-6519ca87b9f4/screen568x568.jpeg

... and wow, did the artist for that abomination know Setzer isn't supposed to be a woman? Because he seems to be sporting quite the set of breasts there.

And hey, speaking of terrible cellphone ports, I'm hoping to eventually do a non-terrible cellphone port of this. Is there a better/more accepted standard for that sort of thing than to just use all the white space the 4:3 aspect ratio leaves on the edge to add a virtual D-pad and pair of buttons?

Kirin
08-04-2014, 12:12 PM
... and wow, did the artist for that abomination know Setzer isn't supposed to be a woman? Because he seems to be sporting quite the set of breasts there.

Pretty sure that's supposed to be a cravat, combined with the fact that the sprite art style they use for this has all the guys standing in a side-pose where they thrust their chests forward.

A lot of the design choices in that port were pretty fucking baffling.

Nindokag
08-06-2014, 11:03 AM
Added a new graphical feature -- the background behind the character portraits in battle now changes to reflect status conditions and buff spells. For example, poison turns the background green:

http://studioxia.com/moonserpent-bugreports/bugreport8.png

And the defense-raising SHIELD spell looks like this:

http://studioxia.com/moonserpent-bugreports/bugreport9.png

Googleshng made a set of animation frames so that the shields actually shrink over time and then disappear. If you pay close attention, it lets you know how much longer your buff is going to last.

In the process of adding this feature, I was digging around in the code for the buff and debuff spells and I discovered that a spell effect that was supposed to decrease enemy defense was actually *adding* to it. The stat mod argument needed to be multiplied by (-1). This is an example of a bug that's REALLY easy not to notice in action, since there's never a single moment that's obviously wrong. The difference is only noticeable in its statistical effects over time. ("Hmm, this debuff spell seems not very effective, I guess I'll stop casting it.") I'm lucky I noticed it when looking at the code or we might not have caught it. I'm pretty sure I've heard of real published RPGs shipped with incorrectly implemented debuff spells. I can't remember which ones at the moment -- anybody remember any examples?

aturtledoesbite
08-06-2014, 11:08 AM
I'm pretty sure I've heard of real published RPGs shipped with incorrectly implemented debuff spells. I can't remember which ones at the moment -- anybody remember any examples?

Well, Focus Energy in the original Pokemon games was accidentally a self-debuff (supposed to increase crit rate; actually zeroes crit rate if your speed is slower than opponent's)

Kirin
08-06-2014, 11:56 AM
Googleshng made a set of animation frames so that the shields actually shrink over time and then disappear. If you pay close attention, it lets you know how much longer your buff is going to last.

Good lord, all menu-based RPGs need to implement this feature yesterday.

In the process of adding this feature, I was digging around in the code for the buff and debuff spells and I discovered that a spell effect that was supposed to decrease enemy defense was actually *adding* to it. The stat mod argument needed to be multiplied by (-1). This is an example of a bug that's REALLY easy not to notice in action, since there's never a single moment that's obviously wrong. The difference is only noticeable in its statistical effects over time. ("Hmm, this debuff spell seems not very effective, I guess I'll stop casting it.") I'm lucky I noticed it when looking at the code or we might not have caught it. I'm pretty sure I've heard of real published RPGs shipped with incorrectly implemented debuff spells. I can't remember which ones at the moment -- anybody remember any examples?

I don't think it had that particular one, but pretty much all the bugs in FF1 are this sort of thing - stat changes or effects that work unexpectedly or not at all, but not so you'd immediately notice. Not surprising since it was the work of a single programmer, plus it was a fairly new genre at the time so testers wouldn't know what subtle problems to look for.

Googleshng
08-06-2014, 12:40 PM
Good lord, all menu-based RPGs need to implement this feature yesterday.

Thanks! Been on my todo list to add here since forever, I was just waiting for the windows to be all set right to be sure I didn't miscount the size or need to redraw some portraits or something.

I don't think it had that particular one, but pretty much all the bugs in FF1 are this sort of thing - stat changes or effects that work unexpectedly or not at all, but not so you'd immediately notice. Not surprising since it was the work of a single programmer, plus it was a fairly new genre at the time so testers wouldn't know what subtle problems to look for.

FF1 is pretty notoriously buggy, particularly with regards to how the magic defense stat is... never in any way consulted when it comes to magic damage, and evasion being busted, and... was it mute that did nothing? It's a huge mess all around.

Then FF4 has its crazy thing about critical hits Brickroad covered in his fantastic LP there. I seem to recall reading that... was it Xenoblade Chronicles? has max damage increase properties that will add to a weapon's displayed max damage, but does not in any way effect the actual die roll.

And that's all just off the top of my head... and not even getting into stuff like good ol' Vanish/X-Zone.

aturtledoesbite
08-06-2014, 12:51 PM
FF1 is pretty notoriously buggy, particularly with regards to how the magic defense stat is... never in any way consulted when it comes to magic damage, and evasion being busted, and... was it mute that did nothing? It's a huge mess all around.

what are you even talking about

there is no magic defense

Magic damage is a straight up random range like DQ spells. Intelligence does not affect this. Nor does it affect anything.

Evasion works perfectly well. As with the other early FFs, most attacks are comprised of several hits, and the probability of dodging all of said hits gets exponentially small, so you'd never be likely to dodge everything (unless you use a few RUSEs).

MUTE worked as it should, and is actually a key component for a solo White Mage against ASTOS (go ask RUGA). TMPR, SABR, and several other spells did do nothing, however.

Destil
08-06-2014, 02:31 PM
FF1, from memory:

Many spells don't work properly: LAMP, LOCK, TMPR have no effect, SLEP always wears off after one round. HEA2 works as HE3 outside of battle (or something like that).
Weapon index as critical: there's a critical hit chart in weapons table in memory. Due to a read offset error, however, the crit formula is using a weapon's index in the table rather than that value. Hurts early game weapons a lot, and makes the Masmune perhaps the best sword to ever grace a videogame.
INT does nothing: hard to call this a bug, unlike most of the rest there's no place in the code that it's checking for it wrong, it's just unused.
Running is supposed to check agility or luck, but instead checks a status (i.e. poison, stone, stun, critical) byte and is manipulable.
Monks and Masters can retain their level based defense while keeping the resistances of a ribbon or pro ring because the resistance flags are only set entering or exiting the armor screen, but the armor check happens on level up.
The class 'Thief' somehow made it into the final game, instead of being caught in playtesting.
If the first attack hits and attacks have a status ailment like poison, stun or death all subsequent attacks have a chance to apply that ailment, hit or miss.

FFVI
The goggles do nothing: physical evade is unused (and thus blind is irrelevant as is the accessory that prevents it), instead magic evade is used for all evadable attacks.

Kishi
08-06-2014, 11:47 PM
there is no magic defense

But there is (http://www.gamefaqs.com/nes/522595-final-fantasy/faqs/57009). It's just a totally invisible stat.

aturtledoesbite
08-06-2014, 11:52 PM
But there is (http://www.gamefaqs.com/nes/522595-final-fantasy/faqs/57009). It's just a totally invisible stat.

Considering that is effectively magic evade and doesn't directly affect spell damage (I will concede it does have an effect, however), I feel my original statement was close enough to correct.

Googleshng
08-07-2014, 12:11 AM
Point is, there's more bugs in the FF series than are easy to keep straight. Hard to catch this stuff.

But anyway, this is getting off topic. This thread is for talking about this game I'm working on... wait, that isn't technically true either, it's just for previewing the art. So... have a big pile of giant snakes:

... maybe spoilered, because this really is close to done, and they're end-game bosses and all.

http://studioxia.com/moonserpent/monsters/moon%20serpent-1.png
We've got the one everyone's seen before, with its weird lack of a skull, which based on feedback I gave more definition. Now it looks all penis-y. I suppose one really should though. I mean, what classic RPG doesn't have weird sexual symbolism in the late game bosses?
http://studioxia.com/moonserpent/monsters/moon%20serpent-2.png
This is the one where I used an actual photo reference, and I think it shows. It's close behind 6 for my favorite, but I got all fancy with it so it really only looks right on the proper background.
http://studioxia.com/moonserpent/monsters/moon%20serpent-3.png
This one's just doofy. I figured one should be.
http://studioxia.com/moonserpent/monsters/moon%20serpent-4.png
Here's the classic sea serpent look. Head's kinda lumpy, neck shading's weird... I'm proud of the eyes though.
http://studioxia.com/moonserpent/monsters/moon%20serpent-5.png
Big ol' ridiculously huge ocean-going one. I'm proud of the incongruous pair of shark teeth.
http://studioxia.com/moonserpent/monsters/moon%20serpent-6.png
My favorite, and the laziest. I wanted one that just burst out of a snowbank at you, and... feeling a little lazy, I thought "oh hey, I already have ground snakes as a normal monster, and this whole different artistic approach for each thing doesn't mean I have to leave out the usual monster style. So I just drew a ground snake at 3x scale, threw on some extra fancy shading, and slit the eyes (where, incidentally, I just had temp colors going on because I'm too poor to draw with layers, long story). At the time, I was still fretting about which color went to which. Going for a ROYGBIV thing but.... really I don't have the right palette, especially when there's an armor set matching these, so it's really ROYGBPS. Anyway, after a lot of eliminating options, this got stuck with red... and it was only when I had to do most of it in pink that I realized oh hey, this looks almost exactly like a giant version of the wimpiest monster in the game. So expect it to be the toughest of the 7.
http://studioxia.com/moonserpent/monsters/moon%20serpent-7.png
I'll talk about the last one when it's finished.

Kishi
08-07-2014, 02:06 AM
In #5, the dithering and the grouping of the white flecks give the water a nice sense of dimension. Giving each snake its own distinct style is also a welcome approach, reminiscent of the dragons from Chrono Cross.

Nindokag
08-07-2014, 12:29 PM
This thread is for talking about this game I'm working on... wait, that isn't technically true either, it's just for previewing the art. So... have a big pile of giant snakes:


Maybe you're already planning to do this, but I think most of them could be improved with the addition of more texture. Like scale patterns, ridges, cross-hatching... not everywhere of course, just here and there, to break up the flat surfaces, and add to the sense of three-dimensionality and scale.

Nindokag
08-10-2014, 10:12 PM
Next bug that I'm working on: Characters who should be solid sometimes walk through each other. Under certain circumstances, your party can walk through an NPC, an NPC can walk through your party, or an NPC can walk through another NPC.

http://studioxia.com/moonserpent-bugreports/bugreport10.png

Pictured above: an NPC townsfolk (brown hair) walking through the middle character in my party (red hair).

What's happening is essentially an animation timing bug. One character starts walking into an unoccupied tile (x,y). Their walk animation begins playing. They aren't considered to be occupying the new tile until the walk animation is done. In the meantime, if another character attempts to enter tile (x,y), the map screen checks it and says "Occupied? No it's not occupied, come on in!". Result: both characters walk into the tile and are now superimposed on each other.

This bug has absolutely no impact on gameplay -- it doesn't get in the way of finishing the game and doesn't enable any cheats -- but it feels really fundamentally wrong every time you see it happen. It makes the game engine feel less solid. I'd even say it messes with your suspension of disbelief, assuming that our 8 x 16 pixel sprites ever got you to suspend disbelief in the first place.

aturtledoesbite
08-10-2014, 10:17 PM
You would be amazed how many (well, 8- and 16-bit) Final Fantasy games have that exact same bug.

Lady
08-10-2014, 10:40 PM
As long as instead you put in a shove them out of the way mechanic. Those NPCs are annoying when they're in the way.

Googleshng
08-10-2014, 10:42 PM
In #5, the dithering and the grouping of the white flecks give the water a nice sense of dimension. Giving each snake its own distinct style is also a welcome approach, reminiscent of the dragons from Chrono Cross.

Praise from Caesar!

Maybe you're already planning to do this, but I think most of them could be improved with the addition of more texture. Like scale patterns, ridges, cross-hatching... not everywhere of course, just here and there, to break up the flat surfaces, and add to the sense of three-dimensionality and scale.

I might at some point yeah. Not sure if it'll ruin the impact of the little bits of scale-glinting here and there they all currently have going, but I've been pretty flat with the shading for how much I'm otherwise subconsciously stealing Phantasy Star's visual style. That game really loves its dithering.

You would be amazed how many (well, 8- and 16-bit) Final Fantasy games have that exact same bug.

Really? I don't recall ever encountering it. I can think of plenty where you can get pinned in a corner by randomly moving townsfolk though.

aturtledoesbite
08-10-2014, 10:44 PM
Really? I don't recall ever encountering it. I can think of plenty where you can get pinned in a corner by randomly moving townsfolk though.

It's far more precise than this, probably due to requiring both the player and the NPC to decide to move to the same square in the same frame. But yeah, it can be done.

Nindokag
08-10-2014, 11:00 PM
As long as instead you put in a shove them out of the way mechanic. Those NPCs are annoying when they're in the way.

Agreed! But the current bug actually doesn't help you out any if you happen to get penned in by NPCs. It only triggers when you and the NPC both start moving at the same time, so if the NPC penning you in isn't moving (or is just bumping into walls), the bug doesn't do anything.

Googleshng, should we put in somethng to help players avoid getting trapped by NPCs? I haven't encountered this problem in playtesting, probably thanks to the town designs not having too many narrow spaces where that sort of thing could happen.

aturtledoesbite
08-10-2014, 11:06 PM
Googleshng, should we put in somethng to help players avoid getting trapped by NPCs? I haven't encountered this problem in playtesting, probably thanks to the town designs not having too many narrow spaces where that sort of thing could happen.

I think you answered your own question. Open spaces tend to solve the NPC wall problem before it starts.

Googleshng
08-11-2014, 08:54 AM
There's a lot to be said for tossing along a "hey you, move it!" prompt to any mobile NPC when walking into them, but the odds of it really coming up as a problem in this particular game should become vanishingly small when I quit being lazy and dumping big ol' herds into the middle of towns. Really, I'm planning to go back around and have like, 1 mobile NPC per town in the end, very much out in the open.

Destil
08-11-2014, 01:44 PM
Considering that is effectively magic evade and doesn't directly affect spell damage (I will concede it does have an effect, however), I feel my original statement was close enough to correct.

Final Fantasy 1 the best D&D game on an 8 bit platform and never lets you forget it. It's a saving throw, not magic defense/evade.


Re: Dronejam: I suggest just letting people walk through NPCs unless you flag them as 'non-walkable' for boundary construction or something.

aturtledoesbite
08-11-2014, 01:47 PM
Final Fantasy 1 the best D&D game on an 8 bit platform and never lets you forget it. It's a saving throw, not magic defense/evade.

Hah. When I thought about the spell formula, I realized that was exactly what it was doing. Successful save for half damage.

Nindokag
08-18-2014, 09:52 AM
So, after the discussion about walking through NPCs, I was no longer sure that fixing this bug in the way I had described was a high priority. I'd still like to fix it at some point but I will have to think about how to make it so NPCs are usually solid, but the player can push their way out if trapped. (Or at least, I think that should be a feature of the engine that can be enabled or disabled on a per-game basis; Moon Serpent might not need it but a future game might.)

Instead, I started working on the last unimplemented feature of Googleshng's design: the TACTIC menu. This lets you save a set of actions for your whole party into one of four slots ("PLAN A" through "PLAN D"). You can choose one of the plans later to re-play those actions without manually re-inputting them. It's basically an extension of the REPEAT feature, except you have a choice of four plans to repeat instead of just the last thing you did. So, like, if I ever figured out a good way to deal with those horrible !@#$% Percy things that make you drop your consumable items, I could save it as a TACTIC and then always use it when they show up.

This is one of those things that's simple to describe, but really hairy to implement (why do you think I put it off until last?). There's so many edge cases that have to be taken into account. What if you saved the plan with 3 characters in your party but you're playing back the plan with 4 characters? What if you saved the plan with 4 characters but one of them died? What if the plan involves casting a spell you no longer have MP for, using an item you already used up, or targeting a character who's no longer a legal target? What if you start putting in the plan and then cancel all your actions and decide to run instead? How do the plans get saved when you save your game?

It's all the annoying edge cases of the REPEAT command, times four, complicated by the fact that tactics can be executed in a later (even much later) battle. I talked it over with Googleshng and got answers about what should happen in every case, so now it's just a matter of ensuring they all work correctly.

Features like this are when you really NEED an automated testing suite, because testing every possible permutation manually after every change to the code is so time-consuming, impractical, and prone to letting bugs slip by if I forget any step of testing. Without automated testing it's WAY too easy to break an old case every time i fix a new one.

So I actually spent most of yesterday building a system for automatically testing Moon Serpent battles. I made a test framework where I can disable all the graphics/sound/animation, start a game with a given set of characters in the party, immediately throw them into a battle, simulate a bunch of preprogrammed user input, and monitor what commands were executed. Now I can run through dozens of simulated battles, automatically, in a few seconds. It took a lot of work to build this framework but it's going to be extremely helpful for ensuring the battle system is bug-free (and ready to re-use for the next game written with this engine.)

I'll post some screenshots when I'm satisfied that the TACTIC feature is complete and works right in all the cases.

Googleshng
08-18-2014, 11:31 AM
Well, it's not the LAST feature, since there's still the whole crazy encounter table tweak, and special boss code, and really special final boss code, but, home stretch anyway.

Also there is a strong case to be made that whole TACTIC is an unacceptable break from my "this game doesn't swipe ideas from anything that wasn't out in 1988" angle, but I say the real anomaly is that nobody bothered implementing that sort of thing until the twilight of the Genesis... and then for some baffling reason stopped doing so when the 32-bit consoles hit. In any case there is no way I could in good conscience NOT put it in.

Nindokag
08-18-2014, 11:49 AM
Well, it's not the LAST feature, since there's still the whole crazy encounter table tweak, and special boss code, and really special final boss code, but, home stretch anyway.

I guess what I meant by "last feature" was "last feature that requires any changes to the game engine". The special encounters and bosses are all Moon Serpent specific and don't require new game engine features, so they'll be much simpler coding-wise. My perspective on these things is rather different from yours since I'm always elbows-deep in the guts of the game engine, while you're more focused on the finished product.

Seeing as how all my previous game programming projects have turned into never-ending spirals of adding complexity to the game engine, without ever releasing something playable, it seems that a partner with a finished-product focus is exactly what I need.

Man, it's gonna feel so good to actually FINISH this thing.

Guild
08-18-2014, 12:18 PM
Considering that is effectively magic evade and doesn't directly affect spell damage (I will concede it does have an effect, however), I feel my original statement was close enough to correct.

So then you admit you were wrong.

:D

I agree 100% with turtle that it(the walk-through-sprites glitch)'s common in old games and add that it's nostalgic and I like it a lot. I realize my experience may be different than someone who didn't spend 3000 hours playing jrpgs as a kid, sometimes wandering through completely inane areas for no reason, KNOWING there was no reason, exploring art or trying to find glitches again for NO REASON because tehre was no internet, I was just a crazy kid with WAY too much time to kill. I had a somewhat toxic childhood so I escaped almost exclusively whenever I could, books and videogames and drawing in pretty equal proportion. I exploited the glitch at times and enjoy (now) seeing it again, for whatever that's worth. The whole point of this project was to bring those things BACK, the problems the medium created are therefore part of that, if you solve it, what game are you emulating? Modern games!

That is only my opinion if you hate this opinion, and then I'll argue for no reason.

JK

aturtledoesbite
08-19-2014, 05:26 PM
This is one of those things that's simple to describe, but really hairy to implement (why do you think I put it off until last?). There's so many edge cases that have to be taken into account. What if you saved the plan with 3 characters in your party but you're playing back the plan with 4 characters? What if you saved the plan with 4 characters but one of them died? What if the plan involves casting a spell you no longer have MP for, using an item you already used up, or targeting a character who's no longer a legal target? What if you start putting in the plan and then cancel all your actions and decide to run instead? How do the plans get saved when you save your game?

So many of these seem pretty simple. Lemme break them down:
1) New character: Default to Attack.
2) Dead character: Skip action.
3) Out of MP/Item: Default to Attack.
4) Non-legal target: Default to Attack.
5) Decide to run: Eh? You're gonna have to explain what this one means.
6) Save macros: Sounds more like a coding thing than a logistics thing, so I'unno.

Googleshng
08-19-2014, 05:44 PM
Jumping back to this real quick...

What's happening is essentially an animation timing bug. One character starts walking into an unoccupied tile (x,y). Their walk animation begins playing. They aren't considered to be occupying the new tile until the walk animation is done. In the meantime, if another character attempts to enter tile (x,y), the map screen checks it and says "Occupied? No it's not occupied, come on in!". Result: both characters walk into the tile and are now superimposed on each other.

The nice thing here is that the fix (start occupying the new tile at the start of the animation) lets you pretend some NPC is leading the party, and properly conga-line along behind them.

So many of these seem pretty simple. Lemme break them down:
1) New character: Default to Attack.
2) Dead character: Skip action.
3) Out of MP/Item: Default to Attack.
4) Non-legal target: Default to Attack.
5) Decide to run: Eh? You're gonna have to explain what this one means.
6) Save macros: Sounds more like a coding thing than a logistics thing, so I'unno.

They're all coding issues rather than logistic, really. Although it is worth stressing that one of my bigger design goals with this was to break people from the habit of defaulting to attack. There's 5 different attack commands, along with 5 defend commands, and picking the right one at any given time is honestly quite important.

Nindokag
09-02-2014, 10:28 PM
Woo hey it's been a long time without an update. The last couple weeks of August were really busy with work (i am creating a new Chinese handwriting analysis algorithm), taiko drumming (two concerts coming up we need to practice for) and grad school applications (reading science papers by professors I might want to work for).

Anyway, over Labor Day Weekend I finally got some solid time to finish the TACTICS feature, solving the many technical problems I talked about last time. Here's what the menu looks like now:

http://studioxia.com/moonserpent-bugreports/bugreport11.png

Choose "PLAN A" (or B, C, or D) to execute a stored plan. Choose "CHANGE", then choose a plan, then enter your commands normally to store those commands in the plan.

Your plans are all saved as part of your saved game file, so they'll be there next time you reload. To do so, I had to turn all plans into pure text; so instead of a pointer at a BattleCommand object and a pointer at a PlayerCharacter target, it's stored as the name of the command and the name of the target. This has the side benefit that a PLAN that involves using an item will save the name of the item, not the specific item. So executing a plan that involves using LIFEPLUM or ANTIDOTE will use a different LIFEPLUM if there's one in your inventory, which is what you'd expect.

Drawback: this change to the save file format broke every existing save file. I had to write a script on the server to update all the save files to include an empty TACTICS section before they could load again.

I think I spent more time wrestling with the automated test system than I did writing new code for the tactics feature. I now have a pretty sweet test framework where I can just input an array of command names followed by an assertion about what is supposed to happen, and it automatically starts a fake battle, simulates the correct player input to choose those commands, and checks the assertion. This is gonna be really useful for future debugging of battle system features and edge cases.

In the process I ran into a problem where some of my tests would fail intermittently -- every time I reloaded the test page they'd either pass or fail at random. This is absolutely the worst thing that can happen in testing; you'd much rather have a clean, reliable failure than something that works part of the time for reasons you can't control.

After pulling my hair out for several hours I discovered the cause of the problem: the test script was pushing buttons too fast. Sometimes, not always, it would hit the next key before the battle system was ready for more input, trying to choose a command from a menu that hadn't displayed yet. Ugh. I slowed it down and things started working more reliably.

Next on the TODO list: defining the special encounters for the eponymous boss monsters! that's right, we're getting into endgame content. Exciting!

Torzelbaum
09-03-2014, 01:22 PM
Your plans are all saved as part of your saved game file, so they'll be there next time you reload. To do so, I had to turn all plans into pure text; so instead of a pointer at a BattleCommand object and a pointer at a PlayerCharacter target, it's stored as the name of the command and the name of the target. This has the side benefit that a PLAN that involves using an item will save the name of the item, not the specific item. So executing a plan that involves using LIFEPLUM or ANTIDOTE will use a different LIFEPLUM if there's one in your inventory, which is what you'd expect.

Drawback: this change to the save file format broke every existing save file. I had to write a script on the server to update all the save files to include an empty TACTICS section before they could load again.How are you storing that save file? Are you using JSON or some custom solution?

After pulling my hair out for several hours I discovered the cause of the problem: the test script was pushing buttons too fast. Sometimes, not always, it would hit the next key before the battle system was ready for more input, trying to choose a command from a menu that hadn't displayed yet. Ugh. I slowed it down and things started working more reliably."Slowed it down". So do you mean jQuery's delay() or javascript's setTimeout()? That solution seems a bit fragile to me - it could break if you get a faster computer or graphics card or if a new browser version comes out with improved rendering or a modified javascript engine. Did you consider using a callback function instead? I think that would work and be less fragile.

Nindokag
09-03-2014, 02:26 PM
How are you storing that save file? Are you using JSON or some custom solution?


It's JSON. The built-in JSON.parse and JSON.stringify functions are so convenient I never seriously considered any other data format.

Here's an actual raw save game file so you can see what the data format looks like:

{"_mapId": "Overworld", "_mainMode": "map", "moonPhase": 4, "tacticsManager": {"json": "{\"storage\": {\"A\": {}, \"C\": {}, \"B\": {}, \"D\": {}}}", "serializedClass": "TacticsManager"}, "_vehicles": [{"json": "{\"_x\":76,\"_y\":111,\"_id\":\"ship\"}", "serializedClass": "vehicle"}, {"json": "{\"_x\":201,\"_y\":84,\"_id\":\"canoe\"}", "serializedClass": "vehicle"}], "player": {"json": "{\"_resources\": {\"~\": 264}, \"party\": [{\"json\": \"{\\\"name\\\":\\\"ASTRA\\\",\\\"_statBlock\\\":{\\\"maxhp\\\":30,\\\"maxmp\\\":12,\\\"acc\\\":0,\\\"str\\\":12,\\\"def\\\":6,\\\"agi\\\":2,\\\"level\\\":4,\\\"exp\\\":134,\\\"hp\\\":28,\\\"mp\\\":5,\\\"init\\\":10,\\\"targetTickets\\\":1},\\\"_inventory\\\":{\\\"serializedClass\\\":\\\"Inventory\\\",\\\"json\\\":\\\"{\\\\\\\"_limit\\\\\\\":8,\\\\\\\"itemList\\\\\\\":[\\\\\\\"DAGGER\\\\\\\",\\\\\\\"ANTIDOTE\\\\\\\",\\\\\\\"TORCH\\\\\\\",\\\\\\\"LTHRGOWN\\\\\\\",\\\\\\\"ANTIDOTE\\\\\\\"]}\\\"},\\\"_dead\\\":false,\\\"_stati\\\":[],\\\"_equippableTypes\\\":[\\\"smallblade\\\",\\\"medblade\\\",\\\"spear\\\",\\\"dress\\\",\\\"mail\\\"],\\\"_marchOrder\\\":0,\\\"_spriteSlice\\\":{\\\"x\\\":10,\\\"y\\\":0},\\\"battleSpells\\\":[\\\"PARLAY\\\",\\\"HEALTH\\\"],\\\"fieldSpells\\\":[\\\"HEALTH\\\"],\\\"equipped\\\":{\\\"weapon\\\":0,\\\"armor\\\":3}}\", \"serializedClass\": \"PlayerCharacter\"}]}", "serializedClass": "Player"}, "fightCount": 3, "plotManager": {"json": "{\"_flags\":[\"intro\",\"gem\",\"dagger\"]}", "serializedClass": "PlotManager"}, "_playerX": 98, "timeCount": 53, "dayNight": 0, "_treasureStates": [], "_playerY": 84}

Spoilered because theoretically you could learn some things about the game world from reading the save file that you might not want to know if you plan on playing Moon Serpent blind for maximum challenge.

(Extremely technical paragraph for the programmer-curious):
I wrote a Javascript mix-in class called Serializable. Any other class can be made Serializable by specifying a list of field names that should be saved (and optionally seralization/deserialization functions). Serializing an object turns all its relevant fields into JSON and automatically triggers the serialization of any serializable sub-objects it contains, recursively. So with a single call to .serialize() on the top-level game state object, you get back a string containing all relevant information, which can be deserialized to restore the entire hierarchical object structure. The multiple recursive levels of JSON encoding are the reason for the absurd number of backslashes in the save file text -- they're escape codes.

(I got the idea for this method from the codebase of a company I worked for briefly last summer. It was... possibly the only good thing about their codebase.)


"Slowed it down". So do you mean jQuery's delay() or javascript's setTimeout()? That solution seems a bit fragile to me - it could break if you get a faster computer or graphics card or if a new browser version comes out with improved rendering or a modified javascript engine. Did you consider using a callback function instead? I think that would work and be less fragile.

Not exactly setTimeout(). I'm using the Jasmine test framework, which provides a function called waitsFor(). It takes a callback and a maximum wait time. It blocks execution until the callback returns true. If the maximum wait time expires without the callback becoming true, the test fails. So I can use waitsFor() with a callback that evaluates whether the expected menu is being displayed, and it'll just... wait for the expected menu to be displayed.

(Upon further testing, there is still something causing an intermittent test failure! Curses! But much less frequently than before. I have no idea whether this is still the too-fast-for-the-menus thing or something unrelated.)

Googleshng
09-03-2014, 03:02 PM
Wait, character stats get saved? They're fixed. No real reason you can't just pull them from the level-up table and shrink save files down a bit.

Nindokag
09-03-2014, 04:20 PM
Wait, character stats get saved? They're fixed. No real reason you can't just pull them from the level-up table and shrink save files down a bit.

Yeah, I know. There's a lot of data that ends up in the save file that doesn't, strictly speaking, need to be there, because it's either fixed or can be deduced from data that is there.

I understand your concern, but there's a reason for this. The PlayerCharacter class serializes all the data it can for the sake of future-proofing: in future games written on the RPGbase engine, those stats might not be invariant.

I could exclude the invariant data from Moon Serpent saves, but A. it would be more work to exclude the data than to leave it in, and B. the size of a save game file, even with extra junk in it, is still negligible. I think the theoretical largest save file size it would be possible to create in Moon Serpent would still be well under 10 kilobytes.

Olli T
09-03-2014, 10:53 PM
JSON serialization of stated objects is great. It almost feels like cheating, like you're supposed to put all of that stuff in normalized tables, until you realize that you're probably never going to need to make any complicated queries. Refactoring is going to be a hassle anyway.

LancerECNM
09-04-2014, 08:15 AM
This is a delightful view into game development that I've never had before. Super interesting stuff, even if I'm not 100% sure what's being talked about.

Nindokag
09-04-2014, 12:49 PM
This is a delightful view into game development that I've never had before. Super interesting stuff, even if I'm not 100% sure what's being talked about.

Thanks! Glad you're enjoying it. That's exactly what I hoped for when I started posting to this thread.

Also I'm happy to explain if there's anything you're curious about (like "what the hell is JSON anyway?")

Nindokag
10-02-2014, 10:08 PM
It's been a very busy few weeks, including two taiko drumming concerts and a trip out to Googleshng's neck of the woods. Haven't had much time to work on this but I have a few new things to show (most of them done on the airplane ride.)

First, the eponymous Moon Serpents are all in the game now -- except for one. All Serpent-specific images will be behind spoiler tags, since they're supposed to be the game's big mysteries.

The first thing was to create a special encounter-table class just for map regions where Moon Serpents might be lurking, since the rules for encountering them are special, not like anything else in the game. Then, I also needed to implement some special items with special rules that are related to the Moon Serpent battles, and test that those worked.

Then there was this:
http://studioxia.com/moonserpent-bugreports/bugreport15.png

The Moon Serpents have much bigger sprites than anything else in the game, so my fixed monster-positioning code no longer worked. This was easy to fix, but then...

http://studioxia.com/moonserpent-bugreports/bugreport13.png

the attack animations went over the wrong part of the enlarged sprite. A bunch of tweaking later, everything looked good.



During this testing, rather than repeatedly getting into a serpent fight the hard way, I made a special playtesting/debugging page which is basically God Mode. We can use it to instantly teleport to anywhere in the world, give our party any items and experience levels we want, summon monsters to fight, etc. I don't know why I didn't do this a year ago -- it's extremely handy to have and makes playtesting advanced content so much easier.

Nindokag
10-02-2014, 10:16 PM
Testing the Moon Serpent battles meant that I was directly trying out high-level game content for the first time (high-level characters, weapons, spells, etc.). This turned up a lot of miscellaneous bugs. Like this:

http://studioxia.com/moonserpent-bugreports/bugreport12.png

1. Stone's 3-digit HP didn't display correctly, because when I wrote the layout code I assumed these numbers would always be 2 digits. Oops. Easily fixed once I noticed it.

2. Casting the FREEZE spell didn't reduce my MP. Oops -- we forgot to ever define a cost for it, so the game engine assumed it cost 0. Fixed.

3. Casting the FLAMES spell only hit one monster, instead of hitting all of them as it's designed to. Seems I implemented spells with target = "all_enemies" but I never actually implemented the loop that applies their effect to all enemies! Fixed.

4. Attacking with an IRON AXE caused the whole game to freeze! Turns out this is because we never defined the damage formula for heavy-blade-type weapons, which includes the IRON AXE. Instead of a single damage formula, different weapon types in Moon Serpent each have thier own unique damage formulas. So some weapon types can have more randomness, or less randomness, or have higher or lower scaling with the user's STR stat. We could even make a weapon that ignored the target's DEF or something.


5. I could never seem to hit a MOON SERPENT with physical attacks, only with magic. They're supposed to be hard to hit, but not impossible. After several battles of landing exactly zero attacks, I decided to double-check their AGI stat (agility), since a high AGI is what makes things dodgy.

I had not given the MOON SERPENTs an AGI stat. I had given them an AI stat. I was like "Wait, there's no Artificial Intelligence stat!" before I realized it was a typo for AGI -- a typo which I had copy-pasted to all MOON SERPENTs. Oops.

Basic fact about the rpgbase engine: it doesn't give a fig what stats you assign something. It faithfully maintains a "stat block" for every character and monster, but as far as it's concerned the stat block is just a list of stat names and their numerical values. It doesn't assign any meaning to them, only functions for getting and setting stats by name. How to use the stats for gameplay is entirely up to the client code, i.e. the invidual game.

The advantage is that game code can easily assign any stats it wants without having to match some pre-defined list. The drawback is... it can easily assign any stats it wants without having to match some pre-defined list. Rpgbase is perfectly happy to let you assign one monster an "AGI" stat and another monster an "AI" stat and no "AGI" stat. It doesn't care.

So in this case the number that should have been AGI was being assigned to a meaningles stat, and when the battle code requested the monster's AGI, it got back 'undefined', which causes the hit-calculation math to choke and die, which I guess is interpreted by the battle system as a miss? I would not have predicted that.


And then finally, when sailing around the world in search of the Moon Serpents, this happened:

http://studioxia.com/moonserpent-bugreports/bugreport14.png

...I bumped into the edge. Bonk bonk bonk. The world is flat!

I could have sworn I implemented the wraparound feature for the overworld map screen, but I didn't find it anywhere in the code so apparently I just imagined doing that. The world of Moon Serpent has been flat this whole time!

Time to fix that.

Nindokag
11-06-2014, 10:14 AM
(Looks at date of last post) Well that sure was another busy month that passed since last time I made any progress on the Moon Serpent engine!

Last time, I had just figured out the world was flat.

As you've no doubt realized if you ever thought too hard about the geometry of an old-school RPG map, the standard algorithm of "going off the north edge takes you to the south edge, going off the west edge takes you to the east edge" creates a world which is toroidal (donut-shaped), not spherical.

I'm pretty sure there is no possible way to map a rectangular north-south-east-west grid onto a sphere without some distortion somewhere, especially near the poles. There wouldn't be so many different map projections if this was an easy problem. What happens if you're standing on the north pole and you press the up-arrow? At the very least we'd have to abandon the idea that arrow keys consistently map to compass directions. (I probably think about this too much.)

Me and Googleshng talked a lot about potential map-wrapping algorithms that would be closer to a spherical world. He came up with some really clever ideas, such as flipping the whole map upside-down when you cross the pole, but it was ultimately decided to be too confusing for players. So what we're going with is a world map that wraps east-to-west, but not north-to-south. Like the map in Civilization II, the extreme polar regions are simply inaccessible. If you want to get geometrical about it, the world is a cylinder.

Anyway, to implement this in code, I added two properties to maps: x_wrap and y_wrap. You can set both to false, both to true, or one true and one false. If x_wrap is true then the east edge wraps around to the west edge and vice versa; y_wrap does that for north and south. Where they're false, the edge of the map simply blocks you. I don't think we're going to use this feature for anything in Moon Serpent except the overworld x_wrap being true, but technically we now have the ability to make a dungeon like a pac-man maze where some tunnels wrap around to the other side of the map.

Map wrapping is something I should have included in the game engine at a much earlier stage. Adding it now, after so much code had been written around a flat map with fixed edges, was pretty painful. I had to find every place in the code where we assumed the map geometry was flat. For instance, if a function assumes that going one space right from space X takes you to space X+1, that is no longer always correct on a wrapping map.

Essentially I had to find every place in the code where x or y map coordinates were being added or subtracted, so that I could funnel them all through a new wrap-aware function. Instead of adding 1 to your X coordinate when you walk east, you have to query the map and say "excuse me, map? what space is 1 to the east of space X?" and the map will check its x_wrap and check whether X is close enough to the edge for wrapping to matter.

There are a LOT of places like this in the code. It's not just when you take a step -- it's also when the game engine checks what's ahead of you, when it draws in the area around you, when it scrolls (scrolling stops near the edge of a flat map, but not near the edge of a wrapping map -- you have to fill in the rest of the screen with tiles from the opposite edge.) Even when you hit the button to talk to an NPC/open a treasure chest, it has to check whether the space you're facing might be on the opposite side of the map! I don't think we'll have any maps that both wrap and contain NPCs/treasure chests, but I want it to be correct in case future games built on this engine do something with that.

At one point I was literally doing repeated searches for the "+" symbol through all my code files just to make sure I hadn't missed any coordinate addition.

Once I finished these changes, I set overworld.x_wrap = true and then tried to sail around the world. When I got to the east edge of the map and kept going, this happened:

http://studioxia.com/moonserpent-bugreports/bugreport16.png

The reason you see nothing is that my ship sailed off the right side of the screen.

Checking the coordinates of my ship showed that my ship had in fact correctly made it to the other side of the world map. However, the "camera" had not followed me there. Oops! I could keep sailing around and even go ashore, and as soon as I took one step to the left the camera would suddenly catch up and everything would go back to working fine. But it was disorienting to say the least.


http://studioxia.com/moonserpent-bugreports/bugreport17.png

Happily, fixing it was just a matter of finding the place in the camera code where I was subtracting coordinates directly instead of asking the wrap-aware map to do it for me. The above picture doesn't look like anything special, but that is an island near the west end of the map, and I reached it by sailing east, so I now declare the map-wrapping feature done. Huzzah!

Torzelbaum
11-06-2014, 07:41 PM
5. I could never seem to hit a MOON SERPENT with physical attacks, only with magic. They're supposed to be hard to hit, but not impossible. After several battles of landing exactly zero attacks, I decided to double-check their AGI stat (agility), since a high AGI is what makes things dodgy.

I had not given the MOON SERPENTs an AGI stat. I had given them an AI stat. I was like "Wait, there's no Artificial Intelligence stat!" before I realized it was a typo for AGI -- a typo which I had copy-pasted to all MOON SERPENTs. Oops.

Basic fact about the rpgbase engine: it doesn't give a fig what stats you assign something. It faithfully maintains a "stat block" for every character and monster, but as far as it's concerned the stat block is just a list of stat names and their numerical values. It doesn't assign any meaning to them, only functions for getting and setting stats by name. How to use the stats for gameplay is entirely up to the client code, i.e. the invidual game.

The advantage is that game code can easily assign any stats it wants without having to match some pre-defined list. The drawback is... it can easily assign any stats it wants without having to match some pre-defined list. Rpgbase is perfectly happy to let you assign one monster an "AGI" stat and another monster an "AI" stat and no "AGI" stat. It doesn't care.

So in this case the number that should have been AGI was being assigned to a meaningles stat, and when the battle code requested the monster's AGI, it got back 'undefined', which causes the hit-calculation math to choke and die, which I guess is interpreted by the battle system as a miss? I would not have predicted that.
Do you see the spoilered issue as a big problem? And could it be addresed by including a schema for the game's (not rpgbases's) stat block?

Nindokag
11-11-2014, 09:34 AM
Do you see the spoilered issue as a big problem? And could it be addresed by including a schema for the game's (not rpgbases's) stat block?

Not a huge deal, but it is a source of annoying bugs. It's on the "would like to fix but not worth holding back game release for" list.

And, just like you say, the way to fix it would be to have the game specify a master list of stats every monster should have, and then rpgbase throws an exception if a monster is missing a required stat. Turn hard-to-find runtime errors into easier-to-find startup time errors.

Googleshng
05-06-2015, 03:14 AM
Dusting off cobwebs and getting back to work on things, I got distracted tonight with a new thought about map tiles.

Say you're doing a world map for an RPG, and you have your blocky little 16x16 sprite walking around a bunch of 16x16 tiles. Common deal, right? So you have some nice open plains and some oceans and some mountains and some forests, typically.

The simplest way to deal with this graphically is to make one 16x16 tile for each of these terrain types, but when you do that, the end result looks freaking gross. Square coastlines, forests and mountains made of individual peaks in neat orderly rows. Yuck.

One way to fix this is to do what I'm doing with Moon Serpent here, where you make a bunch of fancy border tiles, either squared off like I did on the coastlines (where you end up needing 12 and it's still pretty square), or you get all fancy like I did with the forests and mountains, which looks a hell of a lot more natural, but forces you into these odd placement patterns. Plus either way, you have to account for those border tiles for any terrain effects, i.e. what does half-plains-half-forest count as random encounter wise? The upper left area of this here is my original doodle pad where I was working the logistics of all that out. Lower right is more of a figure 2.

http://kekkai.org/google/random/8-pix-tiles.png

Here's a fun idea though. Let's say we don't make our map tiles 16x16. We make them 8x8. Now, from there, you could just slice each tile into 4 pieces, but that doesn't really solve the problem here, it just gives you a sharper resolution for your ugly borders and a bigger headache for what counts as what.

Instead, let's trim 4 pixels off each edge and just look at the clear, unambiguous, tile centers. You are plains or you are trees or you are water or you are mountain. Clear whether or not I can step on you, and there are no edges to you that might border on some other terrain type. The lower-left hunk of that image has a bunch of these placed, with conspicuous gaps.

Now, these margins still need filling in, so we need a bunch more 8x8 tiles. One for water to the west of plains, two forest spaces side by side, etc. and kind of an annoying assortment of corner pieces, but these are all pretty damn unambiguous. The mini-tile for plains in all directions but SW which is forest is always going to be that upper corner, and know it has plains/forest off two sides, and plains/plains off the other two, it's never really going to be playing any weird double duty. So we can nicely round our corners off. Plus, when we're storing the whole map in some big ugly array, we don't need to hand-plot those beach tiles. We an just slap in the rough ugly borders version, and extrapolate where the nice coastline half-tiles (which essentially border 2 spaces go later. And it really really hides the tile borders, which, personally, is always my #2 design goal with stuff like this.

Bottom right corner there isn't a real example because it's late and I'm tired and I don't want to fiddle around with specific border match-ups, but you get the idea, right? Mainly this strikes me as a REALLY good way to go if you ever need to randomly design an overworld for a roguelike or whatever and you want things not to look blocky and gross.

Googleshng
10-04-2015, 10:59 PM
Oh hey, bunch of broken links in here thanks to pulling this site down. I'll have to fix all those later.

Anyway after a LONG break from getting done with this, I got back on the horse tonight and tried to see if I couldn't do a better job with these character portraits.

http://www.kekkai.org/google/portrait-comparison.png

Pretty happy with how Rouge (#2) turned out, and... I don't know who redid Forat (#3) here because there's no way in hell I'm capable of that. Astra (#1) however I botched and need to take yet another stab at. Here we go:
http://www.kekkai.org/google/portrait-comparison-2.png

I should redraw some cutscene art too.