- Open source: The source code is hosted on GitHub, and the project is active. Work with me to improve it.
Free for commercial use: The engine itself uses public domain authorization, which can be used and modified at will.
Simple: Very easy to use, with a high degree of packaging, and you can quickly start developing games.
Complete functions: graphics rendering, text rendering, sound playback, network communication, graphics UI, file package (under development).
Rich examples: dozens of tutorial examples with a lot of annotations; a complete game source code; still being added.
Excellent performance: Compared with many similar 2D engines, more tiles can be rendered in the same time (2-50 times), thanks to the performance of FBGFX.
True 2D: Use pixels as coordinates instead of coordinates converted from 3D, saving the trouble of coordinate calculation.
Unicode and ANSI: Support ANSI, GB2312, Unicode encoding. This part is still being improved and will be fully supported soon.
- Graphics rendering: points, lines, rectangles, circles, etc.
Image rendering: Support BMP, PNG, GIF, JPG, TAG, XGI, etc.
Text rendering: support typesetting, support ttf, xrf, GDI, etc.
GDI interaction: support the creation of GDI layers, and use GDI and GDIPlus to draw images (low performance).
Device input: support keyboard, mouse, joystick.
Network: Based on IOCP technology, it can reach tens of thousands of concurrent, easy-to-use TCP Server, TCP Client, and UDP objects.
GUI: it has a complete typesetting system. With common controls.
File package system: Compress multiple files into a file package, support loading files directly from the file package (under development).
Scene system: greatly reduce the difficulty of game development, specific functions can refer to examples.
Other functions: coordinate system adjustment, view adjustment, screenshots, file reading and writing, etc.
xywh Game Engine is developed using FreeBasic based on the FBGFX library. The audio function is implemented using the BASS library. I pay much attention to performance and file size. This aspect has been well controlled. It is expected that after all functions are completed, the file size can be controlled before compression. Within 500KB.
Small means less coupling, fewer errors, and faster speed.
Version 1.1 has been released, and my focus will be on version 1.2. The milestones for this version are to implement both ANSI and Unicode APIs, the core part will be encoded in Unicode, and the project will be completely refactored to use more scientific management methods and fix hidden bugs. All in all, 1.2 should be a very stable version, and I expect to work on it for 7 days.
2021/01/11 (Ver 1.1 Release)
xui add window user interface element.
New xui usage examples.
IME input method mechanism adjustment.
2021/01/08 (Ver1.1 Release Candidate)
xui add LineEdit user interface element.
Text module add GetTextWidth, GetTextRect, WidthToPos functions.
add ClipBoard module.
add IME interface.
add xStringBuffer class.
Text module functions add txtlen param.
del lzma sdk (Temporarily not used)
xui add ListBox user interface element
xui ScrollView event change
xui export function
ScrollView adds constructor
ScrollBar with triangle icon
xui add Label user interface element
xui add Image user interface element
xui add Frame user interface element
xui add ScrollBar user interface element
xui add ScrollView user interface element
Image property of element base class renamed to DrawBuffer
x and y parameters passed when creating elements will be used for layout offset
DrawBackStyle and DrawBackStyle added xui_ prefix
xui add OnSize event
2020/12/30 (Ver1.1 developing)：
xui naming changes：
Back, which represents the background, is modified to Style
Caption, which represents the title, is modified to Text
new GetFontSize function is added to get the font height
DrawBackStyle and DrawBackStyle_Text are exported to draw the background of the control
Increased responsiveness of game messages, especially in low FPS states
Update LZMA SDK to 19.0
Added for all projects Build.bat For people who don't use fbedit to compile
Parameter sequence adjustment of shape and surface Libraries
Xtank add starter, map editor, module editor
Other minor adjustments and bug fixes
Fixed a serious bug that caused the loading of xgi format pictures and ttf font files to fail.
Added tank battle game code. This game is currently complete, and more functions will be developed in the future.
Added the xui.FreeChilds function, which can directly release the UI elements of the current scene.
Other BUG fixes and adjustments.
The scene system BUG is fixed, and the new scene switching logic is used.
The GUI system is bound to the scene. After the scene is switched, the GUI state will be saved, and different scenes have different root elements.
Added two scene-related examples.
Other BUG fixes and adjustments.
A person's energy is limited. At first, I gave up SDL and a lot of 2D engines and decided to develop it myself. I set out a long development plan for myself. Now I have realized most of it.
Although 2D is lagging behind the times, obviously as an independent developer, it is very rare to be able to control 2D. 3D requires a lot of energy for mathematical calculations. I don't have that much energy, so I only do 2D.
The open source code hopes that this library can be passed on, and that some friends can maintain this library together with me. It still has many features to add, and my development plan has not come to an end.
And the experience of game development tells me that the engine can never keep up with the needs of the game, so I developed a lot of extension interfaces to make the engine as customizable as possible, but it still needs to be constantly updated.
Chinese is my native language. If I want to read and write English, I need to rely on a translator. Therefore, I am not sure if anyone can understand the above words. I try to use English as much as possible for the comments. However, it also increased my workload. Some things may require you to use a translator to translate them into English for reading.
If you have any questions, please email me: firstname.lastname@example.org
Stable version Development package download:
There is currently no publicly tested development version, You can find the latest source code and development resources here, it may be unstable.
Screenshots related to the features of the latest version will be released here, screenshots of earlier versions can be viewed in the third reply.