ULSG V14 is underway! Slowly, but surely…!

Before I start with the ACTUAL topic of this post, I recently finished the trailer for Katu Toka, so I might as well post it here, for your viewing pleasure. Here you go:

Extreme professionalism, right there. πŸ˜‰ Anyhoo…

Yes, I’ve started working on ULSG V14, thanks to me running out of things to play. πŸ˜› I’d love to say I’ve done a ton of stuff and show you some prototype gameplay, but sadly, since this is XNA and I’m coding in a proper language, the “progress curve” is the exact opposite of when I’m using Multimedia Fusion. MMF projects can be prototyped retardedly quickly, but it gets insanely difficult to manage when the game gets too large. An XNA project is REALLY hard to get off the ground when you’re working from scratch, but it speeds up over time. πŸ™‚

The reason for this is because MMF literally GIVES you everything. If you don’t have something, you can probably download an extension for it and start using it right away. The XNA framework, on the other hand, does gives you a very nice set of classes, but the functionality is quite basic, really. You don’t get animation or game state management – you’ve got to do those yourself. You get something that can help with saving data, but the implementation is up to you. Same with input and sound. This might be a pain, but it’s a hell of a lot more flexible and powerful than MMF. Plus, when the basics of the JetSquirrel Engine are done, I won’t have to do them again, so any future projects will have a much faster setup. And as JetSquirrel evolves, games will get easier to make. πŸ™‚

So, aye, there isΒ technicalΒ progress, but nothing I can really show. I’m at almost the same visible point I was about 3 months ago:

The only differences are that there’s nowΒ flashy text that says “Press any button!”, “Press a button like you MEAN it!” or some other phrase along those lines, there are two new classes, one for input and one for saving data, and the audio class is fixed. So just imagine that’s there in that video, and we’re all on the same page. πŸ˜‰

The biggest problem I can see so far is the fact that XNA doesn’t support game controllers that aren’t Xbox controllers. That’s alright for me, and a lot of people I know (not like they’ll play the damn game or even test it), but some people don’t like them. I was going to forget it and just suggest people with other controllers download an Xbox controller emulator, but that’s such a massive pain for them – if I were them, I probably couldn’t be bothered to do it either. πŸ˜› So, I’ve gotta look for a solution to that. Hopefully I can find one. πŸ™‚

Other than that, it’s all going pretty smoothly! πŸ˜€ I’ll keep working on it, and I’ll update when I make some visible progress. πŸ˜‰

Advertisements

A little ULSG V14 mockup.

Well, I was originally going to make ULSG V14’s resolution 1000×625, but then decided that that’s a retarded resolution, probably no monitors support it, and my monitor doesn’t like trying to scale it to the nearest resolution it can support (it decided to change to 1024×768, which is a completely different aspect ratio and therefore looks like a poo :P). So, I’ve decided to go with good old reliable 1280×720. πŸ™‚ Plus, I’ve had a good experience using that resolution with XNA in the past – it scaled perfectly to a 1024×768 monitor when I was working on Fluidity, without messing up the aspect ratio. πŸ™‚

However, the res change means I’ve had to rework the ULSG V14 HUD. It’s a bit tedious having to do it again, but it’s really nice having 280 more pixels of width to work with. πŸ˜€ I did a little mockup of what I imagine a 4-player game of MultiQuadrillion Mode would look like:


(Just realised that the Psycho ChainΒ should really be x4 in this mockup. :P)

I think it looks quite nice. πŸ™‚ I used the extra width to extend “LV” to “Stage” for clarity (I’m calling the current “level” the “stage” now, to avoid confusion with Experience Level. :)), and merged the Power Weapon Display into the main HUD, too (Nukes are still in the game, they’re just a type of “Power Weapon”. This gives me more room to experiment with new weapons – for example, you’ll be able to replace Nukes with MediLinks, which let you heal other players. :)). There’s room for 5 Power Weapons now – you can increase the maximum amount with a Booster. πŸ˜€

Remote players are shown on the mini-status bars, where the Nuke Display used to be. They show important info, such as Callsign (A 5-character name to make it easier to identify your buddies (and also protects against me needing to make MASSIVELY long name boxes and taking up HUD space (for people with names like MongMaster Grumblkumbatung ;)))) and HI (Hull Integrity), and also show nice-to-know info, such as Power Weapon count and Level. πŸ™‚ If there are other local players, Player 1’s status is shown on the main HUD bar. As for Powerup bars, other players’ powerup bars are shown near their ship, whereas yours are still in the same place – top left, just under score. πŸ˜‰

