Thursday 9 March 2023

March 2023

making full fledged game projects on itch.io is tough. I'm going to try something easier by making little scripts that can be embedded on these blog pages :)

Sunday 12 February 2023

Wednesday 18 January 2023

2023 A New Year

 This is pretty much just a placeholder post.

I might add to it or I might just delete it later.

Depends if I can create a better post for January between now and the end of the month.

Contemplating going 'goblin mode' on this blog and just posting whatever to overcome trepidation over having a gap between posts. (assuming goblins have a poasters nature, they certainly like to create piles of trash I guess)

Monday 19 September 2022

PocketCiv is now playable on itch


Low effort post today as I've not managed to finish any longer posts over the last few months. Having enough energy to create things is hard :/

Monday 6 June 2022

Programming Projects, where are they?

 

I think it must be a common situation for any person who creates things that you start a whole lot more projects than you actually complete. I've been messing around with programming projects for a significant fraction of my life and have lost count of the number that have reached a certain amount of progress and just... stop.

Even among the projects that enjoy good progress and reach a point where I want to share them there can be issues in terms of what form to share them in. There can be quite a lot of work involved in uploading and presenting projects online. Often the impulse can be it throw them up on the likes of itch.io and be done with them.

I, uh, should probably have mentioned sometime in the last couple of years that I have an itch.io page with projects on it... https://alexmulkerrin.itch.io/


So many fine projects that have never gotten a dedicated blog post are there.

Having been posting about programming projects online for about a decade now the form of how I've uploaded them to be shared has changed over time:

  •  Initially I would just put the JavaScript inline on the page to be rendered into an html element which was neat but it did run into issues when more than one projects code was on the page at once and there were variable name collisions. 
  • I could alleviate that somewhat by making it so only the intro to a post appeared on the blog homepage and you had to click through to see the running program. The issue then became when I wanted to write bigger projects and the code became too big to have all in one html file.
  • I could split my code into dedicated script files if I had someplace to host them. Initially there was such a hosting functionality built into Google Drive that let you not only host files publicly but also embed JavaScript projects directly in another webpage.
  • Alas this was only provided for a short time, then discontinued leaving mysterious Google error messages on the pages that used it, such as my initial post here about Swarmlord. Looking for an alternative I came across rawgit that let you host projects from a repository on Github. I already had a GitHub account so it was an excuse to be a more dilligent developer and use git as part of my development process.
  • Sadly last time I checked a rawgit link it wasn't working either. At that point itch.io had become a thing so I eventually moved to hosting projects on that including old and recent Ludum Dare entries, another thing I have been neglecting to blog about!
Long story short, from now only any programming projects I share will be hosted on my itch.io page where, hopefully, they will remain accessible and continue to work.

I would also like to get back into the habit of posting on here about projects I am currently working on. Even going so far as to provide links to in development projects not 'officially' visible on itch.io. For example this:


It's a world map generator which lets you zoom in super close just like Google Maps :D
Super secret link here

There's a whole lot of work to do on this but the essential algorithm to allow you to zoom in and out focused on the mouse cursor's position is solid. For now I simply adapted the Civilization terrain generation algorithm and tile types. It's crazy to think that on a properly scaled planet each tile is 500km across :o

Monday 28 March 2022

Dropfleet Commander Kickstarter Fleets


 I'd like to share some photos of a slightly different hobby project that I've completed recently. Miniature spaceships for a tabletop wargame called Dropfleet Commander. Firstly, here's a shot of all the different faction's fleets together:

The complete collection

That's 28 ships in total over 4 different factions, including light frigate sized ships and bigger cruiser hulls. I'm pleased with how the colour schemes I chose for the different factions came together and make it clear which ship belongs to each faction as well as make it apparent what the different armaments are.

As an aside the kickstarter that launched Dropfleet Commander as a game (page viewable here) in my opinion is the most successful kickstarter with the most benefits from additional milestones ever seen. They blew past their initial goal of £40,000 in less than a day and reached a staggering £629,000 raised from 3900 backers in total. Their success was such that they were able to bundle in additional ships for each an every backer. I only backed at the lowest level to receive one fleets worth of ships; the PHR (the ships in orange above) giving me 4 frigates and 3 cruisers. But because of the addons I received an extra frigate sprue as well as a cruiser sprue for each of the four factions, meaning I have a small force for each! :D

