Code Monkey home page Code Monkey logo

doomlauncher's Introduction

Doom Launcher

Build status

f77deda96cfb4b90a201d09cb0014009

Doom Launcher is a Doom frontend for Windows PC. Instead of being a simple utility to launch your files, it serves as database for all your Doom engine games and mods. It can be compared to Quake Injector, a popular tool for Quake.

IWads Tile View Showcase

Large tile view for IWads tab. IWADs such as Freedoom and Heretic can be played with Doom Launcher.

Custom Files Tile View Showcase

Large tile view for a custom tag named "Playing". Doom Launcher can play custom mapsets such as Eviternity, Back to Saturn X, Plutonia 2, and more!

Features

  • Direct download and metadata update from /idgames (through API).

  • Add ZIP archives containing WAD/PK3/DEH/TXT files.

  • Automatic scraping of title, author, release date and description from included text files.

  • Automatically load files when selecting an IWAD or source port.

  • Add comments and ratings for files.

  • Import screenshots directly from a source port into the database.

  • Maintain demos and saved games (DSG/ZDS supported).

  • Set launch parameters and warp into any map in a file.

  • Select specific files within a ZIP archive.

  • Tag files with custom colored tags.

  • Screen filters to simulate CRT monitors.

  • Record play-statistics for each map completed in a play session. Supported source ports includes ZDoom, PrBoom+, CNDoom, Chocolate Doom, and Crispy Doom.

  • Automatic daily database backups (SQLite database files).

  • Create shortcuts to quickly launch files.

Many more features are documented in the Help file. Please read it if you have any concerns regarding certain features.

Doom Launcher is written by Hobomaster22 in C# and requires .NET 4.5. If you want to report bugs or suggest features, submit issues to the GitHub repository. To contribute to Doom Launcher, fork a copy of the repository and submit your changes via a pull request.

Building Doom Launcher

Download a copy of the repository onto your Windows system and open up the solution file on Visual Studio. Visual Studio 2017 or later is recommended. You may create new unit tests to help verify that your changes work before submitting them.

Doom Launcher currently supports Windows 7 and later. Mac and Linux are unsupported.

Development Tools

SQLite Browser. Great tool for viewing and editing the DoomLauncher.sqlite database: https://sqlitebrowser.org/

SonarLint. A great code analysis extension for Visual Studio. Highly recommended and used for most of Doom Launcher’s development: https://www.sonarlint.org/visualstudio/

doomlauncher's People

Contributors

aldamico avatar gmyx avatar guynamederick avatar nstlaurent avatar nullstalgia avatar robbinsrush avatar sergeirocks100 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

doomlauncher's Issues

Release ZIPs generated from DoomLauncher crash on boot. Missing DLL?

So I got the zip generated in ReleaseBuild, and it popups the DOOM Launcher Logo before closing with no errors being shown. Upon copying "SQLite.Interop.dll" from x86 in one of the build folders (x64 didn't fix it), it boots successfully.

Additionally, this error pops up after cleaning the solution and running DoomLauncher as an x86 release. Not sure if it's entirely connected to the GameFiles directory being missing because it doesn't mention it in the error.

code = Error (1), message = System.Data.SQLite.SQLiteException (0x800007BF): SQL logic error no such column: LaunchType at System.Data.SQLite.SQLite3.Prepare(SQLiteConnection cnn, String strSql, SQLiteStatement previous, UInt32 timeoutMS, String& strRemain) at System.Data.SQLite.SQLiteCommand.BuildNextCommand() at System.Data.SQLite.SQLiteCommand.GetStatement(Int32 index) at System.Data.SQLite.SQLiteDataReader.NextResult() at System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavior behave) at System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior behavior) at System.Data.SQLite.SQLiteCommand.ExecuteDbDataReader(CommandBehavior behavior) at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet) at DoomLauncher.DataAccess.ExecuteSelect(String sql) in C:\Users\Tony\Documents\DoomLauncher-master\DoomLauncher\Adapters\DataAccess.cs:line 31 at DoomLauncher.DbDataSourceAdapter.GetSourcePorts() in C:\Users\Tony\Documents\DoomLauncher-master\DoomLauncher\Adapters\DbDataSourceAdapter.cs:line 275 at DoomLauncher.SettingsForm.PopulateDefaultSettings(IDataSourceAdapter adapter) in C:\Users\Tony\Documents\DoomLauncher-master\DoomLauncher\Forms\SettingsForm.cs:line 164 at DoomLauncher.SettingsForm..ctor(IDataSourceAdapter adapter, AppConfiguration appConfig) in C:\Users\Tony\Documents\DoomLauncher-master\DoomLauncher\Forms\SettingsForm.cs:line 35 at DoomLauncher.MainForm.ShowSettings(Boolean allowCancel, DialogResult& result) in C:\Users\Tony\Documents\DoomLauncher-master\DoomLauncher\Forms\MainForm.cs:line 1001 at DoomLauncher.MainForm.VerifyGameFilesDirectory() in C:\Users\Tony\Documents\DoomLauncher-master\DoomLauncher\Forms\MainForm_Init.cs:line 57