The combo counter has a sleeker look, and there’s the new Psycho Chain counter – that increases when you own Failiens in quick succession, terminating after about 1/4 of a second without a kill (it can give LOTS of points out ;)).Β The combo milestone display is faded out because there’s a player underneath it, but that’s got a new look too. πŸ™‚

The Destructometer in the bottom right looks a bit nicer, and has a label, for clarity. Also, instead of popping out every minute with the game time, that’s always on display just over the Miss Counter, now.

The Miss Counter is a li’l bit different – the more enemies get past, the faster it increases. When it reaches 100%, it gets reset, you lose multipliers and your Awesometer is emptied. The Awesometer is different, too – it increases smoothly up to x100 instead ofΒ “jumping” between multiplier levels. πŸ™‚

The Choclit Bar is smaller, so it won’t get in the way of the Fruit Frenzy bonus text, which appears in the same place as always. πŸ™‚ It’ll also come up with a notification when your ULSSLU (Ultimate Lame Ship Special Laser Unit) is ready. πŸ™‚ The Fever Meter is brand new, and comes up with a timer when activated. πŸ™‚

The only thing missing (apart from the Fruit Frenzy bonus text I mentioned earlier) is the Drone Display. Kinda struggling with where to put those, since there’s going to be up to 4 of them this time. Might colour-code them and put them to the left of the Mini-HUDs, or, if you’re playing solo, where the Mini-HUDs are (since they won’t be there ;)). And of course, the HUD for the Challenges and Infinity Mode will need to be different. πŸ™‚

But ya, that’s pretty much all. πŸ™‚ Lemme know what’cha think! πŸ˜€

So, it’s official…

I’ve been using Lua for a while now at my placement, and it’s quite a nice language. I’ve learned from it, and I’ve even learned a few things from Corona, even though it’s a hateful SDK with a ton of problems. πŸ˜›

This weekend, though, I returned to C# for the first time since the end of second year. I was just wondering if I could make a start on the little engine I’ve been planning on making for a while… well, not really a full-blown engine, more like a code base to make it even easier to develop games with XNA. Classes to easily handle audio, graphics, networking, and so on. πŸ™‚ I call it “JetSquirrel”, a tribute to the team project I worked on in second year:

Haha, it wasn’t actually called Jet-Powered Squirrel – that was just a crazy idea I thought up for fun when we didn’t have a name for our game. πŸ˜‰ It was named “Fluidity” in the end, but I kept “Project Jet-Powered Squirrel” as the solution name, partly because it was funny, but mainly because I was afraid to change it just in case I messed everything up. πŸ˜›

But anyway, ya, this weekend, I returned to C# to make a start on the JetSquirrel Engine. And oh God, how I’ve missed C#, and XNA, and Visual Studio. πŸ˜€ It’s so nice working in a proper IDE again. It tells you what’s wrong as you write your code, if there’s a bug, you can use breakpoints to pause the game at any time and inspect properties, and when the game has an exception, it stops and tells you where it went wrong instead of just trying to continue without telling you much… oh yes. πŸ˜€ A bazillion times better than Corona will ever be. πŸ˜€

There’s a good reason for me deciding to work on the JetSquirrel Engine this weekend instead of heading to Multimedia Fusion 2 and continuing work on ULSG V13 or the ULSG V14 prototype. This is because… well… unfortunately, Multimedia Fusion and I have had a bit of a fall out. πŸ˜›

I worked on a prototype of V14 in MMF. The process was pretty quick – I got a lot done in very little time. I posted about it, actually.Β  πŸ™‚ However… when the time came to try and get a second player in, everything fell apart, and I suddenly realised that MMF is not good enough for my needs any more.

I’d been using these things called “Behaviours” in MMF – I assumed them to beΒ kinda like “local code”. I thought that each instance of an object would run this code for themselves, like how a class works. Sadly, that’s reallyΒ not how it worked. In fact, I fail to understand the point of these “behaviours” entirely – the code is just run as if it was written in the Event Editor… only it seems to run it X times, X being the number of objects of that type there are.

