Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags

ThGaloot

7
Posts
2
Topics
1
Following
A member registered Oct 09, 2020

Recent community posts

Thanks Kenney! I'll update this thread if I find anything else or possibly a temporary fix for Wayland.

I completely understand the support limitations, however, the issue isn't the distro, its the display protocol difference. Ubuntu is planning on moving to Wayland as well. This means Asset Forge will not work for Ubuntu 21.04 LTS just like it does not currently on Fedora 33.

(1 edit)

As of Fedora 33, the Red Hat developers made the decision to move from X11 display server protocol to the new Wayland protocol. Whenever I run Asset Forge, I cannot open the file dialog panel. This means I am not able to use menu options (e.g. scripts > open lua) without crashing Asset Forge. Here is my stacktrace from the crash:

Found path: /opt/asset-forge/Asset Forge.x86_64

Mono path[0] = '/opt/asset-forge/Asset Forge_Data/Managed'

Mono config path = '/opt/asset-forge/Asset Forge_Data/MonoBleedingEdge/etc'

Preloaded 'ScreenSelector.so'

Preloaded 'libFileBrowser.so'

Preloaded 'libProcessStart.so'

Display 0 'XWAYLAND0 32"': 2560x1440 (primary device)

. Display 1 'XWAYLAND1 24"': 1080x1920 (secondary device).

Logging to /home/rmayobre/.config/unity3d/Kenney/Asset Forge/Player.log