P.S. I was able to reproduce the first issue on a second Windows 10 x64 machine.

File view doesn't disable buttons on init

Incredibly minor issue. The file view on the bottom does not check what buttons should be disabled on startup. This leaves the edit button enabled on the screenshot view when it should be disabled. Clicking it still does nothing.

Source port view form "Play" button breaks additional files

Could have sworn the null check fixed this...anyways the play button for the source port view form is known to be broke for a while, albeit if trying to play a source port without additional files no harm will occur. However, if one were to press the "play" button with a source port that has an additional file to it, all files aside of the selected IWAD will never launch. Basically, not only the additional file to the source port won't work, but every other local PWAD, PK3, DEH, etc. won't work even if you remove the source port additional file and try launching on a selected file(s).

spbroke
d2fail
Below I tried to launch Icarus: Alien Vanguard (it's not an additional file for the source port), only to just get the Doom 2 title screen. I tried removing the additional file from the source port edit form but no different.
icfail

Currently the workaround to this is deleting the affected source port and readding it.

Selecting individual files doesn't work

Clicking on 'Select Individual Files', selecting your files and then clicking 'OK' from the launch menu causes no files to be loaded. Vanilla Doom is loaded instead.

Fix randomly failing unit tests

These unit tests fail. The tests either consistently fail or succeed depending on the machine the unit tests are running.

See #45 for more info

  1. TestCnDoomStatFile in TestCnDoomStats
  2. TestModified in TestFileDetector

2.6.3.0 selecting multiple mods doesn't work

select a local mod, select Play, In the additional Files/Load order list select the Add button. Choose multiple additional files. Select OK. Now look at Show Launch Parameters - only the FIRST additional file chosen is added. IF I only choose one at a time it works correctly.

UPDATE: ok I figured out how to make this work. If you choose "Select Individual Files" I can select individually. My question is why do I have to do that? I get there may be more than one file in an archive -but if I explicitly select an archive - like lights.pk3 (or lights.zip), why do I also have to go in and select an individual file sometimes? Is DL trying to be smart about mod conflicts?

Sync Status not detecting files properly

When going into the sync status tab, every file is detected to be both not in the database and not found on the GameFiles directory. IWADs are also affected by this. This was found in the Release Candidate build.
sync

Automatically scan for TITLEPIC for preview

Pulling the TITLEPIC can be intensive so it should be done when the file is added. For existing files, an additional function will be needed to go through all the existing files in the library looking for the titlepic.

For ZDoom will need to check for MAPINFO/ZMAPINFO titlepage definition.

May want to add a checkbox in the options to enable/disable this option.

Description edit can be messy / doesn't match summary

The description edit can be a jumbled mess and should probably match the summary.

The code that cleans the description in the GameFileSummary control should be made common and used for setting the description in the edit.

The scroll bar is also missing even when scrolling is required.

details

User permission issue when killing Doom Launcher

If Doom Launcher finds the exe is already running and another instance is launched it attempts to kill the instance that is already running. If the application is denied access it will crash on an unexpected exception.

Additional file handling implementation is complicated and should be simplified

The additional file handling should be simplified in the next version to cut down on the number of bugs, specifically when handling source port/iwad additional files.

The best solution may be to add two new fields to the GameFiles table:
SettingsFilesSourcePort
SettingsFilesIWAD

This will be in addition to the SettingsFiles field. The SettingsFiles field will still have all the additional files to keep the order, and the SettingsFilesSourcePort and SettingsFilesIWAD will have only the files tied to the selected source port / IWAD respectively.

Sorting columns doesn't work on idgames tab

For some reason the sort function doesn't work on the idgames tab. I've previously looked into this thinking it would be a simple fix, but I couldn't find any reason for it not to be working.

Feature Request: -config and -savedir support (and maybe templates)

I use Doom Launcher to have a lot of different copies of the same engine in order to keep my config files separate (as they can interfere easily). If it was possible to, in the source ports settings, have a folder of many .ini's that could be chosen from when launching something. For example:

cconfig

And maybe something similar with save directories? :)