The kickstarter funding period ran for a month over November 2015. I actually received the package containing the rules, extra backer rewards and unassembled miniatures still on the spruces around November 2016. While it didn't take me too long to assemble the models and play a few games with them I didn't get them painted until last month. They have spent rather a long time being packed away in a box under my bed but that is a not too uncommon fate for such miniatures I find :P

Anyway, here are some photos of the individual faction fleets:

UCM fleet

 First the UCM (United Colonies of Mankind), the main human faction. After the Scourge invaded and occupied the core worlds, including earth, the UCM was formed to take back the worlds lost. I gave the ships a very utilitarian colour scheme based on a plain white undercoat with a black inkwash over the model to pick out the seams of the armour plating. I took the time to pick out some of the plating on the tops of the models in grey and white to denote different ship types. Other details to note are the railguns with a light blue inkwash over a metallic colour, missile pods picked out in red and engine pods metal with a yellow inkwash and bright yellow thrust.

One part I was particularly pleased with how it came out were the hangar bays on the cruiser. Painted in white and then given a light blue inkwash to give the impression of light streaming out of the opening. Here's another closer view:

Cruiser closeup

Next are the Scourge themselves:


Very organic looking ships that reflect the fact that Scourge pilot their vessels by merging with their machines. Their playstyle revolves round being sneaky with stealth systems or hiding in atmosphere to get close to their targets before unleashing devastating weaponry at close range. I'm really happy with how the combination of a light blue basecoat combined with a purple inkwash looks. The models have all this cool, organic detail that an inkwash works really well on. The Scourge main armaments are oculus beam weapons which I've done as reflective red eyes by using a transparent red paint over a metallic base colour.

Another alien fleet are the Shaltari:

Shaltari fleet

Aloof and mysterious their ships look and act very differently to the other factions. They get lots of special rules such as shields and most importantly utilize teleportation technology for the gameplay of getting their troops to the planet's surface. This is done through Void Gates, the little circular ship in the top left. Being such an advanced race their ships have a really alien look to them and it's difficult to work out what parts are ornamental or functional. I experimented with different base hull colours on the small frigates at the front but if I were to paint more of this faction I would probably use the colours on the large cruiser at the back; a earthy yellow with a brown inkwash. I went for a wooden look to these ships with browns and greens. The little lights were fun to do being just white dots with a wash of a ghostly green contrast paint.

Lastly but by no means least are the PHR:

PHR fleet

The PHR (Post Human Republic) are a different set of humans who got involved with a mysterious alien artifact and are big on robotics and self-modification. Their ships look absolutely great, highly advanced, sleek hulls with manoeuvring fins and loads of guns in a broadside configuration. The official colour scheme is quite subdued with a bleached bone look to the hulls so I decided to go for something a little more exciting; bright orange with stripes. They already look quite fishlike so why not go the whole way and have a fleet of tropical fish in space? :D

Like the UCM I gave the launch bays an inkwash to depict light sources, green in the case of the PHR which can be seen on the ships in the top right. The PHR ships have lots of detail along the sides and the rear which were easy to pick out with a bright metallic base layer with a black inkwash. I love inkwashes, they work so well on highly detailed miniatures like these :) For the orange hulls I used masking tape to block off where the stripes would be and then painted the rest in the brightest orange I could find. As a finishing touch I put a layer of varnish over the hull to give it a reflective quality which I'm rather pleased with.

Well that's what's being keeping me occupied over the last month or so :) I've also been playing a few games of Dropfleet with family and being enjoying that too. Perhaps in future I'll find some people locally who are interested, fortunately I already have painted fleets which we can play with. There are loads of new models which have been released since the success of the kickstarter, including a whole new fifth faction so I'm likely to pick some of them up to paint sometime. Thanks for reading!

Monday 28 February 2022

Part 2 of Insyrosept

Second part of Insyrosept, in which we are introduced to more of the crew in the run up to the space ship's launch, enjoy :D


Part 2


The crew of the Insyrosept spent ten real-time weeks running on the Oxbridge computing cluster. During this time they experienced one week of subjective time. Even with the world’s fourth most powerful supercomputer it was impossible to run a simulated mind faster than this. Not needing to sleep saved them some time but the classic slow-sim problem left them out of step with the outside world.


