Old Usborne Programming Series available for free Posted on February 08, 2016 at 08:17
Usborne has released PDF scans of their old programming series for systems like the ZX Spectrum and C64. These are some of the first programming books I ever read, specifically the Machine Code for Beginners and "Introduction to Computer Programming", both of which I discovered at the library at age 8.
I actually had at that point access to a C64, and spent the time typing in the sample programs.
Somebody reminded me about it a couple of days ago, and I thought "Nah, I can't get to the city by Friday to join this".
Luckily for me, a series of events followed that statement, and now I am attending the jam at the Cape Town site.
This means I'll be "gone" for most of the weekend. Internet connections are provided on-site, but I'll be trying to not use it very much during jam-time; only exception I might make is to post updates at the tail-end of this blog and on Twitter.
Is anybody else gonna be joining in, whether on-site or from home?
Some Inspiration Posted on January 24, 2016 at 16:50
Not the kind of thing I usually post, but I was digging through my bookmarks and found this excellent comic framing a quote by Ira Glass.
I originally found it on a South African game development forum that I was thinking of posting my work on during the dead-period early last year.
I still consider myself a beginner, as I have yet to fulfill my ultimate goal: Doing what I love for a living. I believe I'm getting closer, becoming more disciplined... I'm definitely turning out fewer creations, but that's probably because I'm working, slowly, on "the big one", whatever that will be.
A Month of Unproductivity Posted on December 02, 2015 at 19:04
I see it's almost a month since my last blog, so here's a wall of text to cover that.
No screenshots to show for the reasons below.
I got practically nothing done in November
Nothing I can show off at any rate. A bit of animation work for my games, some more work on that low-res 3D engine I showed off recently, but nothing really 'new' on those fronts.
I have three reasons for that:
The Heat (Show)
My room is in a corner of the house with a window facing onto a semi-enclosed porch.
Airflow isn't a thing unless I create it artificially.
The crappy fan I owned until a few days ago didn't help in the slightest. Working, thinking or generally doing anything in temperatures going beyond 30°C (86°F) is a pain.
I've got a decent bit of air-cooling now in the form of a decent fan that sounds like a jet taking off on the lowest setting, and might just blow me away if I turn it up higher.
Makes a world of difference, and I've been able to get a lot more done this week.
The PC repairs have only slowed down in the past few days. Some days last week were miserable; three desktop PCs and two laptops was my 'record' for one of the days of the week, and they were all "urgent" jobs (Read: Not urgent in the slightest but we like throwing our weight as The Customer around).
My room is a relatively small 2.3Mx5.2M. Odd dimensions, but that's due to the nature of the house: It's over 100 years old, was built out of river clay originally and I'll wager there weren't any measurements involved.
Working on PCs basically involves me setting them up on the 'table' I have my laptop set up on. (It's not a table, it's a pile of stacked PC cases held together with metal rods).
I get it done, but I'll be so glad once we get into a shop again, so I can have a dedicated workbench.
On that note, we're planning on reopening in January, in a smaller storefront. I'll be rejoining as permanently-acting store manager again to get things rolling (And because I really need the extra cash).
In the most typical way things could go, the legal process behind making a claim against the idiot driver who destroyed our stuff is taking forever.
I get somewhat peeved at the fact that his lawyers are defending his actions at the time, trying to make his insobriety an argument for his "innocence", as well as claiming that he's in no position to pay the damages, even though there was insurance on the vehicle.
Oh, and his dear mother. She's entirely convinced that this is just a big conspiracy on our part to squeeze every penny out of her darling son.
Well, enough about that...
Fallout 4 - Maybe spoilers or something (Show)
Still don't own a copy of my own, though not through lack of trying (Online retailer here had it for an excellent retail price, but it's basically perpetually sold out. Will probably bag a copy for Christmas if they get more stock in... actually, just checked, they've removed the listing completely for the PC version... will have to save up for the Steam version, which costs more).
I 'finished' it... If you can call it finishing it. Basically immediately started a new game because I wasn't happy with the faction I chose.
Was a much harder choice than in New Vegas.
As for the game... I like it, controversial changes and all. On one hand the trimming of Skills and the ease of basically leveling everything up to max is a downer, but the experience of the game balanced that out for me.
The Wasteland was basically a constant stream of "Hey look! Stuff is happening here! Come look!" and I spent more time exploring than actually doing the main quest.
There'll no doubt be mods that add the more 'classic' Fallout mechanics to the game, as well as Project Nevada style mods that tune the difficulty and gameplay... and I'll be looking forward to them.
OK. So those three excuses aside, let me mention what I managed to get done regardless.
Game 1: Super Cycore
I'll admit I didn't get anything done on this in the past two weeks, though I was tweaking the animations a bit a few days ago.
Prior to that, I mostly spent a few hours solid busy working on the 'feel' of the platforming. Movement speed, momentum, jump height, gravity... that kind of thing.
Also fixed a 'zip' glitch that allowed you to travel from any corner up to the nearest platform (Allowed an out-of-bounds, so I removed it. Gave me an idea for an Upgrade Item though).
I also did a bit of work separating the CRT monitor effects and my menu code out into standalone packages so I can easily import and use them. Might upload them at some point if I feel they're usable.
Game 2: Unnamed 3D Game
All I really did between my last update on this was implement Gamepad support for some random reason, and a config file.
I got kinda sidetracked by the next thing on the list...
Other Thing 1: Handmade Hero
I started following Handmade Hero back when it began, but kinda forgot about it due to being in the middle of a whirlwind of work (Back when I was still full-time at the PC shop).
I can't remember if I posted here about it, but here's the trailer:
I decided to catch back up last week (Ended up starting from the first videos just for the fun of it) and have been having a blast.
They're a series of stream captures by Casey Muratori, where the goal is to create a complete game from scratch in C. No engines, framework libraries, etc. Everything is done pretty much the way a lot of companies had to do it in the late 90's and early 00's.
He's been in the industry (Most notably for Microsoft, RAD and Johnathan Blow at the moment) for a long while, and his videos provide an interesting window into the way some people think in the industry.
At the moment since it has been a bit quieter on the work front, I've been able to go through two or three videos a day, and have been picking up a load of useful information.
One of the things the streams made me do was question how I code, especially with my current reliance on strict OOP principles (Polymorphism and Multiple Inheritance in my 3D Engine, Factory Classes, Singletons, etc), whereas Casey emphasizes "No nonsense" code, and not trying to reuse code from the ground up - not all code is going to be reused, and making everything reusable is a waste of time in the long run.
It's a very interesting viewpoint, and has actually made working on my code a lot easier - less time spent trying to make a system with all of its moving parts and more spent just making what I need right now (And usually getting it done in a single session).
These videos also prompted me to learn GNU Emacs again. I don't think I can go back to vim easily now, since binding new commands and keys in Emacs is far easier than the interface vim provides.
Not to mention that some of the built-in C Mode shortcuts make navigating source code faster than usual. C-M-e and C-M-a jump from function definition to function definition (Normally paragraphs in text-mode, but adapts itself for C).
Automatic indent alignment is also very nice as a feature.
I've basically got it set up as an IDE, no plugins needed, that compiles either in GCC (Using a Makefile if one is found, or the build.sh script if that exists), or using MSVC if the files for that are present. The built-in compilation buffer works wonderfully with both in terms of error tracing (Allowing for a click or keypress to focus on the error line).
Anyways, loads of that kinda thing going on with me at the moment. May's well take December to study stuff as much as I can, since January is probably going to get very busy what with having to set up a new shop, advertise our reopening and everything.
Well that's about as far as I'm writing. I've been writing this in pieces since early this afternoon, and its now past 2AM, so I've forgotten half of what I intended to write in the first place (Besides the obvious things).
Go write some blogs you lazy <insert imaginative and potentially borderline-derogatory identifier here>.
New mini-project Posted on October 05, 2015 at 08:18
Last night I was bored.
And as it so happens, when I get bored I either end up playing a lot of games or trying to make one.
I settled on the latter for a change.
Since I want to take part in the Ludum Dare October Challenge, I thought that I need to make something both familiar to me mechanics-wise, easy to create art and music for and easy to pump out by the end of the month.
So, after digging through my collection of 500+ GMKs and old games, I settled on remaking Cycore, one of the first platformers I showed off on this site, and turning it into a gamier game.
The original was really simple, both in terms of gameplay and graphics. What I've decided to do is to make the gameplay a bit more complex, but keep the minimal graphics style for as long as I can.
That way, I'll have more time for game elements and will probably have something by month's end.
Progress #1 Sunday
Spent most of the day mucking around with shaders. Finally settled on this:
It's a radial distortion shader with scanlines, and a bit of single-pixel bloom to create somewhat of a "ghosting" effect like a lot of old CRT monitors and TVs used to have.
Progress #2 Monday
Now with the Copious Amounts of Free Time™ I have available to me, I made progress like crazy in exchange for a mere two hours of work.
It started with this:
And ended up with this:
I'm not going with the complete "Single solid color pixel characters", and am instead going for 3-color sprites without too much complexity, just to draw attention to interactive objects and such. The walls will probably remain simple.
Oh, and I somehow made a semi-complex Pause/Map menu:
My pause system is a bit more refined than I normally make it. Usually, I just skip adding a pause menu altogether if I can.
The few games I've made that do pause, I've used a global "paused" variable that only affects certain objects, and stops them from doing anything.
This was silly.
This system creates a pause object over everything, and this first of all lets the play-screen render for one more frame and captures it in a surface (using view_surface_id). Then it draws this, draws a darkened overlay, disabled everything and finally creates its objects (There's a map object, for instance).
The 'action' in the background stays paused perfectly, and doesn't require any extra logic in any of the game's objects: Pausing is entirely its own mechanism, and has full control of itself.
Well, let's see if I finish this. I'll add more progress if I have more progress.
EDIT: As an aside, I'm using Game Maker Studio Standard, mostly because I've gone into "No bullshit" mode and just want to make "a game" without giving the slightest damn about what I'm making it in, just what allows me to churn out my idea the fastest and with minimal fuss.
Making a game Posted on September 19, 2015 at 08:03
I'll do the usual thing and keep a running log here of what I'm doing.
So, I dub this competition "MAG64", because I can. And as per usual, I'm biting off more than I can chew. But yeah, copious free time and stuff.
I've been wanting to create a very specific kind of game for a while now, but never got around to starting it; other projects need finishing first/work/etc.
But this is a fun little comp, and I'm needing a break from my main project.
The game I'm trying to create is essentially Eye of the Beholder with freedom of movement.
I guess you could call it a 3D RPG.
In the original games you were stuck to four cardinal directions and could only move ahead one "tile" at a time. The interface was mostly point and click (and tedious). Click on the Eye icon, attempt to click on the pixel you're trying to examine, repeat.
That's my backup plan, essentially: Create that kind of game (Pixel hunting may or may not be included).
On the other hand, I want to make a 3D game again on my latest branch of Exile's Engine.
So I got started with that:
Plenty of HUD space. Player status is going on the right, as well as a simple representation of what you have equipped.
At the bottom I'm going to have a message box for game messages ("The bat slapped you in the face with a trout").
Interface wise, I want things to be simpler than the old "3D" dungeon crawlers: Less clicking, more exploring. So items are going to be proximity based instead of "Find pixel, select Hand icon, hope you hit pixel". A little overlay text near the cursor will allow you to search around your feet for items by pressing a key. This'll bring up the Inventory screen where you can click on items to take them.
Enemies will "Freeze" the game, switching to a very basic turn based battle system. Depending on time and how well I'm drawing, I may just cheat my way past having to draw enemies by switching to a screen for a turn based battle, make it mostly text based or something. I'll have to see.
Adding these features is easy, each taken separately.
Adding them to the engine, and making them interact?
Let's just say I'll probably be somewhat more insane by the end of this.
Challenges and Obstacles
> CodeBlocks and CodeLite can't handle the project file. Too much source, too much spaghetti... I dunno what, but they inevitably crash. I'm building with CodeLite, but can't test the project that way (I'm using the command line for that so I can see my debug output).
> 50% of the code is Midnight C++ and I have no idea what it does.
I'm avoiding most of the Mystery code, focusing on areas I do remember. Fortunately, most of the gameplay related stuff was rewritten to be cleaner and actually works. Things like Entities, spawning, map loading, etc.
So, will I finish this? Probably not. But I'm going to try make the best damned 15 minute Demo I can.
Bloody hell, I've run into the mother of all evil bugs in Exile that I'm not about to spend time tracking down. Changes made to parts of the project are cascading and causing certain types of textures not to load... which is pretty serious, and weird.
I'm going to take the resources I've made so far and go for Plan B.
Ignore me, I'm the world's biggest derp.
Let's just say that I hit CTRL-Z with a bit too much vigor sometimes, and certain folders I recently renamed from New Folder didn't like it.
Buried up to my neck in hastily made UI code. Exile had nearly nothing for UI, but I really need it now for the inventory screen, HUD, character sheet, menus, etc.
I can't even really implement items properly until I've got the "loot" menu up and running.
Fortunately, UI stuff is simple when you're in a rush. I'll clean up the code later. Along with the rest of the engine I said I'd clean up 3 years ago.
Work on the inventory so far:
Got a bunch of features I probably shouldn't have worked in.
Background is probably going to change to a solid gray/blue combo for ease of reading.
If all goes to plan, the character equip slots will go on the right (Showing what you currently have equipped), and the middle of the screen will be used to show stats and info for the currently selected item (As well as options to Drop/Equip/Use).
Biggest problem I'll face sooner or later is page overflow: Basically what happens if you pick up more items than fit on a "page" of the screen. I'm planning on just having Left/Right buttons at the bottom to page between items if necessary.
Rushing the rest of the inventory. It's a bit of a chicken/egg scenario. I need the Item representation to fill the inventory up, the inventory needs the items for testing, etc. Almost done with it though, and quite happy with the result; I think it'll be decently usable for future games if I clean it up a bit.
My plan for dealing with items on the floor, chests and such is to have a separate list of "Floor containers" that hold items. If you drop an item and are standing decently near to an existing container, it'll drop the item into that container.
If you aren't standing near an existing container, it'll create a new one.
Floor containers will render a billboard of the latest item dropped in the pile.
Items can now be dropped and "used" (Context based. Will equip armor pieces/weapons). Dropping them currently drops them into /dev/null, since I'm still in the middle of implementing item containers.
On an unrelated note
I've seen (And played a little of) the Megaman Legacy Collection. It's really solid. I'd say get it if the price comes down a few notches over the next Steam sale, especially if you've never played a Megaman game before :D
There is a little contention over the release though. The creators are saying they created an "Entirely new engine" and are fond of calling this release a "port".
Reddit users have discovered though that there exist the full ROM dumps of the original US/EU cartridges that, when iNES headers are added, can be played in an emulator.
Quite frankly, if the guys used emulation, they should just say they used it. But I do think that it's possible that they're just pulling sprite and palette data from the ROMs (Not that hard to do); there are several things (Like hooks for the challenge mode and such) that would be a pain to do if this was just emulation as opposed to a port or custom engine.
Personally, I'm probably not going to buy this unless the price comes down; I already have a couple of Famicom Megaman carts at home, and have played the heck out of the entire series to the point where I don't actually play the games that much any more.
I'll update this blog if there are any more freebies, or particularly good sales.
New Drawing Program Posted on August 25, 2015 at 07:37
Yesterday I started messing around with art again, so as to keep in practice.
Only problem is that GIMP keeps on crashing with my tablet; 2.8 doesn't like non-WACOM branded tablets, and 2.6 doesn't pick up the tablet at all.
Then I discovered Krita. And holy crap, I'm not using GIMP again.
Not only does it work perfectly with my tablet, but it supports the CMYK colorspace, can work with PSD images, has full vector support and is basically Photoshop, without the price tag.
It also, for me, beats SAI hands-down. Again, it's free, and its updated more frequently (SAI crashes often on my machine while in the middle of drawing).
I spent the morning sketching things, getting used to the interface and such. Made myself a new avatar that I'm pretty happy with.
Finishing Exile Posted on August 19, 2015 at 14:53
I started a somewhat annoying project yesterday on a whim.
A friend and I were going through some of my old games and he wanted to see me play Exile. It's been just over 3 years now since I made it, and I actually managed to dig up the original release, and found its source code.
After playing through the game (and actually sucking at it, since the developer immunity wore off in the 3 years since I've played it), I came to two conclusions:
- I need to finish this, just because.
- I need to clean up the damned code.
I technically already have a "cleaned" version of the code in the form of whatever-version-number I'm up to of the Exile Engine. But here's the problem: It works a lot better but isn't compatible with the original game's data.
I've tried several times before now to 'upgrade' the original game to the new engine, as well as write backwards-compatibility for the old data into the new engine, but I tend to burn out far too quickly (There are a ton of tools I have to make, converters, redesign maps and AI, etc).
So I decided yesterday to instead use the horrible code I already have, and just "complete" the game.
Part of that completion includes making it Linux compatible. Because there isn't any excuse for developers to not make their games Linux compatible.
Yesterday, while playing the game I started to come up with a list of small ideas that'll drastically improve the flow and feel of the game. If any of you remember Exile and have an idea, please add it :P
Here's what I have so far:
- Reduce all attack cooldowns drastically
- Increase movement speed to Doomier levels
- Fix the maps that have holes in them
- Make spells use charges or regents instead of mana pool.
- Replenish player health between levels (Past me was a douche.)
- Replace XP system with permanent upgrades for ATK, STR and SPD
- Make inventory easier to use (Items mapped to hotkeys, like old Build games)
- Re-enable Minimap feature. Yeah, there was one in the original game. It wasn't bound to anything.
- New map geometry (Basically, I want diagonals)
- New lighting (Based on Exile Engine 1.5.whatever, shader based)
- More items (Key types, healing, buffs, treasure, etc)
- More enemies
- Fix facepalming grunt enemies
- Crossbow (Will pull it from Exile "2"'s build)
- Better hands (Again, Exile 2)
- Conversion unit for TilEd (So I can replace crappy GridMap and its lag)
- Static items and wall decals (Already kinda in-code, just not used)
- More spells of varying levels.
- New Bosses
- New levels, better level design (And themed levels).
Sounds like a lot, but I already have a lot of the resources (Art, sound, music) I need for these.
Frankly, that's all the easy stuff. The big challenge is...
Porting and Cleaning the code
Here's where the annoyance factors into things.
To be blunt, Exile's code is a mess. All of the player code, including stuff that shouldn't be in the player code, is all in one file named "player.h".
There's problem two: Almost everything is header based, except for what isn't. What isn't? Hell if I know, my directory structure is crap.
Oh, and I have no dedicated logger or config handler. One third of my logging is done with printf, another with std::cout, and the last third with Win32's MessageBox.
To be fair to 2012 Mega, I was under a lot of pressure at the time of the competition (RPG4D 2012). I had just started a new job in retail (Water shop), was building my first 3D-ish game, not to mention my first full game in C++... and yeah.
Deadlines and work. I did a lot of weekend/midnight rushes, and as one friend of mine put it when I showed him a Gist of some of the files, it looks like it was written by somebody with Schizophrenia.
Anyway, on the cleanup side, I have to deal with a few big things:
- I don't use SFML 1.2, so I need to port it to SFML 2.x. Big problem here is that between 1.x and 2.x, they changed the casing from Something.LikeThis to Something.likeThis. Not to mention that a lot of static methods were removed and replaced with new methods (Notably, sf::Input was replaced with sf::Keyboard, sf::Mouse and sf::Joystick). Mostly naming changes, and changes to texture handling.
- OpenGL needs to be bumped up from fixed-pipeline to at least GL 2.1. I used to be pretty much an asshat about this (With apologies to sirxemic, to whom most of the asshattery was directed). Now I can't do without my shaders. Billboards become a million times easier.
Of course, this is a slightly lower priority modification; if it's gonna take too long, I'm going to cut it until later. I want to keep momentum up.
- Headers need to be re-arranged, split into implementation files, and renamed. I tend to follow Quake/Doom naming conventions with prefixes now (g_, ent_, u_, etc).
- Repetitive code needs to be put into utility functions, and small optimizations need to be made regarding things like index calculations (Basically, I should get a pointer to something once on creation if possible and leave it during the lifespan of the object, which I'm not doing at the moment. Calls to AssetManager::getImage() are killing things performance-wise).
- Remove all the crappy reliance on Win32's Message Boxes, as well as use of io.h, which isn't available on Linux. I use it once in the level loader to find the size of the map files.
Technically, map files should be read in streams instead of blocks; they identify for themselves exactly how many bytes of data there will be just by virtue of being a grid-based system.
The Linux side of things is relatively easy once I manage to get around all the other issues I've created for myself. The music engine, currently relying on GME, needs to be recompiled for Linux, as well as my "math" library. More like a psuedo-math library. No wonder my collisions were so bad.
I started a bit of work on it this morning while at the shop. GCC started to spit out a near endless stream of errors. And as if to laugh, there was a //TODO in the main file labeled "Clean everything up later". Thanks past-me.
Now I know they never invent a time machine, or I'd have already experienced a smack upside the head with a Clue-by-Four a few years ago for being snarky.
Oh, and if you've never played Exile =3
About Exile (Show)
Exile was intended to be a Hexen/Heretic inspired game. It started out as idle fiddling with a few blocks after I'd "given up" on RPG4D 2012:
Windows 10 Review Posted on July 30, 2015 at 11:45
I'll be writing a cumulative 'review' here, along with any problems and workarounds I encounter.
The download of the upgrade finished at about 11PM. I was tired already, and had work the next morning.
Nevertheless, I thought I'd start the installer and leave it running.
I remembered after the fact that I have a non-standard boot setup.
My PC has two physical drives. The first is my "Windows" drive, and contains the EFI boot partition for Windows.
The Second is my Debian drive, and contains a boot partition for GRUB.
This didn't cause any problems, just a minor annoyance. The way I have Grub set up is to boot into Linux if I don't enter a response (About 4 seconds to respond).
And the setup process restarted about 5 times in total. So I sat wrapped in a thick blanket with the cat on my lap, half asleep, watching the numbers crawl.
Took about two hours from start to finish.
Crashed in bed as soon as I could and decided to leave it for the next day.
Woke up late, so it was a mad dash to get ready for work. I quickly peeked at my 'new' installation and noticed that my primary display wasn't usable. Needed to install the drivers for my Nvidia 750.
I set that to download and ran to work (Ended up forgetting my lunch).
Got back and booted up.
And all told, everything is looking pretty good. The system is basically exactly how I had it before I started the upgrade. Icons in the same place across both screens, network mappings intact, applications intact, etc.
Even my slightly weird startup batches are working fine (One of them is a call to SUBST to map my C:\Dev\ folder to a drive letter on startup).
And the only thing I was a bit leery of, the "forced" updates, was easily solved by a trip to the Group Policy Editor. Details at bottom of blog.
So far, so good. Everything works that I've used so far. I have yet to play any games, but my normal "work" stuff is perfect.
Will update tomorrow.
EDIT: Oh, and Microsoft has finally changed the default CMD font:
And in the process of poking around CMD, I found that my entire MSYS style setup was still in place, as well as my SSH stuff.
Heck, even my context-menu entries are intact and working as intended.
EDIT2: All my games seem to be working so far. Also tried out Minecraft: Windows 10 Edition, which led me to poking around the XBox app, which further led me to discover that it supports XBox Live Avatars and even has an app for creating them.
Then there's the built in game recording tools. They're pretty decent, showing a measure of elapsed time on the top of the screen.
But I've already got both OBS and ShadowPlay to use.
Speaking of ShadowPlay, I had to turn it off and on again before it would work (Probably had to reinstall the service layer). Working flawlessly now.
Day One Point Five / Two
Woke up earlier than normal this morning and tested a few things out.
I could post a long checklist of what works and what doesn't, but I literally haven't encountered anything that doesn't work as normal.
The Command Line spontaneously returned to its old self again, and I have encountered one or two runtime errors while using the Windows Store and the new "Settings" app.
Hasn't happened since.
Performance wise, I did a comparison with The Witcher 3. I intentionally set it up on my Windows 8 installation so that it was running at a sub-par framerate (40FPS), and tried it with the same settings in Windows 10. Again, 40FPS. So no major improvements (DirectX12 doesn't affect everything just by existing, as many of my misguided customers seem to think).
Anyway, so far my experience is "normal". I've set up the Email app for a bit of use testing, and it's far better than that piece of crap in Windows 8.
The Notification/Action Center is a welcome addition, and I haven't properly used Task View yet (Though I did discover that additional desktops retain settings between reboots).
This weekend I plan on testing out my build environment and compiling the most complex project I have on-hand: Exile.
Workarounds and fixes
Change Windows Update Options (Show)
This only works for Windows 10 Pro. The option for other users is to disable the Windows Update service, but I wouldn't recommend it.
> Open Search and type in "gpedit", hit Enter.
> Traverse through Computer Configuration->Administrative Templates->Windows Components->Windows Update
> Double click on the entry labeled "Configure Automatic Updates"
> In the window that pops up, click on "Enable" and choose one of the familiar options from the dropdown below (I chose Notify before Download & Installation)