What happened was I had an object called “ULS”, the Ultimate Lame Ship. In the object, there was an alterable value (an integer or double(if you’re lucky and MMF isn’t an idiot about it), you’re only allowed 26 of them per object – another MMF limitation) to identify which player was controlling the ship, and a behaviour which moved the ship by looking at the player’s input device. One of these objects in the scene? No problem. Works perfectly. Add another instance of the same object… BOOM. Player 1’s ship moves at double the speed and seems to break all the rules I set about maximum speed. Player 2’s ship doesn’t move at all. If one of the ships is destroyed, the other ship moves normally again. Yes, I’m giving each ship a unique player number, and yes, the code says that each ship should only respond to its own input device. Yet still only one ship moves… incorrectly.

Because of the progress I was making, this REALLY irritated me – this stupid idiot limitation of MMF. You want to make a player ship that will work in any mode for any player? No, you can’t, MMF doesn’t allow it. You have to make separate objects for each player which contain basically the same code. And hence, if you find a bug in the movement, you have to fix it FOUR TIMES, once for each player. You’ve also got to create separate S.P.A.R.T.A Drones for each player… and separate Balls of Steel… and so on. Yeah, not my idea of fun. πŸ˜›

In C#, you can create 4 players from the exact same class, give each of them a player number, and then each player ship runs separately, looking at its OWN values. “Oh, my player number is 2, and there’s been no input from player 2’s controller. So I’m going to stay still.” Not “oh, I’m player 1 and there’s been input from player 1’s controller so I’m going to run my code and player 2’s movement code for no reason WHEEEEEEE” and “I’m player 2 and there’s no input to my controller but player 1’s dead so I should take over player 1’s controller ahahahah” NO NO NO SCREW YOU.

I NEED to go further, and I can’t with MMF2.Β I’ve reached the program’s limit, and the only way for me to get better and make ULSG better is to take XNA as my tool of choice. So… as the blog title says, it’s official. I’m no longer using MMF. It’s been great using it all these years, and I’d still massively recommend it if you’re interested in games development and want somewhere to start, but for me, it’s time to move on.

If I can bear to wade through the mess of checkmarks that is V13, I’ll finish it off. It won’t have multiplayer, and may have features I planned to put in missing. But all my other projects will be done in C# using XNA – ULSG V14, Dragon Storm, and anything else. And over time, JetSquirrel will get better, so things will be easier to make. πŸ™‚

This weekend, then, I managed to do this in XNA:


(Don’t mind the FPS counter (if you can see it ;)) – the FRAPS recording was making it go crazy for some reason. :P)

It’s not much to look at, but on the programming side, there’s a simple but fully functional game state manager called JetDirector, which is the most important component so far. You create class files for each of your game “scenes”, such as main menu, splash screen, etc., and JetDirector can switch between them. There’s also a SFX class called JetSound, and a graphics helper called JetGraphics. πŸ™‚ All works pretty well so far! πŸ˜€

I’ll have to try and find more time to work on it during the week, since I’m at my parents’ next weekend without a computer to use. :/ I’m aiming to get it to this stage as soon as possible:

That’s as far as I got with MMF, until the limitations reared their ugly heads. πŸ˜› Might take a little while, since I’m going with a higher resolution, so I’ll have to redo the HUD and the menu graphics.

But ya, it’s good to be back with XNA again. πŸ˜€ When I’ve gotten far enough with it, I’ll make the V14 blog. πŸ™‚

I think that’s all for now… apart from the Shoot ‘Em Up Kit being one of the worst game development tools I’ve ever used – on par with Torque and The 3D Game Maker. πŸ˜› Anyhoo, back to work tomorrow, and weΒ should have our first games on the Android Market and Apple App Store this week – woot! πŸ˜€

See ya later. πŸ™‚

My thoughts on time.

So, I was listening to Masterchef Synesthesia, when I thought of an illogical but logical way time could work in the future. The two have NO connection whatsoever, but this popped into my head nevertheless.

It’s written for the ULSG V14 Galactipedia, but I still have to share it here. πŸ˜€

Thyme
Thyme is a common herb, but even so, it is the most important organism in the universe, bar none. Formerly, this miracle herb was not shown much respect, but now, it is widely worshipped.

If you are a recently thawed cryo-freeze patient, you may not realise that thyme, the herb, actually controls the flow of what you call “time”. Hence, the correct name for “time” is actually “thyme”, but to avoid confusion, especially for beings from the past, the word “time” is still used to describe the flow of thyme.

You’re probably wondering how a small herb primarily used for cooking controls the flow of “time”. Well, thyme actually emits hypersonic waves, previously undiscovered by unenlightened scientists of the past. These waves cause all the particles within a very large area to become excited and fly through the previously misunderstood fourth dimension.

