<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Almas Baimagambetov on foojay.io - Friends of OpenJDK</title><link>https://foojayio.github.io/website/today/author/almasbaimagambetov/</link><description>Articles written by Almas Baimagambetov on foojay.io - Friends of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 19 Jun 2023 08:56:11 +0000</lastBuildDate><atom:link href="https://foojayio.github.io/website/today/author/almasbaimagambetov/index.xml" rel="self" type="application/rss+xml"/><item><title>Foojay Podcast #25: Game Development with Java, JavaFX, FXGL</title><link>https://foojayio.github.io/website/today/foojay-podcast-25/</link><pubDate>Mon, 19 Jun 2023 08:56:11 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-25/</guid><description>&lt;p&gt;Java and JavaFX are probably not the first options you consider if you want to create a game application.&lt;/p&gt;
&lt;p&gt;But the FXGL library allows you to do precisely that! Create games that run on all platforms with the same codebase as we are used to with Java.&lt;/p&gt;
&lt;p&gt;And even without an extra library, the JavaFX Components and Canvas provide many animation and gaming possibilities.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s learn from experts why Java should be on your game-development-language-list!&lt;/p&gt;</description></item><item><title>New Book: FXGL 17 -- Learn JavaFX Game and App Development</title><link>https://foojayio.github.io/website/today/new-book-fxgl-17-learn-javafx-game-and-app-development/</link><pubDate>Mon, 19 Sep 2022 11:39:12 +0000</pubDate><guid>https://foojayio.github.io/website/today/new-book-fxgl-17-learn-javafx-game-and-app-development/</guid><description>&lt;p&gt;This is an announcement of the FXGL 17 book. This book is for beginners in Java and/or JavaFX who wish to develop apps and games with FXGL, while improving Java and JavaFX skills.&lt;/p&gt;
&lt;p&gt;This book is also suitable for experienced developers who wish to learn how to use FXGL.&lt;/p&gt;
&lt;p&gt;Lastly, game developers familiar with Unity, Unreal Engine or Godot who wish to learn Java and JavaFX will find this book useful.&lt;/p&gt;</description></item><item><title>FXGL Game Engine 17 Released</title><link>https://foojayio.github.io/website/today/fxgl-game-engine-17-released/</link><pubDate>Mon, 03 Jan 2022 10:43:05 +0000</pubDate><guid>https://foojayio.github.io/website/today/fxgl-game-engine-17-released/</guid><description>&lt;p&gt;&lt;a href="https://github.com/AlmasB/FXGL/releases/tag/17" target="_blank" rel="noopener noreferrer"&gt;Version 17&lt;/a&gt;
 of the FXGL game engine brings a number of improvements in many areas. Key changes include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;FXGL source is now built with Java 17 and JavaFX 17.&lt;/li&gt;
&lt;li&gt;The changelog is now automatically generated from commits.&lt;/li&gt;
&lt;li&gt;Animated textures (sprite sheet animations) are now driven by the unified FXGL system, meaning you can use interpolators, play in reverse and many other supported features.&lt;/li&gt;
&lt;li&gt;3D skybox implementation.&lt;/li&gt;
&lt;li&gt;DialogueContext object for storing data that is local to the context in which the dialogue is being run.&lt;/li&gt;
&lt;li&gt;Improvements to avoid various crashes on the Raspberry Pi.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="h2-0-auto-generated-changelog"&gt;Auto-generated Changelog&lt;/h2&gt;
&lt;p&gt;The full changelog is given below.&lt;/p&gt;</description></item><item><title>Announcement: FXGL Game Engine 11.17 Release</title><link>https://foojayio.github.io/website/today/fxgl-game-engine-11-17-release/</link><pubDate>Tue, 20 Jul 2021 11:23:27 +0000</pubDate><guid>https://foojayio.github.io/website/today/fxgl-game-engine-11-17-release/</guid><description>&lt;p&gt;The &lt;a href="https://github.com/AlmasB/FXGL" target="_blank" rel="noopener noreferrer"&gt;FXGL game engine&lt;/a&gt;
 is now at 11.17. Most of the changes in this release focus on internal code quality and fixes.&lt;/p&gt;
