OpenArthurianX6 – SkyBox tweaks

Back to development!

Added a mask for the celestial bodies on the skybox, tried first with a sprite mask but then realized a simple rectangular mask would work just as well.

Next up was sky color, dug up a very old sky color calculator thing done originally for Pixal in 2009

Screen Shot 2018-09-22 at 1.54.11 PM

Also found these notes which seems I used to code it :

atmosphereBase: Universe is black always, right?

lightStrengthForTheHour (Sun)

       0.0 ----------> 0.3 0.7 0.9 ------> 1.0 ------------------> 1.0 ------> 0.9 0.7 0.3 --------->
 HOUR  0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20  21  22  23

baseLight: Stars emit white light.

It seems like the core of the tool is an interpolation function for these values, coupled with some research on how light works in the atmosphere (over-simplified of course). I went ahead and used the original old source code (probably one of my first works in JS) and transformed it into a decent module. It’s now integrated into the engine, in theory, this would allow to change some attributes of the atmosphere and have the color of the sky respond (small details, but it’s fun).

Screen Shot 2018-09-22 at 10.58.53 PM

Also allowed defining items for the NPCs, which allows Shamino to fire arrows.

Been considering how the UI should work (full-screen map vs. a layout similar to U6). For now, I think I’m going to continue on the route to create an exult/nuvie-like layout with floating windows. This also means much smaller reliance on the events log/messages window for things like combat, the damage will instead be shown on screen, for starters.

Another thing I’m considering is merging MobTypes and NPCDefinitions, I see a lot of overlap there, and it’s causing the code to be more complex than it should, what I’m thinking is a single list, so you’ll be able to define what a generic skeleton is, and in the future make spawners for them, but in the same set of definitions you would have for example Shamino, including his full dialog and initial equipment the current way things are laid out you reference a mob type from the npc definitions, but I’m finding out that most of the times you will not reuse an existing mob type….

Unless maybe if we need to have a lot of NPCs, reusing the same basic definition for a “townsman” or “children”… gotta think about this more before making the moves in the code

Trailer for the Roguelike Celebration 2018

The Roguelike Celebration is happening again this year, October 6 and 7. I will be flying to SanFran to assist and also give a talk about the History of Roguelikes.

Had an idea running on my head for a while to make a “trailer” for the event (no one asked me for it). At first, I thought of creating a playable classic roguelike using my JSRL roguelike template. I actually did create the foundations for it (as in walk in a predefined map), but it lacked the cinematic potential for a short trailer. In any case, I integrated the “torch” effect from the unicodetiles.js example into JSRL, which may be useful. You can check out the integration here.

Screen Shot 2018-08-10 at 7.30.17 AM

Then I had another idea and I just couldn’t be at peace until I implemented it. I think it occurred to me a day while driving and listening to the Mega Man III OST. I thought I had found the perfect tune for it. So, even in a busy week with lots of work, I just had to do it.

The trailer features the awesome speakers’ lineup in a “robot-masters” NES Megaman stage selected style.

I implemented it using JavaScript and Phaser, you can check the source code here and the demo running live here

Of course, there’s little structure to the project since it was meant to be a quick job (and is also pretty simple). Most of the relevant logic can be found in a single Object, the Game state. I set up a stage with a black background and the gray strip, as well a Sprite object for the character and 4 text fields. I used a Megaman 10 font (I had found another one for Megaman 2 but for some reason, it could not be loaded as a web font), I performed a simple centering function based on each line’s character count to keep the characters as sprites in the grid (thus getting a bit close to being a NES “background sprite”?).

There was also a simple “particle” animation in the background, instead of stars they were small @ signs because, you know, roguelike. I used the same color palette used on the Roguelike Celebration logo for them.

Of course, the most fun part was doing the pixel art for the speakers. I used a bunch of Mega Man 2 robot masters as a base and then I proceeded on tweaking them for each speaker. The ones I know in person where easier, for the others I had to do a bit of stalki Internet research, I hope I managed to capture their likeness.

Finally, I reused the “Retro TV with scanlines” from Cat Cafe.

 

Paladin’s Quest LCD