Areas of space may be outside the effective range of a sprig of thyme, and hence, can cause problems for space travel. To counteract this, all ships have thyme (the herb) in the engine bay. If a ship did not have this herb on board and entered a time blackspot, they would disappear from the present time until they entered the range of some hypersonic thyme waves in the past time. They would then be accelerated into the present time. This is known as “Thyme Lag”, which is the main thrower of the notorious “TwoParticlesOccupyOnePoint” Exception. The error handling code has improved in recent years, but it is still somewhat buggy.

Contrary to popular belief, eating a sprig of thyme will not pause time, make you live longer, or give you a time extension in Every Extend Extra. It does, however, give the snarfer immunity to Thyme Lag for about an hour.

Where the hell does this crap come from?! No, no, I’m not complaining, or anything. Just intrigued. Yes, intrigued by myself. πŸ˜€

Multimedia Fusion 2 is getting right on my tits.

I think I get why I’ve been developing ULSG so slowly recently. It’s not the heat or anything distracting like that. It’s motivation. But not in the “I’m making this game but no-one actually cares” sense, because I know that’s not true. MMF2 is the problem.

I’ve been doing some work on ULSG for the past few days, on both V13 and V14. V13’s not so bad, probably because it’s coded so inefficiently, and that’s the way MMF2 prefers you do it. However, V14 has been a nightmare.

It has severe problems sometimes which literally make no sense. For example, you can group objects into “Qualifiers”, and you can address all the objects in a qualifier at once. Sounds good. Works well in some situations. However, when it comes to choosing a specific object in the qualifier depending on an object’s alterable value, MMF2 poos itself.

Let’s take the main menu that I’m developing as an example.
Here you're supposed to see the concept for the V14 menu system.(That’s just a concept image, but it will look almost exactly the same in-game, just with a background and some other changes. :))

I have an object which keeps track of the current selection in the main menu, called “CurrentPositionInList”. It increases when you move down, and decreases when you move up. In each of the menu options is a value called “PositionInList” which basically says where the menu option is in the list. For example, the Single Player option has a value of 1. Multiplayer has a value of 2. And so on. The idea is that when “CurrentPositionInList” and any of the menu options’ “PositionInList” values are equal, that option should poke out to the right to show it’s the current selection. If not, it should go back to where it was. So if CurrentPositionInList is 1, Single Player should poke out, and all other options should slide back to where they were.

What’s the problem? Well, if you compare CurrentPositionInList with PositionInList, all options pop out for some reason. However, if you compare PositionInList with CurrentPositionInList, it works fine. SENSE. IT MAKES NONE. It’s like MMF2 is saying 1 is equal to 1 in one direction, but 1 is not equal to 1 in the other direction! WHAT THE…?!

That’s not the worst problem, oh no. You see, even if I ignore this stupidity and just compare PositionInList with CurrentPositionInList without questioning how it works in that order and not the other, then if you select any of the last four options in the menu, they slide out just fine, but WILL NOT SLIDE BACK TO THEIR OLD POSITIONS WHEN DESELECTED. And that makes EVEN LESS SENSE. They’re in the same group. The formulae I’ve written to make the options slide out and slide back are perfect, and I know, because I’ve used them elsewhere, and the first six options use the same formulae and work just fine. There’s NO PROBLEM AT ALL, but it doesn’t work. And this isn’t one of those bugs you can never seem to spot for hours on end, oh no, this is actually MMF2 being a dumbass.

How do I know that? Because I just wrote the exact same code for each individual object instead of using a qualifier, and it WORKS FINE. Great, but that’s 10 times less efficient. And there was nothing wrong with the old code! And the worst part – if something needs changing in these menu objects, I need to go through every object and change it, which is the exact reason why V13 is so tedious to code now! No matter how hard I try, I CAN’T write V14 perfectly efficiently, because of how dumb MMF2 is.

I love how easy MMF2 is to use. But I hate how frustrating it is to find out that one of these progress-halting bugs is actually caused by MMF2 itself, and not me. I’ve NEVER had this problem with C#. Which is why I’m seriously considering this to be my last game with MMF2. If so, Dragon Storm will be ported to C#.

But anyway, might as well update on progress. πŸ™‚ ULSG V13 is slow as usual, but it’s going fairly well. Just another four challenges to update, then some more testing, then I’ve gotta do the last of the Achievements. After that, Lame Survival Mode updates, and that’s everything. πŸ™‚ Then, I’ll need to decide whether to scrap multiplayer and leave it for V14, or fix it up a bit and release it with a disclaimer saying it’s experimental and therefore buggy and crap. πŸ˜›