Edit: Sorry, forgot to mention templates. It could be something that will automagically select the previously-defined engine, config, savedir, and maybe additional pwads. Similar to ZDE's quick profiles.

Minor

Manage Tags, select Add - focus should automatically be on the Name field

save games features

you often save many times in a session - day isn't granular enough.

Can you also add the user defined name of the savegame?

Finally how about allowing you to select a savegame to load when you select Play for a wad?

If savegames have to be in the sourceport main directory, how about an option to archive all savegames upon launch/play that are not the selected wad so you can see just the savegames relevant to the current mod/wad?

SyncLibraryHandler has incorrect error handling

The Execute function of SyncLibraryHandler catches the generic exception to display the improper archive error. It should catch the more specific InvalidDataException for this error. The generic exception should be for unexpected errors and should be accessible for the MainForm and use the exception for Util.DisplayUnexepctedException

Automatically create release package

Would be nice to have something that automatically generates the DoomLauncher_x.x.x.zip package.

The easiest solution may be to add a project called DoomLauncherRelease that runs as a post build event that copies the necessary varies and puts them in the correctly name zip.

[Feature Request] Handling of game files

  1. Have the location of game files be all configurable
  2. Don't require a mod's folder to be an archive (is this possible?)
  3. Don't automatically archive IWADs

I think this would make file management a lot easier. As it stands right now, all files you add to your library are copied over to the DoomLauncher folder and archived. This makes organizing everything very difficult because you can't have your mods separated into categories, for example PWADs/Gameplay/BrutalDoom or IWADs/DOOM2.WAD, and you also end up with all the mod files being archived, which also can be annoying.

Sort on untagged

is there any way to see files that are untagged? Sometimes you forget and a large list means there is kruft I may never get to... Maybe a fixed "untagged" tab (or an option to show an untagged tab)

Suggestion: Use AppVeyor for CI

!NOTE! to future people looking in: The AppVeyor links may be outdated due to me redoing the project to test things.

I tested a fork of this project on my profile and without dealing with any .yml stuff, was able to build the project and run all Unit Tests. Sadly, to get past the current failing errors I had to disable testing, but we're still able to get automatically generated release .zips of the project with all tests ran with every commit.

If you want to take a peak on how it looks on my setup:

With the failed build:

https://ci.appveyor.com/project/robbinsrush/doomlauncher/build/1.0.1

With the tests disabled and set to upload the release .zip as an artifact to the site:

https://ci.appveyor.com/project/robbinsrush/doomlauncher/build/1.0.3

Edit: Or you can just release it straight to GitHub releases

image

Allow updating a mod/map

I have edited the description/tags/etc for a wad. An update comes along - I have to do it all again or cut/paste each field? Is there a way to do this by just updating the ZIP an existing record uses?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.