I realized a few days ago that with Windows 10 1709 released to the public, people might want to use the new Group Policy settings it introduces. So I went and found the official MSI package, made sure it still has the same directory structure as the previous packages, and updated Policy Plus to get the new MSI.
In other news, a user actually ran into a problem that I speculated about: installing the Local Group Policy Editor on Home editions with DISM results in a nonfunctional version of the official Group Policy editor that nevertheless confuses Policy Plus into thinking it's off the hook for applying the policies to the Registry (because secpol.msc then exists, even though it shouldn't on Home). I have not yet found a reliable way to check whether the current machine supports Group Policy, so I asked a question on Stack Overflow.
Various technical articles, IT-related tutorials, software information, and development journals
Thursday, November 9, 2017
PowerShell surprise: script current directory is not the process current directory
PowerShell supports paths expressed relatively to the current directory. You can do things like gc .\mydoc.txt to get the contents of mydoc.txt in the current directory. Sometimes, though, using relative paths will mysteriously fail with a file-not-found error. This happens when a .NET I/O function is called before the path is resolved by PowerShell. Changing the current directory in script (the one that displays at the prompt) doesn't necessarily affect the process's current directory, which you can get with [System.IO.Directory]::GetCurrentDirectory().
Most commonly, the problem is that a script calls a .NET Framework function directly, but some third-party modules may forget to do the resolution before trying to use the path. To set the process's current directory, you can use [System.IO.Directory]::SetCurrentDirectory.
Most commonly, the problem is that a script calls a .NET Framework function directly, but some third-party modules may forget to do the resolution before trying to use the path. To set the process's current directory, you can use [System.IO.Directory]::SetCurrentDirectory.
Monday, November 6, 2017
Keen Modding Live - Log in on the desktop
Today I implemented the Keen Modding login flow in Abiathar Live Studio. Just like on the site, the user can enter their name and password. If there is no Keen Modding account by that name linked to Keen Modding Live, the program offers to link them and then proceeds to log in. The API key received from logging in is stored in the Registry so that the user doesn't have to log in at every Abiathar run. There's also a Log Out menu item if the user wants to invalidate the API key (or all API keys for their account).
With login implemented, the next step is to allow the user to publish their levels to the site.
With login implemented, the next step is to allow the user to publish their levels to the site.
Sunday, November 5, 2017
Keen Modding Live - Better login experience
Today I rearranged the authentication part of Keen Modding Live a bit. Now the Keen Modding authenticator indicates whether an account needs to be linked or the logon just failed. The login page uses that information to only show the Link Accounts button if makes sense to even try. This adjusted API will make for a convenient login experience in Abiathar Live Studio as well, which is my next thing to implement.
Saturday, November 4, 2017
Keen Modding Live - Easily test levels
Today I continued working on Abiathar Live Studio, the Abiathar extension that will serve as the desktop client for Keen Modding Live development of Galaxy and Dreams levels. When preparing the development environment for a new level, it now also downloads and unpacks the full episode package, staging it in the testing directory. I have it do this eagerly (at level creation) so that all necessary data is stored locally in case users want to test their levels when they don't have Internet access.
Speaking of testing levels, it now automatically detects the DOSBox installation so that zero configuration is needed in most cases. The user can select a difficulty under the Test menu; DOSBox immediately launches into the level. Under the hood, Abiathar Live Studio saves the project, copies the level files to the testing zone, writes the DIFFICU.LTY file, and starts DOSBox.
The list of which files are level files is stored in the project file in case the Internet goes out and the episode metadata becomes unavailable. Extra configuration options are stored in the project file through Abiathar's configuration section registration API: when the level project is created, Abiathar Live Studio injects the new configuration section, then gives Abiathar a config template object when the project file is opened later.
Speaking of testing levels, it now automatically detects the DOSBox installation so that zero configuration is needed in most cases. The user can select a difficulty under the Test menu; DOSBox immediately launches into the level. Under the hood, Abiathar Live Studio saves the project, copies the level files to the testing zone, writes the DIFFICU.LTY file, and starts DOSBox.
The list of which files are level files is stored in the project file in case the Internet goes out and the episode metadata becomes unavailable. Extra configuration options are stored in the project file through Abiathar's configuration section registration API: when the level project is created, Abiathar Live Studio injects the new configuration section, then gives Abiathar a config template object when the project file is opened later.
Keen Modding Live - Downloadable development environments
A goal of the Keen Modding Live editor-integrated desktop client is to make it extremely easy to start building a level. The user should just have to pick an episode, choose where to save their files, and be ready to go. Today I finished implementing the New Level feature. After the user makes their choices, it fetches the development package corresponding to the selected episode, extracts the package to the folder containing the new ADEPS file, and opens the ADEPS.
Development packages are different from normal episode packages in that development ones contain only the bare minimum complement of files needed to make Abiathar work: the ADEPS and nearly empty map files (a template). The other files needed to play the game are in the episode package. So far, I've just made the Keen 4 development package as a proof of concept; doing the others will be easy.
Development packages are different from normal episode packages in that development ones contain only the bare minimum complement of files needed to make Abiathar work: the ADEPS and nearly empty map files (a template). The other files needed to play the game are in the episode package. So far, I've just made the Keen 4 development package as a proof of concept; doing the others will be easy.
Wednesday, November 1, 2017
Keen Modding Live - Keeping session info
Dropbox and a few other websites have a section that allows the user to view and invalidate sessions that are logged in to their account. They keep track of the user agent used to sign in so that the user can tell which browser the login is from. That kind of fine-grained session management might be a little overboard for Keen Modding Live (the "log out" API endpoint already provides a way to end all sessions), but keeping track of user agent is very easy, and might be useful for the occasional curious user.
The "log in" API endpoint now remembers the user agent and the logon method (linked Keen Modding account vs. the not-yet-implemented e-mail/password option).
The "log in" API endpoint now remembers the user agent and the logon method (linked Keen Modding account vs. the not-yet-implemented e-mail/password option).
Subscribe to:
Posts (Atom)