ULSG V14, despite the retardation of MMF2, is actually going quite well. Keyboard and controller support are both there, but there’s a bit of a problem with controllers – if one is unplugged and then reconnected, ULSG won’t pick it up again until I repoll the controllers. And I can’t just constantly repoll them, because it drops the FPS to zero for about half a second every time I do it. Again, a bug which isn’t my fault; it’s the joystick extension’s fault this time. I’ll have to figure out some sort of workaround for that. Something that pauses the game when a controller’s been unplugged should work. SHOULD. Might not. This is MMF2, remember. πŸ˜›

The profile menu is much more advanced than V13’s…
Here you're supposed to see a picture of the V14 sign-in screen, but WordPress is shit, so you can't.V13 has a really lame system – it doesn’t actually scan for files, it just ASSUMES you delete and create all profiles in-game, which is just stupid. V14 scans for valid profiles properly, and puts them in a pretty list. It also figures out whether the profile is from V13 or V14. It can create new profiles, delete profiles and rescan without exploding. The only thing left is to allow players to convert their V13 profiles to V14 ones. You’ll lose almost everything, but in return, you can keep up to 14 levels of experience, and you’ll get bonus Creditz. Maybe even an exclusive ship or Booster! *audience OOOOHHHHHs*

The gameplay is very easy to implement right now – ULSG isn’t a particularly complicated game at its core. πŸ˜‰
ULSG V14 GameplayAlmost everything to do with the core gameplay works. Multipliers spawn and can be collected, but MultiMultipliers don’t spawn yet. You can even get Insane Stunt Bonuses. The new Awesometer works, and the new Miss Counter fills, but nothing happens when it reaches 100%. You can shoot and destroy Failiens, and scoring works just fine – you can’t crash or level up yet, though. πŸ˜‰

Those powerup bars are my pride and joy at the moment. πŸ˜€ They’re different colours now, which looks nice. They slide into the correct position automatically when created, and smoothly fade in and out when time’s running out. They also count down much more smoothly. And the best part – if a powerup bar runs out and leaves a gap, other powerup bars will slide up and close the ugly gap! πŸ˜€ I even had a try at animating the different powerup symbols, and did quite well for once – they look great! I’m especially proud of Quad Damage – two red particles spin around the lightning bolt. πŸ˜€ Sure, it’s not much, but I didn’t think I could make it look that nice. πŸ˜‰

So ya, that’s my update for now. I’ll keep pressing on with V13, and I’ll try not to go too mad with V14. πŸ™‚

LEAK!

Well… this isn’t technically a leak, since I’m the only person who’s making this game, and I want to show you the image. More of a “release”. But that doesn’t sound much like peeing, and something sounding like peeing makes people laff. πŸ˜›

Anyway, have an image:

First Look at V14!(First time I’ve used WordPress’ upload thing. It makes the border light up when you hover over it. Probably to help morons distinguish linked images from normal ones. :P)

That’s ULSG V14. πŸ˜€ The code is so much better already. The starfield is recycled code from V13, but with a few improvements and tweaks to work with the new resolution. The HUD works, and that uses brand new code. The movement engine is pretty much finished, but only responds to controller input. Enemies can spawn, but the spawn rates need changing. You can’t take damage or destroy enemies yet, unfortunately, since I had to stop because… well, you’ll never guess what happened. A bit of my controller’s wire, for some extraordinary reason, has slightly split, causing the controller to stop working when the wire is at a specific angle. In fact, it flickered on and off so much that it caused the Windows Driver Framework to panic and smack the Blue Screen of Death button. πŸ˜›

I really don’t understand how it suddenly broke like that. It was perfectly fine back when I was in Huddersfield. I don’t even get how it doesn’t work properly anymore – the wire isn’t exposed or anything. For some reason, I think it’s the heat in this stupid house; it must’ve softened the wire and caused it to snap. It’s ridiculous – it’s actually COLDER outside than it is in here. And if I open the window, every insect in the world flies in. And since I hate the heat, this is NOT helping my concentration. 😦

So, I’ve decided to get an Xbox 360 wireless reciever for my PC. Costs about as much as a wired controller, but I can connect my wireless controller to it and not worry about wires. πŸ˜€ Well, apart from the wire on the reciever. ‘S’not technically wireless, is it? πŸ˜›

