csinkers / ualbion Goto Github PK
View Code? Open in Web Editor NEWA remake of the 1995 RPG Albion (requires data from an install of the original game)
License: MIT License
A remake of the 1995 RPG Albion (requires data from an install of the original game)
License: MIT License
The Raspberry Pi platform now supports vulkan as well as OpenGL, and can run the .NET 5 runtime, it would be good if we could get UAlbion to run on it (this would also provide a good low-performance test target for optimisation / benchmarking).
PS C:\Users\Chome\Downloads\My Games\ualbion-master> .\run.bat
C:\Users\Chome\Downloads\My Games\ualbion-master\build\UAlbion.Api\obj\Debug\netstandard2.0.NETStandard,Version=v2.0.AssemblyAttributes.cs(4,12): error CS0579: Duplicate 'global::System.Runtime.Versioning.TargetFrameworkAttribute' attribute [C:\Users\Chome\Downloads\My Games\ualbion-master\src\Api\UAlbion.Api.csproj]
C:\Users\Chome\Downloads\My Games\ualbion-master\build\UAlbion.Api\obj\Debug\netstandard2.0\UAlbion.Api.AssemblyInfo.cs(13,12): error CS0579: Duplicate 'System.Reflection.AssemblyCompanyAttribute' attribute [C:\Users\Chome\Downloads\My Games\ualbion-master\src\Api\UAlbion.Api.csproj]
C:\Users\Chome\Downloads\My Games\ualbion-master\build\UAlbion.Api\obj\Debug\netstandard2.0\UAlbion.Api.AssemblyInfo.cs(14,12): error CS0579: Duplicate 'System.Reflection.AssemblyConfigurationAttribute' attribute [C:\Users\Chome\Downloads\My Games\ualbion-master\src\Api\UAlbion.Api.csproj]
C:\Users\Chome\Downloads\My Games\ualbion-master\build\UAlbion.Api\obj\Debug\netstandard2.0\UAlbion.Api.AssemblyInfo.cs(15,12): error CS0579: Duplicate 'System.Reflection.AssemblyFileVersionAttribute' attribute [C:\Users\Chome\Downloads\My Games\ualbion-master\src\Api\UAlbion.Api.csproj]
C:\Users\Chome\Downloads\My Games\ualbion-master\build\UAlbion.Api\obj\Debug\netstandard2.0\UAlbion.Api.AssemblyInfo.cs(16,12): error CS0579: Duplicate 'System.Reflection.AssemblyInformationalVersionAttribute' attribute [C:\Users\Chome\Downloads\My Games\ualbion-master\src\Api\UAlbion.Api.csproj]
C:\Users\Chome\Downloads\My Games\ualbion-master\build\UAlbion.Api\obj\Debug\netstandard2.0\UAlbion.Api.AssemblyInfo.cs(17,12): error CS0579: Duplicate 'System.Reflection.AssemblyProductAttribute' attribute [C:\Users\Chome\Downloads\My Games\ualbion-master\src\Api\UAlbion.Api.csproj]
C:\Users\Chome\Downloads\My Games\ualbion-master\build\UAlbion.Api\obj\Debug\netstandard2.0\UAlbion.Api.AssemblyInfo.cs(18,12): error CS0579: Duplicate 'System.Reflection.AssemblyTitleAttribute' attribute [C:\Users\Chome\Downloads\My Games\ualbion-master\src\Api\UAlbion.Api.csproj]
C:\Users\Chome\Downloads\My Games\ualbion-master\build\UAlbion.Api\obj\Debug\netstandard2.0\UAlbion.Api.AssemblyInfo.cs(19,12): error CS0579: Duplicate 'System.Reflection.AssemblyVersionAttribute' attribute [C:\Users\Chome\Downloads\My Games\ualbion-master\src\Api\UAlbion.Api.csproj]
Some UI headers, e.g. on the inventory screen, are shown with an underline in the original. This should be replicated.
When a character is carrying more than their maximum carry weight, it should no longer be possible for the party to move, with an appropriate message shown.
It should be possible to export existing maps to the native formats of the Tiled map editor, as well as import new or modified maps created with Tiled back into the binary formats used by Albion.
I think people will be more interested in testing this neat re-implementation and maybe collaborate with some code if you show the current state of this port in the README. Even early screenshots are fine!
A 3D model renderer should be added so mods can provide 3D models as a replacement for the current 2D billboard-sprite props (plants, rocks, chests, pillars etc). Simple keyframe/morphing animation support is probably good enough to start, but skeletal animation at some point would be nice.
When opening Iskai doors etc, incorrect tiles are placed on the map. This is probably due to some off-by-one error in tile indexes above/below 100.
It looks like there is an Albion demo that can be freely (and probably legally) downloaded to test UAlbion. Is there any plans to support it?
This issue is a catch-all for various UI/UX considerations I've noticed that you may, or may not, wish to address. Close at will, and if you'd prefer me to break any (or all) points out into separate issues for easier tracking and resolution, let me know.
When you are in a dialog window, the speech window behind new dialog options continues to render its window-dressing, and this is mildly disruptive at the bottom of the dialog options window. See picture:
In same picture, I'd tentatively move the monster alert icon down just slightly so character portraits do not impinge, though that depends on the placement of other on-screen icons, so the fix is not simple and obvious. Also, the drop shadows around the portraits look overly well-defined and I might soften them a touch.
Turn the lower-right box into an actual persistent log complete with scroll bar and, in-combat, round separator titles (as well as markers for combat start and combat end). I would recommend new entries at top and pushed down, to better align with the original UI. Also, if it turns into a log it should probably be left-justified, though with a generous margin
In the character screen, various readouts on hover to be placed in said box, whether it becomes a log or not. A couple of examples: if I hover over a stat, give a qualitative description of its function, like telling me dexterity affects dodge chance against enemies and traps. If I hover over a temporary condition, such as insanity, give me a qualitative description of its function. These can probably just be pulled directly from the manual.
Again in the character screen, name the equipment slots on mouse hover, so I can know if something is a 'neck' slot or a 'wield' slot or whatever without referencing the manual.
WASD for walking, as well as the arrow keys. I know this is a feature request rather than an 'issue'.
7. Remove mouse limiting to windows. It's really irritating that I can't move my mouse around the entire screen when I have certain windows open.
It should be possible to show and interact with the inventory screen normally when on a 3D level.
Currently the right-click menu is only shown on 2D levels. Right clicking doors, buttons, NPCs etc should also show a context menu in 3D.
Currently a trivial full-bright lighting model is used for shaders on 3D levels, this should be changed to a more sophisticated method.
Currently 3D levels just use point samplers, experiments with various mip-mapping, anisotropy and mag filter settings should be made to find the optimal texture sampling method that looks good but maintains the feel of the original game.
2D levels currently handle event triggers when the player enters tile zones, but 3D levels do not.
The dialog for assigning each characters combat position needs to be added to match that seen in the original.
Some 3D map tiles should be rendered with translucency, e.g. windows etc.
In addition to the MIDI music, Albion could also play ambient tracks, defined as MIDI data but with the instruments provided by short wav files to provide environmental sounds (birdsong, machinery on the Toronto etc). These can currently be played back, but the timing is incorrect - this functionality needs to be polished and then enabled by default.
The original games control method requires continuous control inputs to move the party, e.g. click and hold mouse button or hold arrow keys. Alternative control methods where the player can click a desired point and the party automatically moves there could improve accessibility for some players.
Currently no collision checks are performed on 3D levels, whether for level geometry or other entities (NPCs, monsters, props etc). Collision should behave at least reasonably similarly to the original game.
As UAlbion is based on .NET 5 and Veldrid, it should theoretically also be able to run on macOS using Metal. As I lack any appropriate hardware, I'm not currently able to test to what extent this actually works, or fix any issues with it. It would be good if someone more familiar with the platform could look into this.
In the inventory screen, various items have 'activate' etc options that should invoke special behaviours defined in event set #1.
For some reason the balance of positional audio sources shifts when opening the inventory screen. These sounds should either remain consistent, or be silenced when opening the inventory.
Currently on 3D levels the skybox rotation occurs at a fairly arbitrary rate and doesn't match up with the level geometry, leading to a sometimes-nauseating effect. This should be made more natural looking.
When activating items like potions, scrolls, the ship's clock etc, the item should be consumed if the activation was successful.
In some locations, holding two direction keys can result in the party shuffling back and forth across an obstruction, e.g. holding up and left near the lower sleeping quarters staircase of the Hunter's Guild.
When rendering the extruded tilemap for a level, only the visible tiles should be rendered by the GPU to reduce wasted effort, overdraw etc. Additionally, tile instances should be sorted in near-to-far order for all fully opaque tiles, then far-to-near order for translucent tiles (but after opaque sprites have been drawn).
The only Albion re-implementation I could find is FreeAlbion. I wonder if that could help to speed-up the development of this one.
It would be nice if autocomplete suggestions were shown in the debug console to improve discoverability of the available events and parameter/entity types.
It should be possible to export 3D maps to formats used by the Tiled map editor via an isometric representation. New or modified maps should also be able to be imported from these formats back into the binary formats used by Albion.
Some buttons, e.g. the page 1,2,3 buttons in the inventory, use a two pixel thick border. UAlbion should replicate this behaviour.
$ msbuild ualbion.sln
Microsoft (R) Build Engine version 16.0.0.0 for Mono
Copyright (C) Microsoft Corporation. All rights reserved.
Build started 01/30/2020 17:19:02.
Project "/home/g/Games/ualbion/ualbion.sln" on node 1 (default targets).
ValidateSolutionConfiguration:
Building solution configuration "Debug|Any CPU".
/home/g/Games/ualbion/ualbion.sln.metaproj : error MSB3202: The project file "/home/g/Games/ualbion/UAlbion/UAlbion.csproj" was not found. [/home/g/Games/ualbion/ualbion.sln]
/home/g/Games/ualbion/ualbion.sln.metaproj : error MSB3202: The project file "/home/g/Games/ualbion/veldrid/src/Veldrid/Veldrid.csproj" was not found. [/home/g/Games/ualbion/ualbion.sln]
/home/g/Games/ualbion/ualbion.sln.metaproj : error MSB3202: The project file "/home/g/Games/ualbion/veldrid/src/Veldrid.ImageSharp/Veldrid.ImageSharp.csproj" was not found. [/home/g/Games/ualbion/ualbion.sln]
/home/g/Games/ualbion/ualbion.sln.metaproj : error MSB3202: The project file "/home/g/Games/ualbion/veldrid/src/Veldrid.ImGui/Veldrid.ImGui.csproj" was not found. [/home/g/Games/ualbion/ualbion.sln]
/home/g/Games/ualbion/ualbion.sln.metaproj : error MSB3202: The project file "/home/g/Games/ualbion/veldrid/src/Veldrid.OpenGLBindings/Veldrid.OpenGLBindings.csproj" was not found. [/home/g/Games/ualbion/ualbion.sln]
/home/g/Games/ualbion/ualbion.sln.metaproj : error MSB3202: The project file "/home/g/Games/ualbion/veldrid/src/Veldrid.RenderDoc/Veldrid.RenderDoc.csproj" was not found. [/home/g/Games/ualbion/ualbion.sln]
/home/g/Games/ualbion/ualbion.sln.metaproj : error MSB3202: The project file "/home/g/Games/ualbion/veldrid/src/Veldrid.SDL2/Veldrid.SDL2.csproj" was not found. [/home/g/Games/ualbion/ualbion.sln]
/home/g/Games/ualbion/ualbion.sln.metaproj : error MSB3202: The project file "/home/g/Games/ualbion/veldrid/src/Veldrid.StartupUtilities/Veldrid.StartupUtilities.csproj" was not found. [/home/g/Games/ualbion/ualbion.sln]
/home/g/Games/ualbion/ualbion.sln.metaproj : error MSB3202: The project file "/home/g/Games/ualbion/veldrid/src/Veldrid.Utilities/Veldrid.Utilities.csproj" was not found. [/home/g/Games/ualbion/ualbion.sln]
/home/g/Games/ualbion/ualbion.sln.metaproj : error MSB3202: The project file "/home/g/Games/ualbion/veldrid-spirv/src/Veldrid.SPIRV/Veldrid.SPIRV.csproj" was not found. [/home/g/Games/ualbion/ualbion.sln]
Project "/home/g/Games/ualbion/ualbion.sln" (1) is building "/home/g/Games/ualbion/Tools/XmiToMidi/XmiToMidi.vcxproj" (2) on node 1 (default targets).
/home/g/Games/ualbion/Tools/XmiToMidi/XmiToMidi.vcxproj(32,3): error MSB4019: The imported project "/Microsoft.Cpp.Default.props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
Done Building Project "/home/g/Games/ualbion/Tools/XmiToMidi/XmiToMidi.vcxproj" (default targets) -- FAILED.
Project "/home/g/Games/ualbion/ualbion.sln" (1) is building "/home/g/Games/ualbion/Game/UAlbion.Game.csproj" (3) on node 1 (default targets).
/usr/lib/mono/msbuild/15.0/bin/Microsoft.CSharp.CurrentVersion.targets(331,5): error MSB4019: The imported project "/usr/lib/mono/msbuild/15.0/bin/Roslyn/Microsoft.CSharp.Core.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk. [/home/g/Games/ualbion/Game/UAlbion.Game.csproj]
Done Building Project "/home/g/Games/ualbion/Game/UAlbion.Game.csproj" (default targets) -- FAILED.
Project "/home/g/Games/ualbion/ualbion.sln" (1) is building "/home/g/Games/ualbion/Formats/UAlbion.Formats.csproj" (4) on node 1 (default targets).
/usr/lib/mono/msbuild/15.0/bin/Microsoft.CSharp.CurrentVersion.targets(331,5): error MSB4019: The imported project "/usr/lib/mono/msbuild/15.0/bin/Roslyn/Microsoft.CSharp.Core.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk. [/home/g/Games/ualbion/Formats/UAlbion.Formats.csproj]
Done Building Project "/home/g/Games/ualbion/Formats/UAlbion.Formats.csproj" (default targets) -- FAILED.
/usr/lib/mono/msbuild/15.0/bin/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.FSharp.targets(29,3): warning MSB4011: "/usr/lib/mono/xbuild/Microsoft/VisualStudio/v15.0/FSharp/Microsoft.FSharp.NetSdk.targets" cannot be imported again. It was already imported at "/usr/lib/mono/msbuild/15.0/bin/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.FSharpTargetsShim.targets (63,3)". This is most likely a build authoring error. This subsequent import will be ignored. [/home/g/Games/ualbion/Tools/Exporter/UAlbion.Tools.Exporter.fsproj]
Project "/home/g/Games/ualbion/ualbion.sln" (1) is building "/home/g/Games/ualbion/Tools/Exporter/UAlbion.Tools.Exporter.fsproj" (5) on node 1 (default targets).
/usr/lib/mono/msbuild/15.0/bin/Sdks/Microsoft.NET.Sdk/targets/Microsoft.PackageDependencyResolution.targets(198,5): error : Assets file '/home/g/Games/ualbion/Tools/Exporter/obj/project.assets.json' not found. Run a NuGet package restore to generate this file. [/home/g/Games/ualbion/Tools/Exporter/UAlbion.Tools.Exporter.fsproj]
Done Building Project "/home/g/Games/ualbion/Tools/Exporter/UAlbion.Tools.Exporter.fsproj" (default targets) -- FAILED.
Project "/home/g/Games/ualbion/ualbion.sln" (1) is building "/home/g/Games/ualbion/Core/UAlbion.Core.csproj" (6) on node 1 (default targets).
/usr/lib/mono/msbuild/15.0/bin/Microsoft.CSharp.CurrentVersion.targets(331,5): error MSB4019: The imported project "/usr/lib/mono/msbuild/15.0/bin/Roslyn/Microsoft.CSharp.Core.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk. [/home/g/Games/ualbion/Core/UAlbion.Core.csproj]
Done Building Project "/home/g/Games/ualbion/Core/UAlbion.Core.csproj" (default targets) -- FAILED.
Project "/home/g/Games/ualbion/ualbion.sln" (1) is building "/home/g/Games/ualbion/Tools/GenerateEnums/GenerateEnums.csproj" (7) on node 1 (default targets).
/usr/lib/mono/msbuild/15.0/bin/Microsoft.CSharp.CurrentVersion.targets(331,5): error MSB4019: The imported project "/usr/lib/mono/msbuild/15.0/bin/Roslyn/Microsoft.CSharp.Core.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk. [/home/g/Games/ualbion/Tools/GenerateEnums/GenerateEnums.csproj]
Done Building Project "/home/g/Games/ualbion/Tools/GenerateEnums/GenerateEnums.csproj" (default targets) -- FAILED.
Project "/home/g/Games/ualbion/ualbion.sln" (1) is building "/home/g/Games/ualbion/Api/UAlbion.Api.csproj" (8) on node 1 (default targets).
/usr/lib/mono/msbuild/15.0/bin/Microsoft.CSharp.CurrentVersion.targets(331,5): error MSB4019: The imported project "/usr/lib/mono/msbuild/15.0/bin/Roslyn/Microsoft.CSharp.Core.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk. [/home/g/Games/ualbion/Api/UAlbion.Api.csproj]
Done Building Project "/home/g/Games/ualbion/Api/UAlbion.Api.csproj" (default targets) -- FAILED.
Done Building Project "/home/g/Games/ualbion/ualbion.sln" (default targets) -- FAILED.
Build FAILED.
/usr/lib/mono/msbuild/15.0/bin/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.FSharp.targets(29,3): warning MSB4011: "/usr/lib/mono/xbuild/Microsoft/VisualStudio/v15.0/FSharp/Microsoft.FSharp.NetSdk.targets" cannot be imported again. It was already imported at "/usr/lib/mono/msbuild/15.0/bin/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.FSharpTargetsShim.targets (63,3)". This is most likely a build authoring error. This subsequent import will be ignored. [/home/g/Games/ualbion/Tools/Exporter/UAlbion.Tools.Exporter.fsproj]
"/home/g/Games/ualbion/ualbion.sln" (default target) (1) ->
(Build target) ->
/home/g/Games/ualbion/ualbion.sln.metaproj : error MSB3202: The project file "/home/g/Games/ualbion/UAlbion/UAlbion.csproj" was not found. [/home/g/Games/ualbion/ualbion.sln]
/home/g/Games/ualbion/ualbion.sln.metaproj : error MSB3202: The project file "/home/g/Games/ualbion/veldrid/src/Veldrid/Veldrid.csproj" was not found. [/home/g/Games/ualbion/ualbion.sln]
/home/g/Games/ualbion/ualbion.sln.metaproj : error MSB3202: The project file "/home/g/Games/ualbion/veldrid/src/Veldrid.ImageSharp/Veldrid.ImageSharp.csproj" was not found. [/home/g/Games/ualbion/ualbion.sln]
/home/g/Games/ualbion/ualbion.sln.metaproj : error MSB3202: The project file "/home/g/Games/ualbion/veldrid/src/Veldrid.ImGui/Veldrid.ImGui.csproj" was not found. [/home/g/Games/ualbion/ualbion.sln]
/home/g/Games/ualbion/ualbion.sln.metaproj : error MSB3202: The project file "/home/g/Games/ualbion/veldrid/src/Veldrid.OpenGLBindings/Veldrid.OpenGLBindings.csproj" was not found. [/home/g/Games/ualbion/ualbion.sln]
/home/g/Games/ualbion/ualbion.sln.metaproj : error MSB3202: The project file "/home/g/Games/ualbion/veldrid/src/Veldrid.RenderDoc/Veldrid.RenderDoc.csproj" was not found. [/home/g/Games/ualbion/ualbion.sln]
/home/g/Games/ualbion/ualbion.sln.metaproj : error MSB3202: The project file "/home/g/Games/ualbion/veldrid/src/Veldrid.SDL2/Veldrid.SDL2.csproj" was not found. [/home/g/Games/ualbion/ualbion.sln]
/home/g/Games/ualbion/ualbion.sln.metaproj : error MSB3202: The project file "/home/g/Games/ualbion/veldrid/src/Veldrid.StartupUtilities/Veldrid.StartupUtilities.csproj" was not found. [/home/g/Games/ualbion/ualbion.sln]
/home/g/Games/ualbion/ualbion.sln.metaproj : error MSB3202: The project file "/home/g/Games/ualbion/veldrid/src/Veldrid.Utilities/Veldrid.Utilities.csproj" was not found. [/home/g/Games/ualbion/ualbion.sln]
/home/g/Games/ualbion/ualbion.sln.metaproj : error MSB3202: The project file "/home/g/Games/ualbion/veldrid-spirv/src/Veldrid.SPIRV/Veldrid.SPIRV.csproj" was not found. [/home/g/Games/ualbion/ualbion.sln]
"/home/g/Games/ualbion/ualbion.sln" (default target) (1) ->
"/home/g/Games/ualbion/Tools/XmiToMidi/XmiToMidi.vcxproj" (default target) (2) ->
/home/g/Games/ualbion/Tools/XmiToMidi/XmiToMidi.vcxproj(32,3): error MSB4019: The imported project "/Microsoft.Cpp.Default.props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
"/home/g/Games/ualbion/ualbion.sln" (default target) (1) ->
"/home/g/Games/ualbion/Game/UAlbion.Game.csproj" (default target) (3) ->
/usr/lib/mono/msbuild/15.0/bin/Microsoft.CSharp.CurrentVersion.targets(331,5): error MSB4019: The imported project "/usr/lib/mono/msbuild/15.0/bin/Roslyn/Microsoft.CSharp.Core.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk. [/home/g/Games/ualbion/Game/UAlbion.Game.csproj]
"/home/g/Games/ualbion/ualbion.sln" (default target) (1) ->
"/home/g/Games/ualbion/Formats/UAlbion.Formats.csproj" (default target) (4) ->
/usr/lib/mono/msbuild/15.0/bin/Microsoft.CSharp.CurrentVersion.targets(331,5): error MSB4019: The imported project "/usr/lib/mono/msbuild/15.0/bin/Roslyn/Microsoft.CSharp.Core.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk. [/home/g/Games/ualbion/Formats/UAlbion.Formats.csproj]
"/home/g/Games/ualbion/ualbion.sln" (default target) (1) ->
"/home/g/Games/ualbion/Tools/Exporter/UAlbion.Tools.Exporter.fsproj" (default target) (5) ->
(ResolvePackageAssets target) ->
/usr/lib/mono/msbuild/15.0/bin/Sdks/Microsoft.NET.Sdk/targets/Microsoft.PackageDependencyResolution.targets(198,5): error : Assets file '/home/g/Games/ualbion/Tools/Exporter/obj/project.assets.json' not found. Run a NuGet package restore to generate this file. [/home/g/Games/ualbion/Tools/Exporter/UAlbion.Tools.Exporter.fsproj]
"/home/g/Games/ualbion/ualbion.sln" (default target) (1) ->
"/home/g/Games/ualbion/Core/UAlbion.Core.csproj" (default target) (6) ->
/usr/lib/mono/msbuild/15.0/bin/Microsoft.CSharp.CurrentVersion.targets(331,5): error MSB4019: The imported project "/usr/lib/mono/msbuild/15.0/bin/Roslyn/Microsoft.CSharp.Core.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk. [/home/g/Games/ualbion/Core/UAlbion.Core.csproj]
"/home/g/Games/ualbion/ualbion.sln" (default target) (1) ->
"/home/g/Games/ualbion/Tools/GenerateEnums/GenerateEnums.csproj" (default target) (7) ->
/usr/lib/mono/msbuild/15.0/bin/Microsoft.CSharp.CurrentVersion.targets(331,5): error MSB4019: The imported project "/usr/lib/mono/msbuild/15.0/bin/Roslyn/Microsoft.CSharp.Core.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk. [/home/g/Games/ualbion/Tools/GenerateEnums/GenerateEnums.csproj]
"/home/g/Games/ualbion/ualbion.sln" (default target) (1) ->
"/home/g/Games/ualbion/Api/UAlbion.Api.csproj" (default target) (8) ->
/usr/lib/mono/msbuild/15.0/bin/Microsoft.CSharp.CurrentVersion.targets(331,5): error MSB4019: The imported project "/usr/lib/mono/msbuild/15.0/bin/Roslyn/Microsoft.CSharp.Core.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk. [/home/g/Games/ualbion/Api/UAlbion.Api.csproj]
1 Warning(s)
17 Error(s)
Time Elapsed 00:00:00.81
See https://dotnet.microsoft.com/platform/support/policy/dotnet-core for details. Migration to at least Core 3.1 (LTS, but actual support time is roughly the same as of .NET 5) or .NET 5 preferably (both would be supported until at least 2022) would solve this completely (currently, targetting 3.0 results in a spam of NETSDK1138 warnings).
Official doc: https://docs.microsoft.com/en-us/aspnet/core/migration/31-to-50 (also https://docs.microsoft.com/en-us/aspnet/core/migration/30-to-31 to a lesser extent)
Checking this by fixing the csprojs by hand didn't result in any obvious issues. I can create a PR with these changes if it's the preferred way to handle this, no biggie.
As a side note: if compatibility with Mono/Xamarin is not an issue, using net5.0
profile consistently instead of e.g. netstandard2.1
etc. would be more futureproof.
On 3D levels, it should be possible to right click at any time and choose to show an overhead map view (with only the visited areas revealed). It should also be possible to open the map via a keyboard shortcut.
Adding bump-mapping to the extruded tilemap shaders could be an easy way to improve graphics without having to rework level data.
Currently the player can use the right click menu on any visible tile, this should be restricted to the range allowed by the original game. A configuration option should be added to enable or disable the possibly unintentional 'steal' mechanic where this range was extended for a couple of frames after bumping into a non-passable tile.
Offset events on 2D maps are often not working properly, e.g. Iskai doors and the Toronto hangar doors can only be activated using a single tile etc.
Once .NET 6 is released, it should be possible for UAlbion to target the Android platform using the OpenGL ES and Vulkan backends. Work will also need to be done to support a touch interface.
It should be possible to replay prior commands in the debug console using the up/down arrow keys.
Im using Manjaro Linux. After copy "ALBION" folder (in capital letters) from "game.gog" to my ualbion base folder (not
/ualbion/src/UALBION folder) and execute "./run.sh -gl" the game show this error:
[1] at 0: Entered main
[1] at 37: Running as Game
[4] at 40: Building event types
[1] at 42: Found base directory /.../ualbion
[1] at 45: Creating engine
[7] at 55: Loaded settings
[1] at 62: Starting change backend to OpenGL
[4] at 201: Built event types
[7] at 245: Loaded core config
[6] at 245: Loaded general config
[6] at 250: Attached LogExchange in 2ms
[6] at 253: Attached AssetManager in 0ms
[6] at 253: Attached AssetManager in 0ms
[6] at 253: Attached Container in 3ms
[6] at 253: Registered asset services
Unhandled exception. [5] at 298: Loaded game config
Veldrid.VeldridException: Unable to create OpenGL Context: "Could not create GL context". This may indicate that the system does not support the requested OpenGL profile, version, or Swapchain format.
at Veldrid.StartupUtilities.VeldridStartup.CreateDefaultOpenGLGraphicsDevice(GraphicsDeviceOptions options, Sdl2Window window, GraphicsBackend backend)
at Veldrid.StartupUtilities.VeldridStartup.CreateGraphicsDevice(Sdl2Window window, GraphicsDeviceOptions options, GraphicsBackend preferredBackend)
at UAlbion.Core.Veldrid.VeldridEngine.ChangeBackend() in /.../ualbion/src/Core.Veldrid/VeldridEngine.cs:line 380
at UAlbion.Program.BuildEngine(CommandLineOptions commandLine) in /.../ualbion/src/UAlbion/Program.cs:line 119
at UAlbion.Program.Main(String[] args) in /.../ualbion/src/UAlbion/Program.cs:line 52
Using the GOG version of the game results in a crash:
$ ./UAlbion/bin/Release/netcoreapp3.0/linux-x64/UAlbion -vk
at 0: Entered main
at 23: Registered encodings
at 25: Found base directory /home/g/Games/ualbion-fork
at 27: Registering asset manager
at 29: Building AssetLocator
at 37: Start building reflection cache
at 53: Done building reflection cache
at 67: Built AssetLocator
at 69: Attaching ConsoleLogger
at 71: Attached ConsoleLogger
at 71: Attaching Settings
at 72: Attached Settings
at 79: Attaching AssetManager
at 79: Attached AssetManager
at 79: Registered asset manager
at 79: Creating engine
at 86: Attaching ShaderCache
at 86: Attached ShaderCache
at 86: Attaching Engine
at 86: Attaching WindowManager
at 86: Attached WindowManager
at 86: Attached Engine
at 88: Creating main components
at 94: Attaching InputManager
at 94: Attached InputManager
at 95: Attaching LayoutManager
at 95: Attached LayoutManager
at 95: Attaching MapManager
at 95: Attached MapManager
at 95: Attaching PaletteManager
at 259: Attached PaletteManager
at 266: Attaching SceneManager
at 266: Attached SceneManager
at 266: Attaching GameClock
at 266: Attached GameClock
at 267: Attaching SpriteManager
at 267: Attached SpriteManager
at 270: Attaching GameState
at 270: Attached GameState
at 270: Attaching TextManager
at 270: Attached TextManager
at 271: Attaching TextureManager
at 271: Attached TextureManager
at 271: Attaching SlowClock
at 271: Attached SlowClock
at 272: Attaching CursorManager
at 272: Attached CursorManager
at 272: Attaching DebugMapInspector
at 272: Attached DebugMapInspector
at 283: Attaching InputBinder
at 283: Attached InputBinder
at 283: Attaching InputModeStack
at 283: Attached InputModeStack
at 284: Attaching MouseModeStack
at 284: Attached MouseModeStack
at 284: Attaching SceneStack
at 284: Attached SceneStack
at 288: Attaching StatusBar
at 289: Attached StatusBar
at 289: Creating scene-specific components
at 304: Attaching InventoryScreen
at 317: Attaching UiFixedPositionElement`1
at 330: Attached UiFixedPositionElement`1
at 330: Attaching FixedPosition
at 330: Attached FixedPosition
at 330: Attaching FixedPosition
at 330: Attached FixedPosition
at 330: Attaching FixedPosition
at 331: Attaching UiSpriteElement`1
at 331: Attached UiSpriteElement`1
at 331: Attached FixedPosition
at 331: Attached InventoryScreen
at 332: Attaching MainMenu
at 335: Attached MainMenu
at 335: Attaching Sprite`1
at 335: Attached Sprite`1
at 335: Starting new game
at 340: Building event types
at 402: Built event types
set_scene MainMenu
ExchangeDisabledEvent
ExchangeDisabledEvent
ExchangeDisabledEvent
ExchangeDisabledEvent
at 411: Attaching MenuScene
set_cursor Cursor
set_mouse_mode Normal
at 435: Attaching NormalMouseMode
at 435: Attached NormalMouseMode
set_mouse_mode Normal
set_input_mode MainMenu
at 436: Attached MenuScene
ExchangeDisabledEvent
BackendChangedEvent
-- Build SpriteRenderer-- IsDepth0..1: True YInvert: False UV TopLeft: True
-- Build SpriteRenderer-- IsDepth0..1: True YInvert: False UV TopLeft: True
-- Build SpriteRenderer-- IsDepth0..1: True YInvert: False UV TopLeft: True
-- Build SpriteRenderer-- IsDepth0..1: True YInvert: False UV TopLeft: True
-- Build SpriteRenderer-- IsDepth0..1: True YInvert: False UV TopLeft: True
-- Build SpriteRenderer-- IsDepth0..1: True YInvert: False UV TopLeft: True
-- Build SpriteRenderer-- IsDepth0..1: True YInvert: False UV TopLeft: True
-- Build SpriteRenderer-- IsDepth0..1: True YInvert: False UV TopLeft: True
at 750: Running game
at 753: Set up backend
e:window_resized 720 480
at 775: Startup done, rendering first frame
Could not load asset Picture.StatusBar: System.IO.FileNotFoundException: Tried to request object 99 from /run/media/g/ALBION/ALBION/XLDLIBS/PICTURE0.XLD, but it only contains 45 items.
at UAlbion.Formats.XldFile.GetReaderForObject(Int32 objectIndex, Int32& length) in /home/g/Games/ualbion-fork/Formats/XldFile.cs:line 53
at UAlbion.Game.Assets.StandardAssetLocator.ReadFromXld(AssetPaths paths, AssetKey key, Func`4 readFunc) in /home/g/Games/ualbion-fork/Game/Assets/StandardAssetLocator.cs:line 176
at UAlbion.Game.Assets.StandardAssetLocator.LoadAsset(AssetKey key, String name, Func`3 loaderFunc) in /home/g/Games/ualbion-fork/Game/Assets/StandardAssetLocator.cs:line 222
at UAlbion.Game.Assets.AssetLocator.LoadAssetCached[T](AssetType type, T enumId, GameLanguage language) in /home/g/Games/ualbion-fork/Game/Assets/AssetLocator.cs:line 73
Unhandled exception. System.NullReferenceException: Object reference not set to an instance of an object.
at UAlbion.Game.Entities.UiSpriteElement`1.UpdateSprite(DrawLayer order) in /home/g/Games/ualbion-fork/Game/Entities/UiSpriteElement.cs:line 64
at UAlbion.Game.Entities.UiSpriteElement`1.Render(Rectangle extents, Int32 order) in /home/g/Games/ualbion-fork/Game/Entities/UiSpriteElement.cs:line 84
at UAlbion.Game.Gui.StatusBar.<>c.<Render>b__12_0(IUiElement x, Rectangle y, Int32 z) in /home/g/Games/ualbion-fork/Game/Gui/StatusBar.cs:line 95
at UAlbion.Game.Gui.StatusBar.DoLayout(Rectangle extents, Int32 order, Func`4 func, Boolean trimOverlap) in /home/g/Games/ualbion-fork/Game/Gui/StatusBar.cs:line 53
at UAlbion.Game.Gui.StatusBar.Render(Rectangle extents, Int32 order) in /home/g/Games/ualbion-fork/Game/Gui/StatusBar.cs:line 95
at UAlbion.Game.Gui.LayoutManager.<>c.<Render>b__3_0(Rectangle extents, Int32 order, IUiElement element) in /home/g/Games/ualbion-fork/Game/Gui/LayoutManager.cs:line 87
at UAlbion.Game.Gui.LayoutManager.DoLayout(Func`4 action) in /home/g/Games/ualbion-fork/Game/Gui/LayoutManager.cs:line 83
at UAlbion.Game.Gui.LayoutManager.Render() in /home/g/Games/ualbion-fork/Game/Gui/LayoutManager.cs:line 87
at UAlbion.Game.Gui.LayoutManager.<>c.<.cctor>b__6_0(LayoutManager x, RenderEvent _) in /home/g/Games/ualbion-fork/Game/Gui/LayoutManager.cs:line 18
at UAlbion.Core.Component.Handler`2.Invoke(Component instance, IEvent event) in /home/g/Games/ualbion-fork/Core/Component.cs:line 26
at UAlbion.Core.Component.Receive(IEvent event, Object sender) in /home/g/Games/ualbion-fork/Core/Component.cs:line 94
at UAlbion.Core.Events.EventExchange.Raise(IEvent e, Object sender, Boolean includeParent) in /home/g/Games/ualbion-fork/Core/Events/EventExchange.cs:line 195
at UAlbion.Core.Scene.RenderAllStages(GraphicsDevice gd, CommandList cl, SceneContext sc, IDictionary`2 renderers) in /home/g/Games/ualbion-fork/Core/Scene.cs:line 49
at UAlbion.Core.Engine.Draw() in /home/g/Games/ualbion-fork/Core/Engine.cs:line 242
at UAlbion.Core.Engine.Run() in /home/g/Games/ualbion-fork/Core/Engine.cs:line 166
at UAlbion.Program.RunGame(EventExchange global, String baseDir) in /home/g/Games/ualbion-fork/UAlbion/Program.cs:line 188
at UAlbion.Program.Main(String[] args) in /home/g/Games/ualbion-fork/UAlbion/Program.cs:line 92
A potential quality-of-life improvement would be a way to highlight which tiles can be examined, manipulated etc. This option should be togglable in the configuration options.
A good usability improvement would be to add a small minimap view to the corner of the screen in 3D levels. There should also be a config setting to enable or disable this setting, for those seeking a more traditional experience.
NPCs should either follow their predefined waypoints from the map file, or wander randomly based on their NPC flags. Currently they just stand in place and play all animations in a cycle.
It should be possible to place only one of an ammunition type in a character's off-hand when using a ranged weapon.
On some 2D maps, incorrect layering of the terrain and party members is seen when moving diagonally. The layering behaviour should be updated to better match the original game.
Some 3D maps have all objects offset from where they should be by a half tile. The map formats should be investigated further to find which unknown factors are involved in map object positioning.
The current behaviour of sound sources with respect to party position does not closely approximate the original game.
Currently the various collision flags are only being handled in a very basic manner, as a result players cannot move through east/west facing doors or various narrow passages and staircases.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.