Stacktrace:  
  at <unknown> <0xffffffff>   at (wrapper managed-to-native) Crosstales.FB.Wrapper.Linux.NativeMethods.DialogOpenFilePanel (string,string,string,bool) [0x00026] in <426db6691f7e4f899d8323a958dc754a>:0   at Crosstales.FB.Wrapper.FileBrowserLinux.OpenFiles (string,string,Crosstales.FB.ExtensionFilter[],bool) [0x00008] in <426db6691f7e4f899d8323a958dc754a>:0   at Crosstales.FB.Wrapper.FileBrowserBase.OpenSingleFile (string,string,Crosstales.FB.ExtensionFilter[]) [0x00000] in <426db6691f7e4f899d8323a958dc754a>:0   at Crosstales.FB.FileBrowser.OpenSingleFile (string,string,Crosstales.FB.ExtensionFilter[]) [0x00000] in <426db6691f7e4f899d8323a958dc754a>:0   at Procedural.LoadLua () [0x0001a] in <12ec27006e7443618a72813c20ba07e4>:0   at Menubar.Select (string) [0x00633] in <12ec27006e7443618a72813c20ba07e4>:0   at (wrapper runtime-invoke) <Module>.runtime_invoke_void__this___object (object,intptr,intptr,intptr) [0x0001e] in <12ec27006e7443618a72813c20ba07e4>:0   at <unknown> <0xffffffff>   at (wrapper managed-to-native) UnityEngine.Component.SendMessage (UnityEngine.Component,string,object,UnityEngine.SendMessageOptions) [0x0000c] in <f77b91098dd046649e385b3ae1c8b7ef>:0   at DropdownList.Click (UnityEngine.UI.Button) [0x000a0] in <12ec27006e7443618a72813c20ba07e4>:0   at UnityEngine.Events.InvokableCall`1<T1_REF>.Invoke (T1_REF) [0x00011] in <f77b91098dd046649e385b3ae1c8b7ef>:0   at UnityEngine.Events.CachedInvokableCall`1<T_REF>.Invoke (object[]) [0x00001] in <f77b91098dd046649e385b3ae1c8b7ef>:0   at UnityEngine.Events.UnityEvent.Invoke () [0x0006e] in <f77b91098dd046649e385b3ae1c8b7ef>:0   at UnityEngine.UI.Button.Press () [0x00027] in <408ee57755ab434cb775b5975cf1747a>:0   at UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData) [0x00011] in <408ee57755ab434cb775b5975cf1747a>:0   at UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IPointerClickHandler,UnityEngine.EventSystems.BaseEventData) [0x00008] in <408ee57755ab434cb775b5975cf1747a>:0   at UnityEngine.EventSystems.ExecuteEvents.Execute<T_REF> (UnityEngine.GameObject,UnityEngine.EventSystems.BaseEventData,UnityEngine.EventSystems.ExecuteEvents/EventFunction`1<T_REF>) [0x00070] in <408ee57755ab434cb775b5975cf1747a>:0   at UnityEngine.EventSystems.StandaloneInputModule.ProcessMousePress (UnityEngine.EventSystems.PointerInputModule/MouseButtonEventData) [0x00181] in <408ee57755ab434cb775b5975cf1747a>:0   at UnityEngine.EventSystems.StandaloneInputModule.ProcessMouseEvent (int) [0x0002f] in <408ee57755ab434cb775b5975cf1747a>:0   at UnityEngine.EventSystems.StandaloneInputModule.ProcessMouseEvent () [0x00001] in <408ee57755ab434cb775b5975cf1747a>:0   at UnityEngine.EventSystems.StandaloneInputModule.Process () [0x00071] in <408ee57755ab434cb775b5975cf1747a>:0   at UnityEngine.EventSystems.EventSystem.Update () [0x000f3] in <408ee57755ab434cb775b5975cf1747a>:0   at (wrapper runtime-invoke) object.runtime_invoke_void__this__ (object,intptr,intptr,intptr) [0x0001e] in <4b86512bfcd1449dba2c62ce4e706e3a>:0


I know this program is built on Unity Game Engine and is using Mono as it's runtime. It looks like Mono has a bug with it's DialogOpenFilePanel method (the wrapper function for a native method call).


This program works fine when I switch from Wayland to X11, however, ideally I would like to keep using Wayland since X11 has been depricated by it's author.

Lol I guess we'll leave this for the KDE users and the Gnome users will have to follow the original post.

Thanks Kenny! These commands could also be placed inside of a shell script for easy set up.

Would you be willing to provide instructions on this for Gnome? I haven't been able to find anything about this being an option in Gnome. I wrote these instructions thinking it would work on most distros, but if this is a better solution I don't want to pull people away from this.

Summary

Hi, I thought I would take the time an write up a quick guide on setting up Asset Forge on Linux so that there is a desktop entry.

Install Asset Forge

  1. Download Asset Forge.
  2. Extract Asset Forge form zip file.
  3. Place Asset Forge directory in /opt directory in the root.

Here is a command snippet for unzipping into /opt/ directory (correct file name if needed):

`sudo unzip /{DIRECTORY_TO_ASSET_FORGE_ZIP}/Asset\ Forge\ 2.1.0\ Linux\ \(Deluxe\).zip -d /opt/Asset\ Forge`

Desktop Icon

Now we have to get a desktop icon for Asset Forge. You will find a good one within the /opt/Asset Forge/Asset Forge_Data/Resources/ directory.

  1. Find the UnityPlayer.png within the /opt/Asset Forge/Asset Forge_Data/Resources/ directory.
  2. Copy and place the png file inside of /usr/share/pixmaps/.
  3. Rename file in /usr/share/pixmaps/ to "io.assetforge.png".

Here's another command snippet on how to do this:

`sudo cp /opt/Asset\ Forge/Asset\ Forge_Data/Resources/UnityPlayer.png /usr/share/pixmaps/io.assetforge.png`

Desktop Entry

The last step is to create the desktop entry file (.desktop). Follow the snippet below as a template; it should be accurate if you decided to follow these step exactly. If you had anything done differently, make sure to adjust the desktop entry file to those changes.

1. Copy the following text and place inside of text.

```

 [Desktop Entry]
 Version=2.1
 Type=Application
 Name=Asset Forge
 GenericName=Asset Forge 2.1
 Comment=Create 3D models and 2D sprites using building blocks. 

Exec=/opt/Asset\ Forge/Asset\ Forge.x86_64
 Categories=Graphics;
 Icon=io.assetforge.png
 Terminal=false
 StartupNotify=true

```

2. Rename the extension of the text file to a ".desktop" file (the file can be name "io.assetforge.desktop").

3. Move the file to the /usr/share/applications/ directory.

Code snippet to move desktop entry file:

`sudo mv /{DIRECTORY_TO_FILE}/io.assetforge.desktop /usr/share/applications/`

Gnome Users

You may need to restart your computer or desktop environment to get this to work properly. If you are running Gnome, then press the macro alt+f2 and enter "r" to restart Gnome.