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:
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 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:
This project is part of:
Hack Week 12
Activity
Comments
-
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. :)
-
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
-
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
-
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.
-
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. :)
-
over 9 years ago by JCayouette | Reply
"Pay a 5% royalty on games and applications you release. We succeed when you succeed."
-
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)
-
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 :)
-
over 9 years ago by JCayouette | Reply
hackweek12UE4 is on freenode.net "sorry forgot to mention this" :D
-
-
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.
-
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.
-
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
-
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.
-
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 bothsignus
andsignus-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