20180509_183241

An entry for the LCD Jam, about 8 hours dev.

JavaScript + Phaser as usual for great quickness. Pretty happy with results, nice feedback received, may develop further afterwards.

Play online here (Source code here)

Screen Shot 2018-05-07 at 7.51.39 AM

The game is a simplified dungeon crawler, classic style roguelike, which emulates (loosely) a LCD game display.

There are 4 different enemies: Headless, Floating Skull, and Phantom. Scattered in the dungeon you will find strong weapons and replacements for your shield, you will need these to survive!

Each level is 3×3 rooms, you must find the exit which is located in the middle of one of the 9 rooms.

Screen Shot 2018-05-07 at 7.51.11 AM

The LCD shapes (i.e. the different parts of the paladin) were made by Giovanny Ramirez, the wiggly dungeon room and the “brick game” frame I made myself.

1884 – Golf over Africa, LudumDare 41

The theme for the Ludum Dare 41 was “Combine 2 Incompatible Genres”. I’m pretty familiar with genre mashup, and I accepted Jim Shepard‘s challenge to jump in.

As usual for the LudumDare, I wanted to do something different than what I always do. That usually means doing something more accessible to the casual public, as well as ditching pixel art, and including real-time stuff and animations.

Here’s what I came up with: (Play online!)

golf

1884, the European superpowers have met to decide the future of the African continent… now their leaders face each other in an Open golf tournament to divide the land between themselves!

Screen Shot 2018-04-24 at 7.01.56 PM
Title Screen

I went for a combination of a Golf game with territory based war game (think Crusader Kings / Europa Universalis, or maybe RISK). It’s made for 2 to 4 players who take turns to play, the first country to occupy 10 territories wins the match.

In order to try to occupy a territory, you must land your ball on it, every turn the player decides the direction and power of his shot. The outcome depends on the stats of his country.

You can also invade other player’s territories, where the success of the invasion depends on the Military stat of each country. Countries also have other 2 stats: Logistics affects how far your shots will fly (with Great Britain being the best on this) and Leadership affects how accurate your shots are.

Game Screenshot
In-Game

Since I knew in advance my time would be extremely limited during the span of the compo, I went for my usual toolkit: Phaser2 + ES6. All art was done on GIMP, basically a lot of repetitive work extracting the different countries from a colonial map of Africa, and some flags and UI stuff.

Africa-colonial1
Colonial Africa

Due to the “weird” square and “high” resolution of the game (as in being about 800x800px, high for browser games standards) ended up doing a lot of work to make sure it would display fine on browsers with a smaller window height (you’d be surprised this is still very common in 2018) as well as the fancy retina displays which always mess up with scaling calculations.

This one went from ideation to fully complete product in less than 12 hours. I’m really happy how it turned out. Here are some areas where this could be expanded in case I work back on it ion the future:

  • Adding a “zoomed” version of the territory the player is doing his shot from. And an animation of the country leader shooting-
  • Making the viewport landscape and adding scrolling (and maybe a scaled map)
  • Enhancing the appearance in general.

OpenArthurianX6 dev update

Forgot to post here about the latest development of OpenArthurian which actually happened around a month ago 🙂

After that first dev stream I mentioned on the last entry, I did 5 more

Combat is almost done now, pending only adding some projectile effects for ranged combat. Next up is working on level transitions and the chunked world model.

Exodus Destiny also did some work on the game, finishing a first iteration of the Talk module as well as the Pick up / Drop functions (along with the Inventory)

Unfortunately I won’t be able to work a lot in the project for the next couple of weeks since I’ll be flying to San Francisco for the Roguelike Celebration and there’s another private game dev project I’m working on, but I’ll come back strong after that, I promise!

OpenArthurianX6 – Dev news

After all the craze that was 2017 js13k, I went back to my duties with OpenArthurianX6.

So far I’ve been working on the combat system mostly. The game features an hybrid action mode, the “mobs” move around the grid based map, deciding what to do every x millisecond (at first restricted to moving around or sitting idle). First task I took was allowing the transition to combat mode, in which the mobs take turns to act.