The week of experienced time was run mostly to make sure the crew had adapted to their new existence. There were tests to be made on how well a simulated mind could interact with the spacecraft’s system. With the proper assistant programs, a human mind at a tenth normal speed could handle orchestrating the entire spacecraft’s systems. In theory at least.


Practically however, Ivonne was finding that the emergency drills were much more difficult to deal with when everything could go wrong ten times as fast. Even though she had helped design them she complained to Kim that the sub programs he had provided were useless for the task at hand.


    “Did you fiddle with their workings while my back was turned?” she angrily said to him as they viewed the grim results of another containment breach simulation. 


    “They're so twitchy it’s like picking up a grain of sand with a toothpick!”


    “I can turn down the feedback sensitivity on the locomotion,” Kim replied. “but I think we're really going to have to add another layer of automation to the reactor controls.”

    “We both know that would never work, I've never seen a meltdown go down in the same way twice.”


    “Well if you help me with the agent settings-”


They continued like this for several more minutes, each one tired of the string of failed simulation runs. Fusion torch drives were marvellous pieces of technology but required quick, decisive action to stop a breach of the reactor from destroying the entire vessel. Ivonne had been piloting experimental space craft for years and was renowned for her ability to judge when a fusion drive was about to go critical. The debate they were having was mostly to protect her ego, both knew that there wasn't any way to get around their slowed down reaction times.


    “Fine then, have it your way,” Ivonne relented, “try distilling a lifetime of experience into just a few lines of code. If it messes up in even one test I want it scrapped.”


    “Of course. So, the same tests tomorrow?”


    “That long? You take too long to code these things Kim. Isn't there anyone else you could ask for help?”


    “Well James is no good, too busy trying to cram the 'sum total of human knowledge'  into the ship’s memory. I'd ask Claire but she's never outside her quarters.”

    “Oh yeah, our resident computer genius. Think she could come up with a way to make us run faster?”

    “Hey, be nice to her ok?” Kim replied as he exited the simulation space. “She seems awfully young to be on a trip like this and mock hero worship won't help.”


*


Claire Sinclair had been holed-up in her quarters for most of the crew's simulated existence. It was not a case of her being work-shy. The ship’s Doctor had been in constant correspondence with her as she reviewed the minutia of the crew's simulated body readouts. Claire felt very out of her depth discussing deviations of neuromuscular response with someone who had so much real world experience. Her research had always been about the mental side of simulated human experience. 

Sally, the ship’s psychiatrist, had been less stressful to talk with. Her queries were more about mental states the crew might experience. Claire had to be careful not to let too much computing jargon slip into her replies. Sally had not approved of her suggestion of rebooting from a backup mental state in the case of a crew member’s mental breakdown.

Tonight she had some free time as her meeting with the captain and the ship’s pilot had ended early. Both had been brief in asking about the potential simulation capacity of the spacecraft whilst in flight. The captain had seemed happy with her explanation of the number of minds supported at once being inversely proportional up to normal limits. He was nice, Clark the captain. The other man Lewis made her nervous with his stony expression. 

Claire was reclining in the soft lighting of her quarters, absent-mindedly manipulating the neural net hovering in the space above her. She had been meticulous in laying out her furniture in the same manner as she had back at her office at Oxbridge Computing department. An neat ordering of desks and terminals that she had refined over years of work. Other than the furniture the space of her quarters appeared empty with no visible walls or floor. She floated in the centre of her sphere of displays and holographic projections in a simulacrum of zero-gravity. Ever since she had visited low orbit Claire had longed to escape the Earth's gravity. Her simulated body might not have the dull joint aches her organic body had but the subconscious desire was still there. 

As she was panning around a particular fractal network design, there came a knock at the door. Or rather the sensation of what a knock would sound like if there was a door into her personal space. One promptly appeared hanging in the blackness, beyond Claire's circle of light. As the knocking came again, this time from the newly instantiated wooden door Claire connected to a visualisation of the corridor outside. The person standing there was a crew member she had seen at the initial group meeting but had not had any contact with since. According to the crew manifest she was Ivonne Blaskowicz; head of engineering.


    “Uh hello,” Claire projected into the corridor “can I be of help?”


    “Hi there,” Ivonne replied, startling her by looking straight at the default camera’s position at the top of the door “how about letting me in, got a question you might be able to help with.”


