Unreal 4 Logo

The Unreal 4 game engine has been ported to Linux! The goal will be to install Unreal 4 engine native from source on openSUSE 13.2. If successful we can work on building a small fun game using one of UE4 blueprints and game templates: Top Down, Side-Scroll, or FPS.

I would prefer making a top down "Diablo 3" style RPG game level with a few simple systems. This is very much open for discussion. The game-play theme could be based on SUSE or a classic design. Many of the scripts required can be found at the UE4 community section.

Building on Linux and Links:

What is The Unreal 4 Engine?

Building on Linux Wiki

Linux Support Wiki

Video Guides

Official Epic Games Documentation

Requirements:

The UE4 engine requires at least a semi decent processor and graphics card as it is a fully featured AAA Engine. Would be wise to talk about this before hand so we are prepared. If you have any game development skills, such as c++, texturing, or modelling it would be great to have you! Much of the content can be found online for free "3D models, game art, scripts for UE4". This will be a fun simple game nothing too crazy! as we are limited on time. Looking forward to working with you!

Game State Components:

  • Loading game splash screen
  • Start screen
  • Create character screen
  • Character select screen
  • Loading screen
  • Game-play state
  • Save/quit by hitting escape "save state"
  • Death system (Hardcore mode/game over)

Character Classes:

1 - 2 Character classes maximum

  • Ranger
  • Mage
  • Barbarian
  • Suse Hacker
Enemy Mob System:
  • Enemy mobs: windows logo, demon, laser robot
  • Simple A.I for player targeting & chase
  • Enemy Item drops "Gold, Armor, Weapons"

Health Magic and Level Based Ability System:

  • Health and magic pool system (Dynamic health bars, and magic bars)
  • A level system capped at 10-20 levels
  • Ability and spell-book scripts for storing and updating dynamic damage and health

User Interface:

  • Player and enemy health bars
  • Ability bar for drag and dropping abilities from spell-book
  • Character portrait
  • Journal/quest panel
  • Inventory panel
  • Spell-book panel
  • Level-up Panel
  • Bags/Rucksack for storing items

Questing System:

  • 5 quest maximum
  • Example 1: Speak with NPC "Non-Player-Character" with exclamation point over head > gives quest > Complete quest by full-filling requirements > bring back items to quest giver > rewarded with experience, gold or items.
  • Example 2: Enemy mob has a 20% chance on death to drop a quest item. When you click on this item in bags, it offers a quest you may complete.

Looking for hackers with the skills:

c++ ue4engine textureing lighting storyboarding soundeditor

This project is part of:

Hack Week 12

