The Machinery by Our Machinery is an in development professional game engine that just entered open beta. We went hands-on with The Machinery earlier in the year when it was still in closed beta if you want an in-depth but slightly out of date hands-on experience. With the move to open beta all you need to do is register an account and download the engine to get started.
In a world dominated with game engines, what makes The Machinery unique? This engine is being developed by members behind the Stingray/BitSquid engines, used in such titles as Magicka and Warhammer Vermintide. The engine is light weight, modular and written in the C language with a focus on customizibility. Details from the open beta announcement:
If you are still wondering what The Machinery is, it’s a new lightweight and flexible game engine, designed to give you all the power of a modern engine in a minimalistic package that is easy to understand, extend, explore, rewrite, and hack. Beyond games, the API can also be used for simulations and visualizations as well as building custom tools, editors, and applications.
Some of the things that make The Machinery more hackable than other game engines are:
The Machinery’s API is written in C. It’s easy to understand without learning the complexities of modern C++. And don’t worry, you still have type-safe vectors and hash tables, just as in C++.
We use a modular design that is completely plugin-based. This makes it easy to extend and replace parts of the engine.
The engine can be stripped down to a minimalistic core. Don’t need physics, animation, or sound? Just ship the engine without those DLLs.
Individual DLLs can be hot-reloaded. You can modify gameplay, UI, etc, while the editor is running.
The codebase is small, readable and well documented.
We offer licenses with full source code for both small and large developers.
You can learn more about The Machinery open beta and a quick hands-on/getting started guide in the video below.
The 001 Game Creator game engine is currently featured in the Game Dev STEM Humble Bundle that just launched. 001 Game Creator was previously featured in a Humble, so be sure to check your library to make sure you aren’t purchasing it twice. If you are interested in learning more about 001 Game Creator, check out our hands-on review available here.
As with all Humbles, this bundle is organized into tiers:
1$ Tier
Misc design documents
10$ Tier
001 Game Creator Engine
001 Basics E-Book
001 Resource E-Book
20$ Tier
Point and Click Adventure Kit
Dragons Den Resource Pack
Retro Fantasy Music Pack
Sound Effects Pack Vol 1
25$ Tier
Enhanced RPG Kit
FPS Kit
MMORPG Kit
Visual Novel Kit
As with all Humble Bundles you get to decide how your money is allocated between the publisher, charity, Humble and if you so choose (and thanks if you do!) to support GFS using this link. You can learn more about the bundle in the video below.
Recently updated, today we are checking out the free and open source ODIN 2 synthesizer. It is built on top of the JUCE audio framework (also open source). ODIN 2 is described as:
Ever dreamt of a kickass synthesizer which is available on every platform? With a deep synthesis engine, endless modulation capabilities and it is literally for free? Look no further, Odin’s got you covered!
The sound of this 24-voice polyphonic beast will take you from your studio right to Valhalla. Earth shattering basses, exquisite leads or mad FX, Odin’s got them all! Use the classic sound of analog waveforms – or draw your own. High quality emulations of legendary analog filters like the Moog-ladder or the Korg-35 further shape your signal. Round your sound off with four onboard FX, or get crazy with modulation. There’s much to discover in Odin 2.
The source code for Odin 2 is available on GitHub under the GPL 3 open source license. Odin 2 is available for Windows, MacOS and Linux operating systems and is implemented as an VST compatible with most modern DAWs. If you are looking for a DAW to host Odin 2, check out our coverage on Reaper, LMMS, Mixcraft or ZRythm.
You can check out Odin 2 in action in the video below.
Fedora 33 Workstation is the latest release of our free, leading-edge operating system. You can download it from the official website here right now. There are several new and noteworthy changes in Fedora 33 Workstation. Read more details below.
GNOME 3.38
Fedora 33 Workstation includes the latest release of GNOME Desktop Environment for users of all types. GNOME 3.38 in Fedora 33 Workstation includes many updates and improvements, including:
A new GNOME Tour app
New users are now greeted by “a new Tour application, highlighting the main functionality of the desktop and providing first time users a nice welcome to GNOME.”
The new GNOME Tour application in Fedora 33
Drag to reorder apps
GNOME 3.38 replaces the previously split Frequent and All apps views with a single customizable and consistent view that allows you to reorder apps and organize them into custom folders. Simply click and drag to move apps around.
GNOME 3.38 Drag to Reorder
Improved screen recording
The screen recording infrastructure in GNOME Shell has been improved to take advantage of PipeWire and kernel APIs. This will help reduce resource consumption and improve responsiveness.
GNOME 3.38 also provides many additional features and enhancements. Check out the GNOME 3.38 Release Notes for further information.
B-tree file system
As announced previously, new installations of Fedora 33 will default to using Btrfs. Features and enhancements are added to Btrfs with each new kernel release. The change log has a complete summary of the features that each new kernel version brings to Btrfs.
Swap on ZRAM
Anaconda and Fedora IoT have been using swap-on-zram by default for years. With Fedora 33, swap-on-zram will be enabled by default instead of a swap partition. Check out the Fedora wiki page for more details about swap-on-zram.
Nano by default
Fresh Fedora 33 installations will set the EDITOR environment variable to nano by default. This change affects several command line tools that spawn a text editor when they require user input. With earlier releases, this environment variable default was unspecified, leaving it up to the individual application to pick a default editor. Typically, applications would use vi as their default editor due to it being a small application that is traditionally available on the base installation of most Unix/Linux operating systems. Since Fedora 33 includes nano in its base installation, and since nano is more intuitive for a beginning user to use, Fedora 33 will use nano by default. Users who want vi can, of course, override the value of the EDITOR variable in their own environment. See the Fedora change request for more details.
Codecks is a project management tool in the vein of Trello but aimed specifically at game developers. Modelled around the concept of a card game, decks are created for the various different tasks that need to be accomplished. Individual users interact in the form of hands, formed from cards either created locally or taken from community decks. There are also milestones as well as integration into several other technologies such as Github and Discord, as well as Trello import.
Key features of Codecks include:
Cards, Decks & Projects
Well designed collectable card games provide a great sense of the current state of your game. Let’s apply those design cues to project management.
Conversations & Notifications
Ever lost track of a comment thread? Conversations in Codecks are very explicit about who is part and whether it’s been resolved.
Time Tracking
Codecks’ optional time tracking allows you and your team to see how much time you’re actually spending on your tasks.
Search & Order
Use our advanced search and ordering options to dice and slice your work just the way you need.
Metrics & Reports
“Will we manage to release in time?” is a tough question. Especially in game development. Codecks is here to help.
Milestones
Plan for your release – one milestone at a time.
Codecks has a free tier available for teams up to 3 developers in size with several other pricing tiers available.
You can learn more about Codecks and see it in action in the video below.
Today, I’m excited to share the results of the hard work of thousands of contributors to the Fedora Project: our latest release, Fedora 33, is here! This is a big release with a lot of change, but I believe all that work will also make it a comfortable one, fulfilling our goal of bringing you the latest stable, powerful, and robust free and open source software in many easy to use offerings.
If you just want to get to the bits without delay, head over to https://getfedora.org/ right now. For details, read on!
Find the Fedora flavor that’s right for you!
Fedora Editions are targeted outputs geared toward specific “showcase” uses on the desktop, in server and cloud environments—and now for Internet of Things as well.
Fedora Workstation focuses on the desktop, and in particular, it’s geared toward software developers who want a “just works” Linux operating system experience. This release features GNOME 3.38, which has plenty of great improvements as usual. The addition of the Tour application helps new users learn their way around. And like all of our other desktop-oriented variants, Fedora Workstation now uses BTRFS as the default filesystem. This advanced filesystem lays the foundation for bringing a lot of great enhancements in upcoming releases. For your visual enjoyment, Fedora 33 Workstation now features an animated background (based on time of day) by default.
Fedora CoreOS is an emerging Fedora Edition. It’s an automatically-updating, minimal operating system for running containerized workloads securely and at scale. It offers several update streams that can be followed for automatic updates that occur roughly every two weeks. Currently the next stream is based on Fedora 33, with the testing and stable streams to follow. You can find information about released artifacts that follow the next stream from the download page and information about how to use those artifacts in the Fedora CoreOS Documentation.
Fedora IoT, newly promoted to Edition status, provides a strong foundation for IoT ecosystems and edge computing use cases. Among many other features, Fedora 33 IoT introduces the Platform AbstRaction for SECurity (PARSEC), an open-source initiative to provide a common API to hardware security and cryptographic services in a platform-agnostic way.
Of course, we produce more than just the Editions. Fedora Spins and Labs target a variety of audiences and use cases, including Fedora CompNeuro, which brings a plethora of open source computational modelling tools for neuroscience, and desktop environments like KDE Plasma and Xfce.
And, don’t forget our alternate architectures: ARM AArch64, Power, and S390x. New in Fedora 33, AArch64 users can use the .NET Core language for cross-platform development. We have improved support for Pine64 devices, NVidia Jetson 64 bit platforms, and the Rockchip system-on-a-chip devices including the Rock960, RockPro64, and Rock64. (However, a late-breaking note: there may be problems booting on some of these devices. Upgrading from existing Fedora 32 will be fine. More info will be on the Common Bugs page as we have it.)
We’re also excited to announce that the Fedora Cloud Base Image and Fedora CoreOS will be available in Amazon’s AWS Marketplace for the first time with Fedora 33. Fedora cloud images have been available in the Amazon cloud for over a decade, and you can launch our official images by AMI ID or with a click. The Marketplace provides an alternate way to get the same thing, with significantly wider visibility for Fedora. This will also make our cloud images available in new AWS regions more quickly. Thank you especially to David Duncan for making this happen!
General improvements
No matter what variant of Fedora you use, you’re getting the latest the open source world has to offer. Following our “First” foundation, we’ve updated key programming language and system library packages, including Python 3.9, Ruby on Rails 6.0, and Perl 5.32. In Fedora KDE, we’ve followed the work in Fedora 32 Workstation and enabled the EarlyOOM service by default to improve the user experience in low-memory situations.
To make the default Fedora experience better, we’ve set nano as the default editor. nano is a friendly editor for new users. Those of you who want the power of editors like vi can, of course, set your own default.
We’re excited for you to try out the new release! Go to https://getfedora.org/ and download it now. Or if you’re already running a Fedora operating system, follow the easy upgrade instructions. For more information on the new features in Fedora 33, see the release notes.
A note on Secure Boot
Secure Boot is a security standard which ensures that only officially-signed operating system software can load on your computer. This is important for preventing persistent malware which could hide itself in your computer’s firmware and survive even an operating system reinstallation. However, in the wake of the Boot Hole vulnerability, the cryptographic certificate used to sign Fedora bootloader software will be revoked and replaced with a new one. Because this will have a broad impact, revocation should not happen widely until the second quarter of 2021 or later.
However, some users may have received this revocation from other operating systems or firmware updates already. In that case, Fedora installations will not boot with Secure Boot enabled. To be clear, this will not affect most users. If it does affect you, you can boot with Secure Boot disabled for the time being. We will release an update signed with the new certificate to be available on all supported releases well before broad-scale certificate revocation takes place, and at that point Secure Boot should be reenabled.
In the unlikely event of a problem….
If you run into a problem, check out the Fedora 33 Common Bugs page, and if you have questions, visit our Ask Fedora user-support platform.
Thank you everyone
Thanks to the thousands of people who contributed to the Fedora Project in this release cycle, and especially to those of you who worked extra hard to make this another on-time release during a pandemic. Fedora is a community, and it’s great to see how much we’ve supported each other.
Earlier this week the first beta of Godot 3.2.4 was released bringing several fixes and improvements as well as a few new features.
The primary features of the first Godot 3.2.4 beta from the Godot blog include:
Android App Bundle and subview embedding support.
2D batching for GLES3 (remember that we added it for GLES2 in 3.2.2), and improvements to GLES2’s batching.
A new software skinning for MeshInstance to replace the slow GPU skinning on devices that don’t support the fast GPU skinning (especially mobile).
Several smaller fixes and improvements
Downloads for all major platforms are available for download here. The major new feature of most interest to me is the new sprite batching, an optimization trick to improve 2D rendering speeds. In the video below we run the popular Bunnymark test on Godot 3.2.3 and the new Godot 3.2.4 and we saw respectable improvements.
The kernel team is working on final integration for kernel 5.9. This version was just recently released, and will arrive soon in Fedora. As a result, the Fedora kernel and QA teams have organized a test week from Monday, October 26, 2020 through Monday, November 02, 2020. Refer to the wiki page for links to the test images you’ll need to participate. Read below for details.
How does a test week work?
A test week is an event where anyone can help make sure changes in Fedora work well in an upcoming release. Fedora community members often participate, and the public is welcome at these events. If you’ve never contributed before, this is a perfect way to get started.
To contribute, you only need to be able to do the following things:
Download test materials, which include some large files
Read and follow directions step by step
The wiki page for the kernel test day has a lot of good information on what and how to test. After you’ve done some testing, you can log your results in the test day web application. If you’re available on or around the day of the event, please do some testing and report your results. We have a document which provides all the steps written.
Happy testing, and we hope to see you on test day.
Many computers use the Network Time Protocol (NTP) to synchronize their system clocks over the internet. NTP is one of the few unsecured internet protocols still in common use. An attacker that can observe network traffic between a client and server can feed the client with bogus data and, depending on the client’s implementation and configuration, force it to set its system clock to any time and date. Some programs and services might not work if the client’s system clock is not accurate. For example, a web browser will not work correctly if the web servers’ certificates appear to be expired according to the client’s system clock. Use Network Time Security (NTS) to secure NTP.
Fedora 331 is the first Fedora release to support NTS. NTS is a new authentication mechanism for NTP. It enables clients to verify that the packets they receive from the server have not been modified while in transit. The only thing an attacker can do when NTS is enabled is drop or delay packets. See RFC8915 for further details about NTS.
NTP can be secured well with symmetric keys. Unfortunately, the server has to have a different key for each client and the keys have to be securely distributed. That might be practical with a private server on a local network, but it does not scale to a public server with millions of clients.
NTS includes a Key Establishment (NTS-KE) protocol that automatically creates the encryption keys used between the server and its clients. It uses Transport Layer Security (TLS) on TCP port 4460. It is designed to scale to very large numbers of clients with a minimal impact on accuracy. The server does not need to keep any client-specific state. It provides clients with cookies, which are encrypted and contain the keys needed to authenticate the NTP packets. Privacy is one of the goals of NTS. The client gets a new cookie with each server response, so it doesn’t have to reuse cookies. This prevents passive observers from tracking clients migrating between networks.
The default NTP client in Fedora is chrony. Chrony added NTS support in version 4.0. The default configuration hasn’t changed. Chrony still uses public servers from the pool.ntp.org project and NTS is not enabled by default.
Currently, there are very few public NTP servers that support NTS. The two major providers are Cloudflare and Netnod. The Cloudflare servers are in various places around the world. They use anycast addresses that should allow most clients to reach a close server. The Netnod servers are located in Sweden. In the future we will probably see more public NTP servers with NTS support.
A general recommendation for configuring NTP clients for best reliability is to have at least three working servers. For best accuracy, it is recommended to select close servers to minimize network latency and asymmetry caused by asymmetric network routing. If you are not concerned about fine-grained accuracy, you can ignore this recommendation and use any NTS servers you trust, no matter where they are located.
If you do want high accuracy, but you don’t have a close NTS server, you can mix distant NTS servers with closer non-NTS servers. However, such a configuration is less secure than a configuration using NTS servers only. The attackers still cannot force the client to accept arbitrary time, but they do have a greater control over the client’s clock and its estimate of accuracy, which may be unacceptable in some environments.
Enable client NTS in the installer
When installing Fedora 33, you can enable NTS in the Time & Date dialog in the Network Time configuration. Enter the name of the server and check the NTS support before clicking the + (Add) button. You can add one or more servers or pools with NTS. To remove the default pool of servers (2.fedora.pool.ntp.org), uncheck the corresponding mark in the Use column.
Network Time configuration in
Fedora installer
Enable client NTS in the configuration file
If you upgraded from a previous Fedora release, or you didn’t enable NTS in the installer, you can enable NTS directly in /etc/chrony.conf. Specify the server with the nts option in addition to the recommended iburst option. For example:
server time.cloudflare.com iburst nts
server nts.sth1.ntp.se iburst nts
server nts.sth2.ntp.se iburst nts
You should also allow the client to save the NTS keys and cookies to disk,
so it doesn’t have to repeat the NTS-KE session on each start. Add the
following line to chrony.conf, if it is not already present:
ntsdumpdir /var/lib/chrony
If you don’t want NTP servers provided by DHCP to be mixed with the servers you
have specified, remove or comment out the following line in chrony.conf:
sourcedir /run/chrony-dhcp
After you have finished editing chrony.conf, save your changes and restart the chronyd service:
systemctl restart chronyd
Check client status
Run the following command under the root user to check whether the NTS key
establishment was successful:
The KeyID, Type, and KLen columns should have non-zero values. If they are zero, check the system log for error messages from chronyd. One possible cause of failure is a firewall is blocking the client’s connection to the server’s TCP port ( port 4460).
Another possible cause of failure is a certificate that is failing to verify because the client’s clock is wrong. This is a chicken-or-the-egg type problem with NTS. You may need to manually correct the date or temporarily disable NTS in order to get NTS working. If your computer has a real-time clock, as almost all computers do, and it’s backed up by a good battery, this operation should be needed only once.
If the computer doesn’t have a real-time clock or battery, as is common with
some small ARM computers like the Raspberry Pi, you can add the -s
option to /etc/sysconfig/chronyd to restore time saved on the last
shutdown or reboot. The clock will be behind the true time, but if the
computer wasn’t shut down for too long and the server’s certificates were not
renewed too close to their expiration, it should be sufficient for the time
checks to succeed. As a last resort, you can disable the time checks with the nocerttimecheck directive. See the chrony.conf(5) man page
for details.
Run the following command to confirm that the client is making NTP
measurements:
The Reach column should have a non-zero value; ideally 377. The value 377 shown above is an octal number. It indicates that the last eight requests all had a valid response. The validation check will include NTS authentication if enabled. If the value only rarely or never gets to 377, it indicates that NTP requests or responses are getting lost in the network. Some major network operators are known to have middleboxes that block or limit rate of large NTP packets as a mitigation for amplification attacks that exploit the monitoring protocol of ntpd. Unfortunately, this impacts NTS-protected NTP packets, even though they don’t cause any amplification. The NTP working group is considering an alternative port for NTP as a workaround for this issue.
Enable NTS on the server
If you have your own NTP server running chronyd, you can enable server NTS support to allow its clients to be synchronized securely. If the server is a client of other servers, it should use NTS or a symmetric key for its own synchronization. The clients assume the synchronization chain is secured between all servers up to the primary time servers.
Enabling server NTS is similar to enabling HTTPS on a web server. You just need a private key and certificate. The certificate could be signed by the Let’s Encrypt authority using the certbot tool, for example. When you have the key and certificate file (including intermediate certificates), specify them in chrony.conf with the following directives:
Make sure the ntsdumpdir directive mentioned previously in the
client configuration is present in chrony.conf. It allows the server
to save its keys to disk, so the clients of the server don’t have to get new
keys and cookies when the server is restarted.
Restart the chronyd service:
systemctl restart chronyd
If there are no error messages in the system log from chronyd, it should be
accepting client connections. If the server has a firewall, it needs to allow
both the UDP 123 and TCP 4460 ports for NTP and NTS-KE respectively.
You can perform a quick test from a client machine with the following command:
$ chronyd -Q -t 3 'server foo.example.net iburst nts maxsamples 1'
2020-10-13T12:00:52Z chronyd version 4.0 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SIGND +ASYNCDNS +NTS +SECHASH +IPV6 +DEBUG)
2020-10-13T12:00:52Z Disabled control of system clock
2020-10-13T12:00:55Z System clock wrong by -0.001032 seconds (ignored)
2020-10-13T12:00:55Z chronyd exiting
If you see a System clock wrong message, it’s working
correctly.
On the server, you can use the following command to check how many NTS-KE
connections and authenticated NTP packets it has handled:
If you see non-zero NTS-KE connections accepted and Authenticated
NTP packets, it means at least some clients were able to connect to the
NTS-KE port and send an authenticated NTP request.
— Cover photo by Louis. K on Unsplash —
1. The Fedora 33 Beta installer contains an older chrony prerelease which doesn’t work with current NTS servers because the NTS-KE port has changed. Consequently, in the Network Time configuration in the installer, the servers will always appear as not working. After installation, the chrony package needs to be updated before it will work with current servers.
With the recent Fantasy 3D Models humble bundle there were a number of questions about how assets can be extracted from the Unity game engine for use in other engines such as Godot, Unreal, Lumberyard, Stride, CryEngine or basically any other 3D game engine. That is exactly what we will look at in this tutorial, as we have in the past in this tutorial for Unreal Engine. Fortunately assets in the Unity game engine are generally stored as FBX files and textures are stored in image file formats, making this process a fair bit easier than it was in Unreal.
First and foremost you need to download the assets. Unfortunately to do this you will need to have Unity installed to perform the download process. (If you know a way to download unitypackage files from the command-line or outside of Unity, please let me know and I will update!) First you are going to need to purchase an asset from the Unity Asset store (or one of the several available free options). Once you have one or more assets on your account, fire up Unity and create a new project (type doesn’t matter). Next select the Package Manager in the menu Window->Package Manager.
Next in the Package Manager, in the top left corner drop down the menu and select My Assets option.
This will load your assets. If you have several assets, you may need to click Load More and the bottom to find your asset. Once located, select your asset in the left hand list, then select the Download button on the bottom right menu.
Repeat this task for each package you want downloaded. Once you have all of your assets downloaded you can close Unity. Now (on Windows at least) go to Windows Explorer and enter %APPDATA% in the location box.
This will automatically expand into the relevant folder name. Next navigate into the folder Unity, then Asset Store-5.x. In my case the full directory is C:\Users\serap\AppData\Roaming\Unity\Asset Store-5.x.In this folder will be a list of companies, these are the creators of the assets as named on the Asset Store, pick the one you downloaded earlier, then open up the asset within that directly. You should now see one or more files with a unitypackage file extension. Copy the asset you want to use to a directory of your choice.
Now we are going to need Unity Package Extractor, download Unity Package Extractor. Extract the zip file to the same location that you copied your unitypackage earlier. Now open a command prompt and CD into that directory, in this example lets assume c:\temp. Run the commands:
cd \temp
extractor ‘packagenamewithextension.unitypackage’
This will extract out all of the assets ready for your use. Tada, done! You can learn more about this process, step by step in the tutorial video below.