&lt;p&gt;Major additions to note:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Added download file API to NetService. Using this API developers can download files from any URL. For example, if certain assets are stored remotely.&lt;/li&gt;
&lt;li&gt;Rotation and scale in 3D now support origin points (pivot points). This is a beneficial addition since some animations will need specific origin points for transformations to achieve the desired effect.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Other minor changes include:&lt;/p&gt;</description></item><item><title>Announcing JavaFX: June 2021 Community Update</title><link>https://foojayio.github.io/website/today/javafx-june-2021-community-update/</link><pubDate>Mon, 21 Jun 2021 08:22:42 +0000</pubDate><guid>https://foojayio.github.io/website/today/javafx-june-2021-community-update/</guid><description>&lt;p&gt;JavaFX is a modern cross-platform open-source UI toolkit for the JVM. It provides a wide range of built-in controls and platform-specific features, such as hardware acceleration. If you have not used JavaFX before, you can get started at &lt;a href="https://openjfx.io/" target="_blank" rel="noopener noreferrer"&gt;openjfx.io&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;In order for any technology to grow and improve, community support and feedback are paramount. To get a general idea of what the community would like to see in JavaFX in the future, I have &lt;a href="https://twitter.com/AlmasBaim/status/1401833314890178566" target="_blank" rel="noopener noreferrer"&gt;asked developers&lt;/a&gt;
 to share their thoughts:&lt;/p&gt;</description></item><item><title>Getting Started with Game Development Basics with FXGL</title><link>https://foojayio.github.io/website/today/game-development-basics-with-fxgl/</link><pubDate>Thu, 17 Jun 2021 08:48:28 +0000</pubDate><guid>https://foojayio.github.io/website/today/game-development-basics-with-fxgl/</guid><description>&lt;p&gt;Game Development is a large field of Computer Science with a lot of underpinning theory behind the concepts and practices used in the industry. In this short article, we will learn some fundamental basics of these concepts, which will be explored within the context of the &lt;a href="https://github.com/AlmasB/FXGL" target="_blank" rel="noopener noreferrer"&gt;FXGL&lt;/a&gt;
 game engine.&lt;/p&gt;