Somewhat flustered, Claire mumbled her assent and the doorway blinked open. Ivonne only hesitated for a moment on the threshold before confidently leaning into the zero-gravity of the interior and pushing off from the floor outside. 


    “Cool room.” Ivonne said as she floated forwards, “Didn't realise we could pick the interior decorations quite like this.”


Claire could do little but mutter as she orientated herself upright and scattered the various programs she had open back to non-existence. 


    “Coming through!” Ivonne exclaimed as she headed towards a desk piled with minimised files and folders.


    “Wait-” Claire squeaked, “you'll hit it!” sending the halt commands to Ivonne's simulated form.


    “Huh, weird.” Ivonne said as she slowed to a stop, hovering in empty space after accepting the simulation commands. “I did wonder how you managed to keep everything hovering like that.”


    “It’s, uh, just the same commands you, er, you could use to move in any simulated space.”


    “So I don't have to walk everywhere?” Ivonne's eyes lit up as she grinned. “Sweet.”


    “Well, um, only in environs without gravity, elsewhere you'll just locomote as normal,” Claire replied, “But you really don't have to be walking around inside a simulated space if you have teleport privileges...”


Ivonne was grinning ear to ear. “I knew the creator of all this would have all kinds of secrets to share. So what else do I have to learn?”


    “Oh no, I didn't create any of the simulation agent interface, that was around long before me. I hardly did anything except work off what had been done already.” Claire instinctively deflected the praise she felt was unearned. “Ah, I forgot. Do you want a seat?”


Flustered, Claire summoned an office chair into existence beside Ivonne.


    “Thanks, so can I sit by doing the same thing you did before?”


    “Oh, um yes. If you define it as your target and um...”


Ivonne floated down onto the chair, coming to rest as if she were still on the Earth's surface as her hair continued to drift in zero-g. Ivonne gave Claire her ‘best-friend’ smile as she began to speak:


    “I was hoping you would be able to help me with a small problem I've been having with reaction times as we are now-”


    “Oh you too?” Claire chimed in without thinking, “Lewis- I mean... It’s quite a common issue when operating machinery adapted to human response times.”


    “Anything you might be able to do, make us able to run faster perhaps?”


    “Oh no, no, no. A full human simulation puts definite limits on how fast it can- the barrier of Moore's law at subatomic scales- I can't do anything about all that. It’s just a fact of computing that any sufficiently complex process reaches limits of parallelisation and, and...”


    “That’s okay,” Ivonne replied, putting up her hand to stop Claire's rambling, “I was just wondering if there was a way to make snap judgements faster. You know, the way that a human being can react faster than thought due to muscle memory.”


    “Not really, well I guess...”


    “Oh?” Ivonne remarked leaning forwards.


    “I suppose if it were for only a very brief moment, less than a second. There is perhaps a way, I don't know for sure.”


Ivonne gently nudged her along, patiently returning Claire to the topic at hand when she got lost in thought. Together they planned out a method to give a simulated human much improved responses.


Half an hour later: 


    “It’s all down to balance right?” Claire reiterated, “So much of a human mind simulation is keeping the feedback loops inherent in the organic nervous system from going out of control. If the algorithms for calculating the stable equilibria of simulated brain chemical concentrations aren’t exact-”


    “It all collapses into noise in a matter of moments.” Ivonne finished, “But if you don't need a simulation to stick around for that long.”


    “Right, then you could get significant speedups due to using a cruder approximation. It'd be a kind of look ahead function of the simulated mind’s response."


    "So how hard would it be to set up such a thing?"


    "Well computer storage isn't really an issue, the changes to the whole crew's minds are recorded every thousand cycles with complete backups made every hundred thousand." Claire pondered for a moment, "I don't see why one of those snapshots couldn't be passed as input to a software assistant to act upon."


    "Brilliant Claire" Ivonne said, "I knew you'd be able to help"


Claire could only smile nervously at this compliment.


***


There are a lot of characters in this story so I did my best to bring across their personalities in their introductions. Writing their dialogue has been fun!


I've been busy with other projects over the past few weeks so it took a while to get this written up. I've still got lots more of the story to go but the next part is mostly just a rough outline and notes. It may take a while to write but I am determined to post all of it.


Thanks for reading and I'd be happy to answer any questions or hear your feedback :)