Nothing useful today.
Have been dumped down at a customer site, at the behest of the customer, without the customer having any real work for me.
Even after doing everything I can come up with to progress what they want, now I am sitting and waiting on them in all cases.
#BE3 revealed a TES6 and that Fo76 was fully multiplayer, so that's... fun.
And I still have nothing I particularly want to code, even though I *DO* want to code.
Magic Testing Day 3
Some more Wizarding on my behalf.
I've added a Reset, Step, and Play/Pause button so you can control the flow of the logic, and fixed the Jumps so that the jump you to the correct place in the logic.
There is also a counter showing just how much Mana has been burned by this spell.
I have also found that specific characters, like the Triangle one uses for Play in Unicode now render as Emoji in Chrome, with a forced alternate font.
This is problematic and nasty, any time the browser steals the ability to do something from the developer it'll break someone's work somewhere.
And now I can't have nice buttons without using images (which is my current workaround).
Magic Testing Day 2
Y'er a Liz'rd 'arry!
We now have the ability to select between variables and numbers when incrementing, setting, or decrementing.
We have a system that is reading the runes placed into the side from the page and creating the correct context to RUN the runic magic.
And we have it actively running right now. So you can build some basic logic and see it work!
There was more work in getting this sorted than I'd care to mention, but hot fucking damn!
I have just sat down and altered the code so that Marks are not normal runes, and will instead set the position of the mark BEFORE running any of the runes.
This allows jumps to move AHEAD of them in time, but will have the jump point be the last of that specific mark on the list.
Magic Testing Day 1
So, following on from the idea about magic I had yesterday, I decided to actually build a simulator for it!
The logic actually works, and the code is there (and tested) for actually RUNNING the logic.
After getting the first parts of the logic sorted, I moved onto allowing a user to build their spell on the page, as this was what I actually wanted to do.
It's capable of adding Runestones to the list, of setting their Keystone, of producing Loops, and technically it should be Turing Complete provided that I can give it an output.
I have the ability to reorder Runestones, and delete them in as well.
And tomorrow's task is to add the buttons to step through the logic. And hopefully add the renderer in so that you can see the effect of the magic in a nice Ascii Playpen in the top right corner.
There are 11 variables and 11 marks, variables being the first half of the Phoenician Alphabet, and marks being the other half. At first I tried having all 22 characters for both, but that proved to be more difficult to manage in one's head.
Another thing I have discovered because of this is the ability to do proper flexible layouts using percentages AND static pixels without getting too stupid about it.
God I love transform:translate(); That is what makes the positioning of the bars on the page possible at all.
Thoughts on Magic
Well, I've spent a chunk of today thinking on magic systems for a Roguelike, and what I have come up with actually seems like it could be fun to play with.
Essentially you would program spells with Runestones. Each either acting as a logical step or a effect step.
Each Runestone may have multiple Keystone positions, variables that alter the function of the Runestone.
Set Aleph 6 Mark Bet
Move Forward 1 Burn Tile Subtract 1 From Aleph
Jump If Aleph Zero To Bet
This simple rune set would encode a spell that creates a line of fire 6 tiles long in front of the caster.
The mana consumed by this spell would be something like:
Action Cost Total Cost
Set 1 1
Mark 1 2
Move 2 4
Burn 20 24
Subtract 1 25
JumpEZ 2 27
Move 2 29
Burn 20 49
Subtract 1 50
JumpEZ 2 52
Move 2 54
Burn 20 74
Subtract 1 75
JumpEZ 2 77
Move 2 79
Burn 20 99
Subtract 1 100
JumpEZ 2 102
Move 2 104
Burn 20 124
Subtract 1 125
JumpEZ 2 127
Move 2 129
Burn 20 149
Subtract 1 150
JumpEZ 2 152
If the user had an Input Aleph Instead of a Set as the first line, they could easily configure the length of the fire on the fly, making for a FAR more flexible spell.
Since runes would be physical objects in the game, and you could only have a specific rune in one spell at a time (although you could have many of that rune) it would require players to be flexible and intelligent in their spellcrafting.
The same Spell in a non-looping layout:
Move Forward 1 Burn Tile
Move Forward 1 Burn Tile
Move Forward 1 Burn Tile
Move Forward 1 Burn Tile
Move Forward 1 Burn Tile
Move Forward 1 Burn Tile
Action Cost Total Cost
Move 2 2
Burn 20 22
Move 2 24
Burn 20 44
Move 2 46
Burn 20 66
Move 2 68
Burn 20 88
Move 2 90
Burn 20 110
Move 2 112
Burn 20 132
Would cost less to cast, but require 6 move and 6 burn runes.
So all spell crafting would be a combination of Efficiency of Mana, of Runes, and Flexibility of creation.
While the first spell could be quickly modified taking only a single action to alter Set Aleph 6 to Set Aleph 2 to reduce the line size. The second spell would require you to remove 8 runes from it. Taking 7 more actions.
A long night
That's all I have to say really. Yesterday I was up from 0130 until around 2230.
God damn I hate patching production systems.
So today there is a distinct lack of anything approaching intellectual ability, so I am taking today as a nap day.
So here is a list of all the projects I want to get done. (In no particular order)
- Purgatory - the Dwarf Fortress inspired game where making the player ragequit or cry is the primary goal.
- Gnome Arena - The Goatbot based arena game where players send gnomes to fight to the death.
- MekWarrior - A JS implementation of the MekTon Zeta rules allowing players to fight Anime Mecha of all sorts against each other.
- Borealis - A Space Strategy game where empires and technology can rise and fall. Spanning the full cross section of sci-fi, from near future to full on literal space magic.
- Congruence - A PIXI.js GUI toolset for Borealis and all other games I do through Pixi.
- MultiSnek - A WebSocket based Multiplayer Dungeon based, Rogue-like(ish), Snake game.
- Cinder - A PixiJS Roguelike, although I have very, very few ideas for this. It'll likely be a playpen for Purgatory gameplay elements.
- Gnomkémon - A Goatbot based Pokémon-like with Gnomes, essentially phase 2 of Gnome Arena.
- GoatPoker - A Goatbot based Poker game. We all need better gambling games than coinflipping and blackjack.
I am a horrible, horrible person.
I really do need to spend a few minutes every few days posting one of these, instead of forgetting that it exists for months at a time.
The latest piece of work is Goatbot. The Eigth Iteration.
This instance of Goatbot is avoiding all the silly crap I had in him in the past. Things like his random hatred of Jeff, or his Tainting of people.
This instance also has Help files. Which is a new thing for me. Previously I have placed the help in a nigh unreadable file on the website, and left it up to people to discover how to use GB. Now every function has a tiny description about how to use it. Hopefully this makes it easier to use him.
Another divergence from the norm, is that he doesn't give a crap about logins anymore. I still need to give you the ability to Lock your account down to JUST the Gamesurge login. But for the moment, if you log in with a Nick he knows, he will put you on that specific account. Allowing people who normally wouldn't interact with GB to finally earn Goatbux.
I have a pretty bad module currently figuring out how much money one should earn for talking, and this needs to be overhauled with a spellchecker and a url parser so I can provide income for things other than simply the number and type of letters. But it works for now, and that's all that matters.
He also has a Bank, where users can store money, and take loans. It provides a pittance of interest on Savings, and takes basically nothing in interest on loans. But it works. I do need to make the interest rate dynamic over time. A future addition.
The next main goal of GB is to get the Gnome Murder Arena going. So people can pit Gnomes in one-on-one fights to incapacitation or death. That'll be fun.
To try Goatbot, head to irc.gamesurge.net:6666 with an IRC client, and connect to #GoatTestingChambers or #GoatCasino better yet, join us on #LimitTheory
Heh, I've been bad at doing anything at all lately, but some of the IRC twats decided that I should produce some additional features for a toy I created. So now, not only can people watch the IRC with a live feed from Goatbot, but they can also scramble text that goes there from the IRC (to prevent creepers creeping).
It's altogether rather simple code, put together initially just to provide a way to make use of a faked Dot Matrix Printer effect I was playing with. It has many features still missing from what I want to actually have there, but for now, it looks cool, and it does a tiny job.
I mean, gotta allow Josh Parnell (of Limit Theory infamy) to creep on his IRC cultists after all.
So, I have mostly been avoiding writing here. Partly because I dislike writing, partly because nobody actually reads this, and partly because I haven't had much to share.
I've started work on an Orbital Math JS Library for use in whatever I end up doing, and have that working appropriately after stealing someone else's code and fixing it up.
But other than fiddling around with three.js and remembering why I hate it, I haven't had any motivation or interest in much.
Suppose I should figure something out and start writing, if only to keep me from being entirely bored at work...
Q-Rogue Day 7
So first off, thanks go to Talvieno for forcing me to get started again.
Today we have Inventory Management, Item usage, Weapon Equipping, the first Monster, Death, and a first pass on corpses.
I might spend a little time making a tiny Manual for it, so that I no longer need to tell people how to play, as that is starting to annoy me.
But I have the next 4 days off, and so won't be making much/any progress over this time.
Quick Edit: Added a tiny list of keys that can be used.
Zed - aka I'm Bored
Another day without motivation. So I put together a tiny websocket server/client pair that simply passes mouse input from one client to all clients.
It's a nice wee toy that suggests that I can use many, many more packets per second than I thought I could. Which will be useful when I eventually get my hands on Limit Theory and start the Multiplayer Mod.
The Goal for Zed is to produce something small, dumb, and instantly multiplayer.
Just load up a page, and bam, you are in a game annoying other players. I am tossing up between an infinite procedural city, scavenging for goods and murdering Zombies, or a finite dungeon where you get a Goblin Den that spawns stupid goblins, who directly chase your cursor into walls or holes or whatever, and attack other goblins on sight, with the goal of killing the other player's Dens. They can just reload into the game if they die, and be straight back in again.
But for now, I think I am going to put this down and play some Elite Dangerous tonight.
Q-Rogue Day 5
Nothing exciting today, just made doors spawn in more varied positions on rooms.
Lacked motivation and time to do anything interesting, although I think I will remove the tooltip onHover. Replacing it with a Key that sits on the right hand side of the screen (outside of the draw area) and updates dynamically to tell you what each symbol means on screen.
Q-Rogue Day 4
Implemented a tooltip, allowing me to hint at the usage of items and objects.
Added Field of View, using Restrictive Precise Angle Shadowcasting, one of the quickest and most accurate options for FoV, I am not happy with the coloration of non-visible but known areas.
But I am very happy with the results of the algorithm.
Added the first weapon, a simple dagger, that can be wielded and sheathed from a button. Although, that button is as yet not available.
You can now go deeper into the dungeon, and return up to higher levels. The exit is your goal, go as deep as you can and collect the best loot, or something.
I also figured out what I want to do with weapons.
Weapons will restrict usage of your hands, anything that requires manipulation will take longer while holding things. Such as picking things up, or sorting your inventory. Additionally some tasks are impossible to do while you have items in both hands (or one if the task requires two hands).
Q-Rogue Day 3
Managed to get chests in, with loot from a loot table of various values. A chest on level 6 will have a much larger range of possible loot items than one on level 2.
I also implemented a grab with the G key. Allowing you to pick up the loot.
Turns are also getting counted, moving, opening a door, closing a door, opening a chest, getting an item. It all costs you a turn.
And on the note of turns I decided that opening your inventory would require a turn to open, and one turn per slot you move the cursor through. So deal to your inventory management with as few moves as possible. And place anything you need in combat on your belt, as that you can access without wasting turns.
Hopefully I get some more time to work on this today. But likely the next bit of work will happen tomorrow.
Q-Rogue Day 2
Well, I spent most of the day working on this, and a bit of last night.
I got rendering of a map, basic map generation, camera movement (as a debug thing), and corridors all into the game.
We now have a large map of rooms, that have guaranteed connections, and I can use that to build a hierarchy of rooms to allow for an entrance, exit, and multiple locked directions without blocking progress by having the keys unreachable.
I guess I get to work on it some more over the weekend.
Here is a small start at a Roguelike. Why? Because why not?
I am not 100% sure what I am going to implement into it. The current thought is that it'd be nice to do something around a player economy. Perhaps make it multiplayer?
I have some initial UI elements in there, a food bar, a mana bar, a health bar. A backpack, belt, and a depth indicator. Not sure how I feel about the string "belt" at the top left. Might remove that later.
But as for the rest? It's a solid start.
Well, I finally bothered to put together a small blog like this piece of shit.
I hope you idiots hate it, I really, really do.
I'll eventually start dumping random projects and ideas here, including Goatbot's user manual.
It's just a shame that the corruption on my last Pi required me to rebuild and get this all working.
I have a list of things to clean up, one of them being this godawful css.
But at least it is a start, which is more than you can say for Talvieno's projects. :V