Anyway, if I can manage to concentrate in this heat or if the heat goes away, I’ll continue work on V13. I just wanna get it out of the way now. Starting on V14 was a bad idea. πŸ˜›

I’m getting ahead of myself a bit…

This has always been a problem of mine. πŸ˜›

I’m really eager to get started on ULSG V14. Like, REALLY eager. Leaving behind that messy bunch of code that was in V13, starting V14 from scratch, no old code in the way, being able to build it MUCH more efficiently thanks to my improved programming skillz… I can’t wait. πŸ˜€

In fact, I can’t wait so much that I just went ahead and made a start, even though I’ve still got a bunch of things left to do to get V13 finished. πŸ˜› I’ve done this a few times before for other projects – Beat The Computer 3 was finished before Beat The Computer 2, which was (hilariously) never completed, and I started on Special Services Team Gold before completing the normal edition, both of which were dropped. πŸ˜› It’s not just games, either – I actually started writing parts for Dragon Tail 2 about 75% of the way through the original Dragon Tail, and I started work on Streets of Goong: Stage 8 before finishing Stage 7. It’s a bad habit. πŸ˜›

I’ve not spent TOO much time on it, really… well… okay, maybe I sort of have. πŸ˜› I took an old 3DS Max scene of the ULSG V14 logo that I started a while back, messed around with it, changed the “V14” part of the logo to look way cooler, and played with some animation. I also found a piece of music to use as the intro theme, and hence tried to make the animation sync with that. πŸ˜€

After a while, I managed to get God Rays working, added some motion blur, did a load of test renders, then when I was happy, I started rendering the entire animation, which basically made my computer unusable for several hours. 18 hours, to be exact. It also upped my CPU’s heat to around 82C for the entire duration, too. :S

However, GOOD NEWS! One, my overclock is very stable, two, I made some more progress on Patapon 3, three, the Carmageddon IP doesn’t belong to Gay Enix anymore and a new one’s being developed by Stainless (the ORIGINAL devs who I love, so this new one is going to be epic), and four, the animation looks BETTER than I thought it would. πŸ˜€ Oh, and five, Multimedia Fusion 2 now seems to be able to draw things on top of videos. πŸ˜€ It used to only be able to draw UNDERNEATH vids, last time I checked, at least, which wasn’t very useful. πŸ˜›

Here’s a teaser of my CPU’s 18 hour shift… πŸ˜‰

The flashing “press any button” notifications are selected randomly from a list. Just a little extra thought. πŸ˜‰ As you may have noticed, as well, the game detects happysticks… um, joysticks, at startup. So yes, ULSG V14 will have controller support. πŸ˜€ It sounds easy, but it’s currently my biggest hurdle.

Some people might have several controllers for their PC, and they might not all be the same. I have no idea how Windows identifies game controllers, and the MMF2 extension that I have can’t get the ID of a game controller. What’s more, if the player unplugs both of their controllers and plugs them in in a different order, ULSG will pick them up in a different order.

“Why do you care?” you ask? Well, picture this. Player A starts playing ULSG with an Xbox controller, which is the only controller plugged in, and hence is Controller 1. They configure it to their liking, and the mappings are saved in their profile. However, the next day, Player B wants to join in and play 2-player, but uses a different type of controller, which is plugged in first, and hence becomes Controller 1, whereas the Xbox controller becomes Controller 2. Player A will sign in with his profile, but since Controller 1 is now a completely different device, his mappings are going to be all screwed up.

What I WANT to happen is for the controller’s identifier to be stored in Player A’s profile. When the game starts up and Player A signs in, ULSG will look at every connected controller, find the one which has a matching identifier, and respond to input from that controller.

Hmm… but I CAN get a controller’s NAME. That could be stored as a group name in an INI file… and when a player configures a controller, their config is stored there… and multiple profiles could save different mappings under that group… I may have figured it out… MAYBE. πŸ˜›

Haha, wow. Back when I started V13, I didn’t even think HALF as deeply into ANY feature. Even the V14 profile select window I finished last night is already more stable and foolproof than V13’s. πŸ˜€ I have a load of things planned out for V14, as well – apart from the 4-player local multiplayer and Infinity Mode, there’ll be new ships, Drones and Special Modules (Special Modules will be known as Boosters in V14). You’ll be able to tweak the duration of powerups, and you won’t need to be an achievement whore to unlock everything, because things will cost Creditz instead. πŸ˜€

Anyway, yeah yeah, gotta get V13 finished FIRST. πŸ˜›