To achieve this, I added a synchronization phase where all mobs finish their moves before the actual combat state is established.

Next up was adding the “attack” action, but in order to make it work, a major refactor on how the actions flowed was done. Everything was changed to use promises instead of timers. This will allow to more easily add other actions in the future as well as parallel input modes (keyboard/mouse)

Also implemented some damage calculations based roughly on Ultima 6, and added the corpses to the ground when killed.

Finally, added some simple AI for mobs to seek enemies based on their alignment, for now they just seek the player and attack him. The actual attack action was pretty straightforward to implement for the mobs since they are the same as the player 🙂

I streamed the development of this latter part, you can check it in Slashware’s youtube channel here!

The Kramora Times #4 – Ananias 1.76 released

TL;DR – Get the new version from Play Storeitch.io or play online

This is the fourth edition of The Kramora Times, you favorite and more reliable source for all Ananias-related information. You can now subscribe to receive this newsletter in your email too!

Ananias Version 1.76 released!

It’s been over two months since the last release of Ananias. I had set myself the goal of the next version going straight into Steam.

Alas, I have to change plans again… I jumped into some projects and I don’t feel I can handle the workload of the release and all that is related to it while responding to these other projects responsibly.

screen-shot-2016-10-01-at-12-09-39-am

However, I have to say this is very close to the scope I have planned for Steam. May be next version will finally be it? I have been saying this for months now.

screen-shot-2016-10-01-at-12-07-38-am
Conduct Tracking

There were some important internal changes, specially in the packaging system (Using Cordova and Crosswalk without passing thru cocoon.io for much quicker development and release). They are likely to break things so I hope players are patient.

I also added an in-game manual (also accessible from the website, here). Bits of it are generated directly from the game source code, in order to keep it up to date! The wiki was also updated, with data generated from the game.

screen-shot-2016-10-01-at-12-04-58-am
Sample of the manual 

Another big thing is that you can now also generate tombstones for your characters and share them with your friends. See this one for example!

screen-shot-2016-10-01-at-12-06-17-am

So, with all the work that went into this one,  and given that I won’t be able to work back on the game for the following one or two months, I’m releasing this version. Check out the list of exciting changes below!!

Gameplay

  • Allow unloading weapons
  • Add conduct tracking:
    • No scrolls used
    • No spells used
    • No potions used
    • No bandages used
    • No weapons used
    • No armor used
    • No kills
    • No room unexplored
  • Add Zinc potion to recover from paralysis, blind, confusion and hallucination
  • Grant upgrade bonuses if 100% level explored
  • Make deep level enemies stronger
  • Tweaks on fleeing AI
  • Add Sir Glenn NPC, guaranteed crossbow at level 7

Social

  • Generate tombstone page with player info on death
  • Allow sharing tombstone page on twitter and facebook

User Experience

  • Add in-game manual you can check anytime, including bestiary
  • Change UX for mixing reagents
  • Play random dungeon music instead of tied to level
  • Remove Dungeon Crawl Stone Soup title
  • Make better use of space in dialogs in small screens
  • Prevent unselecting pet when cycling thru shepherd
  • Added extended title theme
  • Add option to Exit Game on desktop
  • Show stats when dying or winning
  • Show level summary on completion
  • Mouse movement in desktop with invisible arrows

Bugfixes

  • Prevent issue when throwing potions only 1 shot spent
  • Prevent keyboard actions when modal dialog present

