Showing posts with label Civilisation. Show all posts
Showing posts with label Civilisation. Show all posts

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

Sunday, 5 March 2017

PocketCiv: Prototype



Time to once again resurrect my blog after far too long an absence! :D

Haha, but it hasn't really been that long considering I've been in training for proper software development and hadn't really stopped blogging during that time. As mentioned in my last blogpost as part of the training course we were called upon to do some personal blogging, documenting our time at QA's Academy. Link: QA Trainee Blog

Although half of that blog was personal posts about what we've been up to (spoilers, mine involved Dungeons and Dragons and boardgames :P ) we were also asked to write some technical articles about areas of technology that interested us. A real opportunity for me as I've been posting about things in computing that I find interesting here on this blog for years :D It hardly felt like an obligation at all!

My topic of choice for these technical blog posts was Procedural Generation, something that I have dabbled in several times (check the tag for it!) Seeing as I had previous experience with creating interactive examples of procedural content generation I decided a big feature of my technical blogpost would be such little, interactive web apps :D So many of them!

This was probably a bit of a tall order and I found it damn difficult to keep up with the intended, weekly publishing schedule (alternating from personal to technical). This was on top of our training too so I frequently finished posts off the weekend after the Friday they were due :P I'm quite pleased with the first couple of technical blogposts I did which you can see links for below:
Each of those pages has ~3 interactive web applets on the same page to mess around with, I'm pretty pleased with how they came out in terms of aesthetics and how well they integrate into the text. I can see myself revisiting the concept in the future and making some more article/demo combinations :o

(Third technical blogpost on pseudorandom number generation and procedural textures is buggy and unfinished. the fourth one; potentially on 3D mesh generation, exists only in my head in draft form :S )

It was great fun and I can see myself revisiting that series of technical blogposts in order to polish them up and post them here some day...

Wait wasn't this a blog post about a Prototype?

Yep it is! I just wanted to write an introduction to what I've been up to, maybe it should have been a separate post but the reason I'm posting again on my personal blog is to share my progress on a new Hobby project: PocketCiv!

It's so nice to be making one of these things again, my programming tasks of late have been very practical and focused on learning to use particular software tools. Extremely useful stuff and I feel like a much more competent programmer when it comes to proper serious software applications and serverside programming. Highly useful skills.

I still enjoy making my own brand of browser based toys/games and have some free time at the moment to put towards one. I'm going back to my computer gaming roots, all the way back to the original Civilization from 1991(!). The game has changed so much over the decades since then but I've always had fond memories of that neat, little DOS strategy game. It's graphics were so delightfully minimalist and clean, as it had to be due to the lack of power in PCs at the time.

So, PocketCiv is my attempt to take the basic, initial gameplay of that title and create a browser based app that has the core game loop of an early 4x Strategy game. :) It won't be complex but that's the point! Just a simple, quick experience that has you exploring a procedural world :3

I've created a prototype to stand as something of a Minimal Viable Product, the barest of essentials in simulation, display and controls. Settle on a single island, uncover the fog of war and fight other, computer-controlled factions. Victory is only by conquest at the moment and can be quite the arduous task if the starting continent is large and well populated. Sometimes you'll start on a tiny island alone too, rather extreme opposites!

The prototype can be played through a link on the PocketCiv Github repository I linked above.Read the instructions and give it a play for 10 minutes or so. It shouldn't be too tough to win a war against the AI, taking a whole island might be a challenge :P 
I'm sorry that the graphics are the most basic they can be and the controls are keyboard only. Not to mention the graphical bugs....

I can show you what I'm planning on getting the game to look like though :D A spin on the venerable, classic art style of the original Civ:


With any luck, version 0.1 of PocketCiv will look very much like this mock-up screenshot :)

Friday, 29 May 2015

Ludum Dare Retrospective

Ludum Dare 32 ended on the 17th of April. I did compete and coded up a storm over the weekend. It was a huge amount of fun and I am very glad to have taken part. I haven't been doing much programming recently; stress and anxiety making me dysfunctional. And it slipped my mind to post a link to my entry here.

A little god game called Nature's Assault:


More details are on the Ludum Dare submission page along with links to play it and see the source code.

One of my favourite parts of this event was getting to use Java to make a proper windowed program. It may be because I have spent nearly all my life using computers with Windows on them but the windowed interface with buttons and re-sizable windows will always feel nice to me :3

Happily I was able to implement proper gameplay along with the fun algorithms. It meant that people actually tried playing it. I got a lot of feedback on it and want to spend time improving it. I will now have time to do so now.

It is silly how delayed me posting this was, still its good to get something online so that I can get into good habits. Worst case scenario I'll be posting some old programming projects next Friday.

Sunday, 29 January 2012

Lets Make Civ 1!



This here is a very much in progress shot of my most current programming project. For those who don't recognize it this is a map viewer very much in the style of the 1991 DOS game Civilization. Its not much so far, which is understandable as it's my first real foray into Visual C++. I hope to ape the style of the classic turn based 4x game while adding enough of my own ideas to make it more than just a fan recreation. Ideas such as:

  • Larger mapsize with equivalently larger numbers of cities and countries.
  • More detailed geographical regions with labels for subcontinents and oceans as well as more detailed subregions of countries (counties and administrative districts).
  • Units movement in a "real time" frame say a year a second with more complex movement round the poles eg. crossing the Northpole from Canada to Russia.
  • Eventually a whole new 3D globe view with polygonal landmasses(okay this one is a real long term goal)
Next step will be to add some more terrain types, major cities and country borders. I'm focusing on replicating the actual world map first before I try to procedurally create my own.