Dragold ended up being too strong, every 15 seconds, hurls a fireball to everyone who fought against him, even if he isn't in an active fight. These fireballs each deal 5000 damage before reductions and apply a burn with 100% chance. Definitely going to use this mechanic again but going to calibrate it so it's easy to detect and possible to evade (like running away before it happens)
Apart from the Chinese New Year event, it wasn't a very productive 2 weeks. The Pirate Ship zone design iterated a bit. Spent most of it researching new cloud technologies, there's a high probability I'm going to rewrite the backend of Adventure Land in JS before open sourcing, currently it's in Python. After Python 2.7's end of life, it doesn't make sense to continue with Python any more. Also Google Cloud, in my opinion, made a lot of illogical choices when they re-made everything with Python 3.7. It's not an easy to use, turnkey, "app engine" any more, you have to deal with each service manually, each of them are like unique programmer dementors, waiting to suck your soul. Originally, App Engine was a beautiful product anyone could use to practically develop almost anything, currently they made the barrier of entry extremely high. For this reason it makes sense to rewrite Adventure Land with NodeJS/App Engine. The logic is, if it's all in JS, at least it will be less complicated, someone wanting to develop their own MMORPG won't need to deal with an additional language on top of everything.
Early Access: Week 48,49 in Review
Holiday season was a bit of a holiday season for me too, but started re-visiting the ideas around daily events and attractions - here's the current draft:
Daily Events: [2X Each Day ~30mins each] [8PM-9PM] - Goo Brawl [PVE] - A/B Testing [PVP] - Come up with more [TODO]
Daily Zones: [9PM-12PM] Monday - Mansion Mystery [Roguelike-ish] [Done] Tuesday - The Castle [Done] Wednesday - Cloudland Thursday - Dracul's Lair Friday - [?] Saturday - The Island with the Tall Tower Sunday - Pirate Ship [PVP] [Done]
Everyday [12PM-1AM] - [PVP] A multi-level dungeon opens for 1 hour
So basically, the plan is to start the day with 2 small game-like daily events from 8pm to 9pm, then a limited time zone opens for 3 hours, the dynamics of the zones will hopefully be unique to encourage more on-screen and assisted gameplay
From 12PM to 1AM, plan to introduce a dungeon that is a bit like an underground tower or silo, a PVP zone, it might have it's own special server too, so while the PVP is of the safe kind, the risk/reward dynamics could encourage strong characters, code or collaborative gameplay
Each of these zones and daily events are going to open up new paths to introduce new items, but I feel like the 12PM to 1AM zone could be the main source of the endgame exchangeables - especially for the weapons, while the rest could be for unique armors and accessories and such
So the coming weeks will likely be progressing on this draft and completing/concluding things from earlier weeks, like the cosmetics system, pets system, minor changes like the achievement counting dynamics and so on
Early Access: Week 47 in Review
Started completing incomplete things. Added the Fire Bow and the Fiery Gloves, the gloves make a minor set with the shoes.
Added "Burn" and the "burned" state, it's currently not finalized or documented. Basically if you trigger the burned state, the target takes damage over time for 5 seconds, close to your initial damage each second - When it gets re-triggered, the intensity can increase but not much
Winterland and Desertland received "burn_multiplier"s and "freeze_multiplier"s
Added code slot persistence, when you load a code, the slot is persisted and appears when you try to save, however, if you load a code, then immediately undo it from the editor, the change isn't automatically picked up
Fixed the game_log / number logging issue on the game clients and item ability %'s can now stack, for example dual wielding Fiery Swords on a Warrior will double the Burn%
Event: Holiday Season + W45, W46 in Review
These 2 weeks have gone by really fast, it was mostly filled with patches and small fillers apart from the launch of the Holiday Season event. I went through some personal challenges, had the chance to work on a major problem I had and leave it behind, currently feeling pretty good, gaining a lot of momentum lately too
Really proud of this new interface that explains each aspect of the event with Code examples, going forward each event, special mechanic, special zone is going to include a similar info button that explain the dynamics with Code examples
There's visual progress on the Pets front as well :)
Some of the notable additions:
- Monster info now includes the "Base Gold" drop rate, the data is in "G.base_gold" - The NPC Mr. T is now named Cole instead - game.on("event") - Underlying methods of show_json are now able to show the attributes like .x/.y - which are getter/setters of PIXI objects - Special monsters can now resist being stunned with 50% chance, probably going to make it transparent in the future and introduce it as a "Skill Resistance"
Early Access: Week 44 in Review
Worked on the CLI a bit, the memory leak is solved - only problem remaining is the low performance of the vm environment, added a way to offload computation to the master.js file that runs the CLI characters - once I complete the external smart_move, I'll release the CLI
Started refining the Code/Skills interaction, replacing existing functions with better named functions that have clearer/singular purposes, existing functions will keep on working. There's a new accompanying Code article too. Started promisfying use_skill
Going to release the Holiday Season event this week
Upcoming changes:
- destroy_item becomes destroy - New code function: is_in_range(target,skill) - New code function: is_on_cooldown(skill) - New attributes on G.skills: range_multiplier, range_bonus, cooldown_multiplier - Possible breaking change: .range values such as "1X+32", "3X" are no more - use_skill will accept an array of objects for multi-target functions
Early Access: Week 43 in Review
Improved the cosmetics system further, it's hard to settle with a feature-set for the cosmetics system, It's read for release at this point, however I'll probably spend at least one more week on it. It's also hard to decide on the delivery of the cosmetics, we currently have 5 premium items, if all of the cosmetics drop from these items, it becomes a very rng-heavy delivery. It might be a good idea to separate different things to different packs.
There's a new item called the "cxjar" - basically if you liquify a cosmetics entity and put it into an "emptyjar" it becomes a "cxjar", for example bats will drop "cxjar"s including bat wings with a very low %. In addition, it will be possible to receive cosmetics from exchanges too!
Some progress on pets as well, I think the puppy licenses and that one "kitty1" item that dropped from a "glitch" is going to increase in value soon :)
New Feature: Citizen Aura's - Kane grants +1000% Luck and Angel grants +1000% Gold to start with, whenever they are nearby. The auras only last 12 seconds
At the next update, there'll be a new "chest" opening Game event, the data includes a lot of details, the +Gold% of a character now only applies if you are close to the chest, and if you are in a party, only the looters +Gold% applies
To counter some abuse scenarios, magiport and blink now act like you spent 30 seconds in the abyss, so all of your buffs age 30 seconds too, otherwise It'd be possible to stack chests, designate a character as an aura boy and only loot chests with the +Gold aura
Another small change, "compound" now returns a Promise (game needs to be updated first, so not now now, probably within this week)
Early Access: Week 41,42 in Review
Solved most of the initial theoretical dilemmas around the pets system, monsters will drop chrysalises or eggs, these will be combined with monsterboxes at the pets NPC, at this step you'll name your pet and it will be born (monsterbox might get renamed to something more creative, depending on the art) - Pets will each have their own unique character
There's a new mechanic, blocked items, a very common repetitive bug report is opening a merchant stand and storing the stand or sending them to someone else, now actively using an item blocks that item so it can't be sent, stored or sold - releasing a pet from it's box will block the box too, which is why I had to add this now. While working on this, decided to give the Ancient Computer a merchant stand functionality too
Obsessed so much over the look of female characters, to make them look more distinctly feminine, progressed a lot in the face and hair department, the exact placement of the hair, the amount of bangs, the shading of the face, hopefully it will all be perfect before the cosmetics release
Jayson converted all existing characters to a better dimensional format and went over them all, the cosmetics system will be able to unlock uncustomizable but unique characters too, you'll only be able to add hats and maybe back accessories to them
Obsessed a lot over the CLI version of the game too, stress tested it in many different scenarios, leaned routines further - currently there's a memory leak coming from jsdom, none of the setTimeout's/their contexts are garbage collected - until that's fixed, might release the CLI version and add a auto-restart feature to it to overcome the memory leak - I was planning to add a 20 shells/day cost to CLI usage, to balance CLI usage against regular players and prevent practical multi-account farming, however I'm open to other suggestions (thinking of adding a recycle feature too, to convert cosmetics items back to shells, this way CLI users can auto-purchase them and support the inter-game economy)
Re-visited the game clients, going to update all platforms soon with Electron 7.1.1 - however practical character switching using webviews won't make it to this update
Early Access: Week 40 in Review
Added a tunnel underneath Mainland to more easily move to Spooky Forest
This week's main addition is the account-wide achievements system, which applies the maximum# of kills from any character to every character
This system pushes players to split their characters into other parties, basically if 9 players come together and form 9 different parties maximum gain is achieved - which could be a good thing to be honest, but to balance things, here's my current idea:
1) If the kill happens away from a character, it would now count as 0.5 a kill 2) For each of your own characters in a party, 0.4 kills are added for each kill (2 characters = 1.4 kills each, 3 characters = 1.8 kills each)
With these changes, players can still go 9X9 and prosper, but those who party their own characters won't feel bad about it either - open to further suggestions on Discord/#feedback
Spent most of this week theoretically working on Pets + Cosmetics, I intend to release them together
Early Access: Week 39 in Review
This week was dedicated to our new /docs page: https://adventure.land/docs
All game and code documents, guides, articles and references are now linkable! When you open a linkable reference on the browser, you can copy-paste the url to more quickly help others find solutions!
Pledge: To ease helping other players and prevent repetition, post a frequently askable question on Discord/#feedback and I'll add it as a page to our Docs! (One example: How can I send items/gold to other players?)
The naming and nesting structure isn't finalised, so I haven't dived into it myself, but post a logical question and I'll add it even if it's in a temporary place for now (I can't come up with 20 FAQ's for example, if I could, I'd add them as Frequently Asked Questions on top of the Guide - and maybe Common Examples on top of the Code/Learn)
There's one new code article that uses 2 new code functions - get and set - there's a very practical example that makes you alternate between 2 actions and persists your action even if the game is refreshed!
Want to publish the cosmetics system, after requesting feedback on Discord, one other strong idea emerged, where cosmetics would drop similar to item exchanges (to a special inventory), and you could easily transfer and trade them, this approach does seem to solve the downsides of my approach, which are (1) My approach isn't account-wide, whereas with this new approach, the cosmetics can be transferred to your own characters too (2) With my approach, rarity isn't easily achievable, simply opening a pack N times unlocks everything (3) no-trade vs being tradeable - Downside: It's even more lootboxy, but at least now it's tradeable? I'm honestly very unsure about which path to follow
Other Changes:
- S.snowman and S.franky are now populated whenever they are alive (as requested) - New code functions: get, set
Early Access: Week 38 in Review
This week was dedicated to the first prototype of the mailing system, currently only player to player text mails are possible
Combined the Friends / Nearby / Server tabs of COM into a single Com-rades tab to save space
After some feedback on Discord, revisited the local code messaging system, code messages to your own characters should hopefully be 99%+ consistent now - retention is still possible but much much less likely to happen
Other Changes:
- New Code Function: safe_log - Candy droptable reformulation