&lt;p&gt;However, the concepts themselves are language-agnostic and engine-agnostic. Please note that the material presented here is deliberately simplified to provide a gentle introduction. Those seeking in-depth coverage are encouraged to pursue further research.&lt;/p&gt;</description></item><item><title>Welcome to the FXGL Game Engine 11.16 Release</title><link>https://foojayio.github.io/website/today/fxgl-game-engine-11-16-release/</link><pubDate>Tue, 25 May 2021 12:10:16 +0000</pubDate><guid>https://foojayio.github.io/website/today/fxgl-game-engine-11-16-release/</guid><description>&lt;p&gt;FXGL is a JavaFX game engine: &lt;a href="https://github.com/AlmasB/FXGL" target="_blank" rel="noopener noreferrer"&gt;https://github.com/AlmasB/FXGL&lt;/a&gt;
&lt;/p&gt;
&lt;h2 id="h2-0-release-highlights"&gt;Release Highlights&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;The restored Multiplayer Service allows easy replications of input, events and entities on a remote machine. For example, by just adding a single line of code (see MultiplayerService API), any key or mouse inputs that occur on one end of the connection can be replicated on the other end.&lt;/li&gt;
&lt;li&gt;The new FPS camera allows easy control of the player (or their &amp;ldquo;line of sight&amp;rdquo;) in the context of a first-person 3D game.&lt;/li&gt;
&lt;li&gt;There is no longer a transitive dependency on the &lt;code&gt;javafx.swing&lt;/code&gt; module. This means FXGL users will not need an extra module in their module graph.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="h2-1-release-notes"&gt;Release Notes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Restored and refactored MultiplayerService&lt;/li&gt;
&lt;li&gt;Added ReplicationEvent (javafx event that can be replicated on a remote machine)&lt;/li&gt;
&lt;li&gt;FPS camera (&lt;code&gt;camera3D.setFPSCamera(true)&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Mouse sensitivity setting&lt;/li&gt;
&lt;li&gt;Removed dependency on &lt;code&gt;javafx.swing&lt;/code&gt; module, thanks to @FDelporte&lt;/li&gt;
&lt;li&gt;Performance improvements in Tiled map loading, thanks to @adambocco&lt;/li&gt;
&lt;li&gt;&lt;code&gt;isExperimental3D&lt;/code&gt; -&amp;gt; &lt;code&gt;3D&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;isExperimentalNative&lt;/code&gt; -&amp;gt; &lt;code&gt;isNative&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Model3D can be loaded from an .obj&lt;/li&gt;
&lt;li&gt;Model3D now has a copy()&lt;/li&gt;
&lt;li&gt;Added Cuboid shape&lt;/li&gt;
&lt;li&gt;EntityGroup::size(), thanks to @adambocco&lt;/li&gt;
&lt;li&gt;Allow providing a custom default cursor for all scenes&lt;/li&gt;
&lt;li&gt;Internal physics refactoring&lt;/li&gt;
&lt;li&gt;Entity no longer throws an exception when adding a duplicate Component (warns instead), thanks to @Zhack47&lt;/li&gt;
&lt;li&gt;JavaFX 15 -&amp;gt; 16&lt;/li&gt;
&lt;li&gt;Compile target for Kotlin: 1.8 -&amp;gt; 11&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="h2-2-video"&gt;Video&lt;/h2&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
			&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/fuDQg7W0v4g?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
		&lt;/div&gt;

&lt;br /&gt;</description></item><item><title>Snake Game with JavaFX FXGL in Three Pair-Programming Sessions</title><link>https://foojayio.github.io/website/today/creating-a-snake-game-with-javafx-fxgl-in-three-pair-programming-sessions/</link><pubDate>Tue, 04 May 2021 07:00:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/creating-a-snake-game-with-javafx-fxgl-in-three-pair-programming-sessions/</guid><description>&lt;p&gt;In this article, Almas and I will show you how to start with an idea for a game and bring it to life in a prototype application. We will then modify the application to run on a Raspberry Pi and on a mobile device.&lt;/p&gt;
&lt;p&gt;To give some background, some time ago my 10y old son challenged me to create a Snake-like game with emojis. He selected the emoji images and I &amp;ldquo;only&amp;rdquo; needed to do the programming bit, the easy part&amp;hellip; Luckily Almas asked me if I had a topic for some pair-programming for his &lt;a href="https://www.youtube.com/channel/UCmjXvUa36DjqCJ1zktXVbUA/videos" target="_blank" rel="noopener noreferrer"&gt;YouTube channel&lt;/a&gt;
, and his question turned into a three-part series. My son is delighted because his idea is now a real game!&lt;/p&gt;</description></item><item><title>Modern JavaFX Game Development with FXGL - Pong</title><link>https://foojayio.github.io/website/today/modern-javafx-game-development-with-fxgl-pong-simple/</link><pubDate>Tue, 27 Apr 2021 07:48:29 +0000</pubDate><guid>https://foojayio.github.io/website/today/modern-javafx-game-development-with-fxgl-pong-simple/</guid><description>&lt;p&gt;In this tutorial we will make a very simple clone of the classic Pong game using the &lt;a href="https://github.com/AlmasB/FXGL" target="_blank" rel="noopener noreferrer"&gt;FXGL game engine&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;We will be using the latest (currently 11.15) version of FXGL via Maven (or Gradle):&lt;/p&gt;
&lt;pre class="EnlighterJSRAW" data-enlighter-language="java"&gt;&amp;lt;dependency&amp;gt;
 &amp;lt;groupId&amp;gt;com.github.almasb&amp;lt;/groupId&amp;gt;
 &amp;lt;artifactId&amp;gt;fxgl&amp;lt;/artifactId&amp;gt;
 &amp;lt;version&amp;gt;11.15&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;&lt;/pre&gt;
&lt;p&gt;The full source code is available at the end of this page. The game will look like this:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://raw.githubusercontent.com/AlmasB/git-server/master/storage/images/fxgl_pong.png" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;Whilst this tutorial is meant to teach basic concepts, building on them will allow us to produce much more &lt;a href="https://youtu.be/yhr1b4061os?t=496" target="_blank" rel="noopener noreferrer"&gt;complex examples&lt;/a&gt;
.&lt;/p&gt;</description></item><item><title>Tips on High Performance Rendering in JavaFX</title><link>https://foojayio.github.io/website/today/high-performance-rendering-in-javafx/</link><pubDate>Mon, 18 Jan 2021 09:07:52 +0000</pubDate><guid>https://foojayio.github.io/website/today/high-performance-rendering-in-javafx/</guid><description>&lt;p&gt;In this article, we comparatively evaluate four different approaches to render particles in JavaFX in terms of runtime performance.&lt;/p&gt;
&lt;p&gt;The approaches are Canvas, PixelBuffer AWT, PixelBuffer CPU and PixelBuffer GPU.&lt;/p&gt;
&lt;p&gt;The evaluation suggests the following order of approaches from fastest to slowest:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;PixelBuffer GPU (fastest).&lt;/li&gt;
&lt;li&gt;PixelBuffer CPU.&lt;/li&gt;
&lt;li&gt;PixelBuffer AWT.&lt;/li&gt;
&lt;li&gt;Canvas (slowest).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;All of the source code developed for this article can be found on &lt;a href="https://github.com/AlmasB/FXGL-FastRender" target="_blank" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;
. An example demo with 1 000 000 particles looks like this:&lt;/p&gt;</description></item><item><title>How to Do Device Monitoring with JavaFX and FXGL</title><link>https://foojayio.github.io/website/today/device-monitoring-with-javafx-and-fxgl/</link><pubDate>Mon, 11 Jan 2021 10:09:21 +0000</pubDate><guid>https://foojayio.github.io/website/today/device-monitoring-with-javafx-and-fxgl/</guid><description>&lt;p&gt;In a previous post &lt;a href="https://foojayio.github.io/website/today/category/java/javafx/"&gt;&amp;ldquo;Getting Started with FXGL Game Development&amp;rdquo;&lt;/a&gt;
 we already have taken a look at the &lt;a href="https://github.com/AlmasB/FXGL" target="_blank" rel="noopener noreferrer"&gt;FXGL game development framework&lt;/a&gt;
 developed by &lt;a href="https://twitter.com/AlmasBaim" target="_blank" rel="noopener noreferrer"&gt;Almas Baimagambetov&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;But, this game engine can also be used for other use cases. In this post, we will be building a system monitoring dashboard, which can run on a Raspberry Pi. The dashboard can be used to keep an eye on any device that can report its state to a queue. And, for me personally, it finally solves the problem of finding the IP addresses of all my Raspberry Pi&amp;rsquo;s when my router decided to shuffle them&amp;hellip; 😉&lt;/p&gt;</description></item><item><title>Getting Started with FXGL Game Development</title><link>https://foojayio.github.io/website/today/getting-started-with-fxgl-game-development/</link><pubDate>Thu, 12 Nov 2020 08:24:54 +0000</pubDate><guid>https://foojayio.github.io/website/today/getting-started-with-fxgl-game-development/</guid><description>&lt;p&gt;&lt;a href="https://github.com/AlmasB/FXGL" target="_blank" rel="noopener noreferrer"&gt;FXGL&lt;/a&gt;
 is a Java, JavaFX and Kotlin Game Library (Engine) made by &lt;a href="https://twitter.com/AlmasBaim" target="_blank" rel="noopener noreferrer"&gt;Almas Baimagambetov&lt;/a&gt;
. As my son (almost 10y) challenged me to make a game during my &amp;ldquo;Corona-stay-at-home-time&amp;rdquo;, I had the luck Almas provided me a getting-started with this detailed step-by-step.&lt;/p&gt;
&lt;p&gt;This will be the end result of this tutorial:&lt;/p&gt;
&lt;p&gt;{{}}&lt;/p&gt;
&lt;p&gt;We will make a &lt;em&gt;very&lt;/em&gt; simple clone of Geometry Wars using &lt;a href="https://github.com/AlmasB/FXGL" target="_blank" rel="noopener noreferrer"&gt;FXGL&lt;/a&gt;
, which is a JavaFX game development framework. You can find &lt;a href="https://github.com/FDelporte/FXGLFirstTest" target="_blank" rel="noopener noreferrer"&gt;the finished project of this post on my GitHub&lt;/a&gt;
 as a Maven project.&lt;/p&gt;</description></item></channel></rss>