Activity

  • over 8 years ago: mschnitzer left this project.
  • over 9 years ago: thomas-schraitle liked this project.
  • over 9 years ago: JCayouette joined this project.
  • over 9 years ago: AlexMex90 liked this project.
  • over 9 years ago: osukup liked this project.
  • over 9 years ago: psalunke liked this project.
  • over 9 years ago: MStehno liked this project.
  • over 9 years ago: HaxxonHAx liked this project.
  • over 9 years ago: HaxxonHAx joined this project.
  • over 9 years ago: psalunke joined this project.
  • over 9 years ago: jdelvare liked this project.
  • over 9 years ago: whdu liked this project.
  • over 9 years ago: kpimenov liked this project.
  • over 9 years ago: mschnitzer started this project.
  • over 9 years ago: JCayouette added keyword "soundeditor" to this project.
  • over 9 years ago: JCayouette added keyword "lighting" to this project.
  • over 9 years ago: JCayouette added keyword "storyboarding" to this project.
  • over 9 years ago: JCayouette added keyword "c++" to this project.
  • over 9 years ago: JCayouette added keyword "ue4engine" to this project.
  • over 9 years ago: JCayouette added keyword "textureing" to this project.
  • over 9 years ago: JCayouette originated this project.

  • Comments

    • mschnitzer
      over 9 years ago by mschnitzer | Reply

      I'm interested in it. Tell me if you got it working.

    • whdu
      over 9 years ago by whdu | Reply

      Really interesting. It's a large project. I hope I can help with testing ;)

      • JCayouette
        over 9 years ago by JCayouette | Reply

        If everything works as I hope would love your help!

    • JCayouette
      over 9 years ago by JCayouette | Reply

      Good news: The Unreal 4 Engine was successfully built on my home system openSUSE 13.2 but I highly recommend NOT using AMD/ATI graphics cards as the current drivers have issues with the UE4Editor. I am currently spending time evenings chatting with the excellent folks on irc.freenode.net #ue4linux

      Most Nvidia cards will work fine out of box as long as you full-fill the minimum requirements. Also a nice trick if your having troubles building on your distro. Install Ubuntu 14.04 lts in a VM build from source then use a shared folder to copy the built files to your main distro. :)

    • JCayouette
      over 9 years ago by JCayouette | Reply

      OK quick update: Unreal 4 up and running today! I was able to modify the ConsoleVariables.ini file found inside the source folder engine > ConsoleVariables.ini I added this line for the AMD Radeon opensource drivers and it loaded right up!

      r.TriangleOrderOptimization=2

      Much thanks to Salamander and Yaakuro on #ue4linux@freenode.net

    • JCayouette
      over 9 years ago by JCayouette | Reply

      Next: --Install a solid IDE --Fix a few small environmental bugs --Check the answers.unrealengine.com to ensure I have gotten rid of the big bad stuff

    • JCayouette
      over 9 years ago by JCayouette | Reply

      Kdevelop seems to be the best choice of native IDE flavors as it is integrated nicely with Unreal 4 development.

    • psalunke
      over 9 years ago by psalunke | Reply

      I am not sure if the UE4 is available to use for free, I believe that we need to buy it. Is there anything that I am missing?

    • HaxxonHAx
      over 9 years ago by HaxxonHAx | Reply

      I may be able to help with storyboarding and simple bug fixing, if any. I won't have much more time than that.

    • JCayouette
      over 9 years ago by JCayouette | Reply

      The UE4 Egine is 100% free until you make a large amount of money, since this is open source, and just learning its free. :)

    • JCayouette
      over 9 years ago by JCayouette | Reply

      "Pay a 5% royalty on games and applications you release. We succeed when you succeed."

    • JCayouette
      over 9 years ago by JCayouette | Reply

      Great news :) The unreal engine is up and running on my system. It compiled successfully last night. Did a quick test this morning and it loaded right up! Quick note if you follow the directions on the Linux Build Wiki the editor will not load under openSUSE with this command ($ cd Engine/Binaries/Linux && ./UE4Editor) You will need to use the following command to ensure your editor loads. (cd Engine/Binaries/Linux && LDLIBRARYPATH=. ./UE4Editor)

    • AlexMex90
      over 9 years ago by AlexMex90 | Reply

      Hi everyone! I'm a newbie on Hack Weeks so a little guidance would be helpful, this seems to be pure fun.

      I'm somewhat rusty with my C++ and I would like to learn about UE, I am also interested in AI how can I help with this project?

    • JCayouette
      over 9 years ago by JCayouette | Reply

      I am in room 3.2.6 If you would like to speak about this project. I am also logged in on IRC at #hackweek12UE4 I will try to leave it on all week :)

      • JCayouette
        over 9 years ago by JCayouette | Reply

        hackweek12UE4 is on freenode.net "sorry forgot to mention this" :D

    • JCayouette
      over 9 years ago by JCayouette | Reply

      I will be setting up the developer environment today. The editor is working. Following this, I will start working on the town level. This will include some buildings, portal, character spawn point, and the base blueprint classes for an inventory, 1-2 spells or attacks "not sure about this yet" I will be using some of the free Mixamo animation assets four our characters and Enemies.

    • JCayouette
      over 9 years ago by JCayouette | Reply

      If anyone has a system in house with at least a quad-core processor and 8 GB ram I would be most grateful if I could borrow it for the week. I have a 500 watt PS and GTX 970 graphics card available for running the engine. It runs currently but slowly on the dell AMD stock card. 14-20 FPS.

    • JCayouette
      over 9 years ago by JCayouette | Reply

      Ok I brought in a personal computer. :D good news first character up and running "cheers" the engine is working great! Currently building the first level and texturing

    • JCayouette
      over 9 years ago by JCayouette | Reply

      I am going to try and get a couple of screen videos up and running and put them on you-tube to show progress. I post link here when its done.

    • JCayouette
      over 9 years ago by JCayouette | Reply

      Overall this project was successful. --Unreal 4 was ported to openSUSE 13.2 --Small world was developed --Blueprint scripting for control systems for character movement --Realtime day/night system --Character model imported --Animations applied to character model --Keybindings setup for movement, and linked to animations for each mapping --World music setup --Some sound tests for actions, "jumping, walking, running" --Landscape tool used to create foliage and world realism --Youtube video created to display the results of this project.

      Great Hackweek, I had an awesome time checking out everyone's idea's and contributions!

    Similar Projects

    RISC-V emulator in GLSL capable of running Linux by favogt

    Description

    There are already numerous ways to run Linux and some programs through emulation in a web browser (e.g. x86 and riscv64 on https://bellard.org/jslinux/), but none use WebGL/WebGPU to run the emulation on the GPU.

    I already made a PoC of an AArch64 (64-bit Arm) emulator in OpenCL which is unfortunately hindered by a multitude of OpenCL compiler bugs on all platforms (Intel with beignet or the new compute runtime and AMD with Mesa Clover and rusticl). With more widespread and thus less broken GLSL vs. OpenCL and the less complex implementation requirements for RV32 (especially 32bit integers instead of 64bit), that should not be a major problem anymore.

    Goals

    Write an RISC-V system emulator in GLSL that is capable of booting Linux and run some userspace programs interactively. Ideally it is small enough to work on online test platforms like Shaderoo with a custom texture that contains bootstrap code, kernel and initrd.

    Minimum:

    riscv32 without FPU (RV32 IMA) and MMU (µClinux), running Linux in M-mode and userspace in U-mode.

    Stretch goals:

    FPU support, S-Mode support with MMU, SMP. Custom web frontend with more possibilities for I/O (disk image, network?).

    Resources

    RISC-V ISA Specifications
    Shaderoo
    OpenGL 4.5 Quick Reference Card

    Result as of Hackweek 2024

    WebGL turned out to be insufficient, it only supports OpenGL ES 3.0 but imageLoad/imageStore needs ES 3.1. So we switched directions and had to write a native C++ host for the shaders.

    As of Hackweek Friday, the kernel attempts to boot and outputs messages, but panics due to missing memory regions.

    Since then, some bugs were fixed and enough hardware emulation implemented, so that now Linux boots with framebuffer support and it's possible to log in and run programs!

    The repo with a demo video is available at https://github.com/Vogtinator/risky-v


    Port some classic game to Linux by MDoucha

    Let's pick some old classic game, reverse engineer the data formats and game rules and write an open source engine for it from scratch. Some games from 1990s are simple enough that we could have a playable prototype by the end of the week.

    Write which games you'd like to hack on in the comments. Don't forget to check e.g. on Open Source Game Clones, Github and SourceForge whether the game is ported already.

    Hack Week 24 - Master of Orion II: Battle at Antares & Chaos Overlords

    Work on Master of Orion II continues but we can hack more than one game. Chaos Overlords is a dystopian, lighthearted, cyberpunk turn-based strategy game originally released in 1996 for Windows 95 and Mac OS. The player takes on the role of a Chaos Overlord, attempting to control a city. Gameplay involves hiring mercenary gangs and deploying them on an 8-by-8 grid of city sectors to generate income, occupy sectors and take over the city.

    How to ~~install & play~~ observe the decompilation progress:

    • Clone the Git repository
    • A playable reimplementation does not exist yet, but when it does, it will be linked in the repository mentioned above.

    Further work needed:

    • Analyze the remaining unknown data structures, most of which are related to the AI.
    • Decompile the AI completely. The strong AI is part of the appeal of the game. It cannot be left out.
    • Reimplement the game.

    Hack Week 20, 21, 22 & 23 - Master of Orion II: Battle at Antares

    Master of Orion II is one of the greatest turn-based 4X games of the 1990s. Explore the galaxy, colonize planets, research new technologies, fight space monsters and alien empires and in the end, become the ruler of the galaxy one way or another.

    How to install & play:

    • Clone the Git repository
    • Run ./bootstrap; ./configure; make && make install
    • Copy all *.LBX files from the original Master of Orion II to the installation data directory (/usr/local/share/openorion2 by default)
    • Run openorion2

    Further work needed:

    • Analyze the rest of the original savegame format and a few remaining data files.
    • Implement most of the game. The open source engine currently supports only loading saved games from the original version and viewing the galaxy map, fleet management and list of known planets.

    Hack Week 19 - Signus: The Artifact Wars

    Signus is a Czech turn-based strategy game similar to Panzer General or Battle Isle series. Originally published in 1998 and open-sourced by the original developers in 2003.

    How to install & play:

    • Clone the Git repository
    • Run ./bootstrap; ./configure; make && make install in both signus and signus-data directories.
    • Run signus

    Further work needed:

    • Create openSUSE package
    • Implement full support for original game data (the open source version uses slightly different data file contents but original game data can be converted using a script).


    New KDE Plasma notification app/applet by apappas

    Description

    My memory is terrible so I depend a lot on notifications to carry me through the workday. As a plasma user I am ok with the current applet, but I don't love it. It is too small for the centrality it has in my day. Also I dislike how you can not go back to notifications you have dismissed

    Goals

    Develop a plasma app that * must gather notifications without disrupting the existing notification app * must offer the ablity to refer to dismissed/archived/seen notification up to some defined point in the past * must allow deletion of notifications


    YQPkg - Bringing the Single Package Selection Back to Life by shundhammer

    tl;dr

    Rip out the high-level YQPackageSelector widget from YaST and make it a standalone Qt program without any YaST dependencies.

    See section "Result" at the bottom for the current status after the hack week.

    Current Status

    See the development status issue at the GitHub repo.

    tl;dr: It's usable now with all the key features.

    It does real package installation / removal / update with reasonable user feedback.

    The Past and the Present

    We used to have and still have a powerful software selection with the YaST sw_single module (and the YaST patterns counterpart): You can select software down to the package level, you can easily select one of many available package versions, you can select entire patterns - or just view them and pick individual packages from patterns.

    You can search packages based on name, description, "requires" or "provides" level, and many more things.

    The Future

    YaST is on its way out, to be replaced by the new Agama installer and Cockpit for system administration. Those tools can do many things, but fine-grained package selection is not among them. And there are also no other Open Source tools available for that purpose that even come close to the YaST package selection.

    Many aspects of YaST have become obsolete over the years; many subsystems now come with a good default configuration, or they can configure themselves automatically. Just think about sound or X11 configuration; when did you last need to touch them?

    For others, the desktops bring their own tools (e.g. printers), or there are FOSS configuration tools (NetworkManager, BlueMan). Most YaST modules are no longer needed, and for many others there is a replacement in tools like Cockpit.

    But no longer having a powerful fine-grained package selection like in YaST sw_single will hurt. Big time. At least until there is an adequate replacement, many users will want to keep it.

    The Idea

    YaST sw_single always revolved around a powerful high-level widget on the abstract UI level. Libyui has low-level widgets like YPushButton, YCheckBox, YInputField, more advanced ones like YTable, YTree; and some few very high-level ones like YPackageSelector and YPatternSelector that do the whole package selection thing alone, working just on the libzypp level and changing the status of packages or patterns there.

    For the YaST Qt UI, the YQPackageSelector / YQPatternSelector widgets work purely on the Qt and libzypp level; no other YaST infrastructure involved, in particular no Ruby (or formerly YCP) interpreter, no libyui-level widgets, no bindings between Qt / C++ and Ruby / YaST-core, nothing. So it's not too hard to rip all that part out of YaST and create a standalone program from it.

    For the NCurses UI, the NCPackageSelector / NCPatternSelector create a lot of libyui widgets (inheriting YWidget / NCWidget) and use a lot of libyui calls to glue them together; and all that of course still needs a lot of YaST / libyui / libyui-ncurses infrastructure. So NCurses is out of scope here.

    Preparatory Work: Initializing the Package Subsystem

    To see if this is feasible at all, the existing UI examples needed some fixing to check what is needed on that level. That was the make-or-break decision: Would it be realistically possible to set the needed environment in libzypp up (without being stranded in the middle of that task alone at the end of the hack week)?

    Yes, it is: That part is already working:

    https://github.com/yast/yast-ycp-ui-bindings/pull/71