Other

  • Generate manual and wiki text automatically
  • Added build scripts for web, android and desktop, including different level of audio quality.

    Steam Version

    Pending things for the release:

    • Detailed GFX for weapons and armor. May be important, not sure if I’ll be able to get an artist for it.
    • Adding more plot and may be even random stories. After talking with Thomas Biskup on the Roguelike celebration, I have reconsidered this and I think I should invest a bit on it.
    • Stealth mechanics, make it so that monsters not always notice players (add fov) may be even add fov for players?
    • Berserk tactics, extreme attack bonus when naked for some classes.

    Also pending for this is the new trailer, preparing promotional material and setting up a Thunderclap campaign (probably). All these will require money so I hope I can get support for it from the hardcore Ananias believers!

      Roguelike Celebration 2016 – A missed chance?

      As described on a previous post, I went to this unique event on San Francisco last month. It was a great chance to meet roguelike developers and players.

      Sadly, I missed this chance to promote the game in what was possibly the best targeted event in the world for Ananias’ potential players. I should have brought some info about it or pitched the game more… however time was pretty short, and I’m glad I got to share time with the amazing devs there at least.

      Dumeril Sage statues: production halted 

      There have been some issues with the production of the Dumeril Sage statues… the process is just too hard for me to handle, I don’t have a partner who can take of all of it to deliver finished products and at a good pace. May be it’s not time yet for this. At least I have managed to deliver some of the statues to people I really esteem and I hope they are enjoying them.

      The latest batch of statues, no flame, no staff, sometime they’ll be complete

      An alternative I’m considering is having smaller statues and using 3d printing instead. It’s a bit expensive but may be much easier to handle.

      For the t-shirts I am thinking on having an alternate design that can be printed on higher quality shirts (more durable). Thanks to all who already pre-ordered for your patience, I’m hoping to deliver a good quality product.

      Cat Cafe: Dessert Panic

      CatCafe is an arcade game where you have to fed the cats in the bar while avoiding other cats who jump at you. If you take too long to deliver the food, or if a cat makes you drop it, you will lose one heart.

      Each stage represents one day of work, and in order to complete it you have to survive until 5:00PM. Stages vary on their obstacles layout and the amount of cats you have to deal with at the same time. There are two difficulty levels, survive for seven days and you’ll win.

      Play now on itch.io!

      Motivation

      • Learning more about real time / arcade games and physics systems.
      • I missed last year’s “A Game By Its Cover” jam and I really wanted to participate because I love Famicases and I have the power to develop games.
      • I wanted to make a fun, light game that anyone can play without instructions but is still challenging.
      • Everybody loves cats

      Design

      For this game I followed a process I rarely do: I had no idea how the game would play when I started developing! All I had was a couple of very rough ideas for gameplay, first off the famicase description:

      70

      Cat Cafe Dessert Panic! Is an action-adventure game where you, as Pera, are the waitress at a cafe for cats. The cats are excited to eat, and they’ll do anything to get in your way. Do not drop the desserts or it’s game over!

      And then, some ideas I got directly from the artist who drew the famicase:

      “[…] like frogger except you’re trying to avoid cats and not cars, and if they hit you you lose your food […] instead of top-down view, it’s side scrolling (I guess jumping over cats).”

      So I just started building a stage for it… an area where the waitress could move around, and cats would follow her and jump over her. It was only after playing around with it a bit, to get a feeling of what would be fun, that an actual “game” starting shaping up.

      All I knew is I wanted to make a simple game that could be controlled with only the directional keys. In that sense, I guess the gameplay was defined in an “organic” way, without giving it too much thought from the upstart.

      One of the things that got me thinking tho was whether having obstacles on the field was easier or harder. It was easier because it meant less cats would be chasing you around, but harder because you could get stuck on the obstacles and be savaged by the cats.

      I guess I could have gone the statistics way and just play a lot of games (automatically?) and check the scores and lost hearts to draw a conclusion. In the end I opted to make the number of obstacles increase with the levels, but having a level amidst each one where there’s a single obstacle. I made this to encourage approaching the solution to each level differently, as you need different tactics to survive on each (I think that, in the end, both are equally hard).

      Code

      Development of the game span from July 21 to July 31. I started by replicating the structure of other game I had made recently (Lorenzo), since I knew they were going to be similar.

      The game is made on Javascript and uses phaser.io with its arcade physics subsystem (making a lot more of use of it compared to Lorenzo, though still not FULL usage). Single characters like Pera, Shoey and Lali are represented as objects, while the rest of character types (Cats) are represented as classes. There is also a single object representing the game where all initialization is done, and it also acts as the main game controller.

      Being a game developed for a jam, the code is a bit messy as it just kept growing as I was defining the gameplay and refining the user experience, you can find it at github here.

      Art

      CatCafe was created for the “A Game By Its Cover” Game Jam, where developers were asked to pick a fictional famicase (From famiCase16) and create a game around it. This influenced the choice for aesthetics, to try to match the famicom/NES style (without being strict at all about it, specially regarding sprite color count limitations). The comic style depicted on the famicase also influenced the style for the in game characters.

      I contacted Diana Pacheco (okuroy), asking if she would be interested on working on the project… we had previously worked together in the development of Failure Pixal (back on 2008, the art she made for that project was never released sadly) and kept in touch since then. She made an awesome tileset with very fluid animations for both the cats and Pera, as well as an amazing pixel art rendition of the original famicase cover.

      walkingCat

      Meanwhile, I worked on the stage itself. It was a single stage, I based the design in this screen from Déjà Vu on the NES.

      Deja_Vu_-_NES_-_Wandering

      I expanded it a bit to get the initial stage

      bground-1

      I also read a bit on the Catnip Circle webcomic (read it!), to get a glimpse of the universe where Pera lives, it eventually evolved to include some of its elements, as well as to accommodate to the border-less sprites that Diana was making.

      bground-2

      Finally Diana complemented the stage with her pixelart skills, putting some fancy stuff around to make it look better.

      bground-3

      Music and Sounds

      Initially, I planned to do the music and sounds with a guy from the jam forums, unfortunately he wasn’t able to participate…

      Then Ashton came to the rescue! I had already worked with him in ArcherFire and Ananias, and he really liked how the game was shaping up. He created a couple of great tunes in a very short time, as well as lots of very fitting SFX.

      TV-like appearance and responsiveness

      In addition to constraining to a low resolution stage (256×240), additional processing is done in order to make the game appear more NES-like, this includes stretching the display so that it fits a 4:3 ratio (similar to a standard TV set) as well as rendering some scanlines over it.

      CowD1t8WcAAAfNe

      In order to do this, first thing I do is detecting if the current window dimensions allow for stretching by increasing the width of it by 33% of the height. If not I just resort to phaser’s SHOW_ALL scaling option (and I hide the TV/Scanlines overlay, thus making it look like a standard phaser game).

      If it fits, I do a manual USER_SCALE, and relocate the TV overlay so it matches with the autopositioning and scaling of the canvas on viewport size change.

      Additional filters like simulating the round “bulge” of a fat CRT TV were considered and even implemented but ultimately dismissed (at least for an initial version) because they would have required considerable additional effort. They were based on an article by Zachstronaut which pointed out the idea to use webgl shaders via glfx.js to postprocess canvas frames on the fly. The main issue I had was that since the game canvas was very low resultion (256×240), and it was scaled by means of CSS instead of redrawing over a big canvas, the shader that did the bulge effect caused a lot of aliasing on the pixel art… I think it would look much better if the effect was applied to a bigger canvas with most pixel data, but I didn’t have enough time to check.

      bulge

      Mobile

      I used Photonstorm Virtual Joystick in order to allow input on mobile devices. At first I used the DPad implementation which worked but had the great issue of not allowing diagonal movement (which is critical to the game), so then I changed it to use one of the “stick” implementations, which worked pretty great.

      mobile

      Conclusion

      I made a fun, challenging game and got to work with Okuroy and Ashton around a theme that people loves.

      CozBUhjW8AA-Nll
      Pera and Shoey from Gatto Grosso – Image by Cassie Freire

      Credits

      Lorenzo

      One week ago, Victor Barrios died in the Bullring of Teruel, Spain. He was killed by Lorenzo, a bull from Ganadería Los Maños.

      Lorenzo was sacrificed shortly afterwards, and his mother Lorenza may have been slaughtered too as part of a tradition to end the lineage of the “Killer Bull”, but she had reportedly been killed already weeks before, because of her old age.

      I did this small game, as a tribute to Lorenzo.

      Play now!

      All of his life Lorenzo was trained to become a fierce fighting bull, but instead of being hailed as a great champion when he manages to defeat his opponent against all odds, he sees the world turn against himself and his family. Will Lorenzo be able to escape and save his mother from being slaughtered?