5.0
版本发布时间: 2023-11-18 20:05:48
raysan5/raylib最新发布版本:5.0(2023-11-18 20:05:48)
It's been 7 months since latest raylib release and 10 years since raylib 1.0 was officially released... what an adventure! In the last 10 years raylib has improved a lot, new functions have been added, many new features and improvements implemented, up to 500 contributors have helped to shape the library as it is today. raylib 5.0
is the final result of all this incredible amount of work and dedication. Here it is the summary with the key features and additions of this NEW major version of raylib.
Some numbers for this release:
- +200 closed issues (for a TOTAL of +1540!)
- +550 commits since previous RELEASE (for a TOTAL of +6950!)
- +35 functions ADDED to raylib API (for a TOTAL of 552!)
- +60 functions REVIEWED/REDESIGNED
- +80 new contributors (for a TOTAL of +500!)
Highlights for raylib 5.0
:
-
rcore
module platform-split: Probably the biggest raylib redesign in the last 10 years. raylib started as a library targeting 3 desktop platforms:Windows
,Linux
andmacOS
(thanks toGLFW
underlying library) but with the years support for several new platforms has been added (Android
,Web
,Rapsberry Pi
,RPI native
...); lot of the platform code was shared so the logic was all together onrcore.c
module, separated by compilation flags. This approach was very handy but also made it very difficult to support new platforms and specially painful for contributors not familiar with the module, navigating +8000 lines of code in a single file. A big redesign was really needed but the amount of work required was humungus and quite scary for a solo-developer like me, moreover considering that everything was working and the chances to break things were really high. Fortunately, some contributors were ready for the task (@ubkp, @michaelfiber, @Bigfoot71) and thanks to their initiative and super-hard work, thercore
platform split has been possible! This new raylib architecture greatly improves the platforms maintenance but also greatly simplifies the addition of new platforms. Aplatforms/rcore_template.c
file is provided with the required structure and functions to be filled for the addition of new platforms, actually it has been simplified to mostly filling some pre-defined functions:InitPlatform()
,ClosePlatform
,PollInputEvents
... Undoubtely, this redesign opens the doors to a new era for raylib, letting the users to plug new platforms as desired. -
NEW
Platform backend supported: SDL: Thanks to the newrcore
platform-split, the addition of new platforms/backends to raylib has been greatly simplified. As a proof of concept,SDL2
platform backend has been added to raylib as an aternative forGLFW
library for desktop builds:platforms/rcore_desktop_sdl
. Lot of work has been put to provide exactly the same features as the other platforms and carefully test the new implementation. NowSDL2
fans can use this new backend, just providing the required include libraries on compilation and linkage (not included in raylib, likeGLFW
).SDL
backend support also eases the process of supporting a wider range of platforms that already supportSDL
. -
NEW
Platform backend supported: Nintendo Switch (closed source): The addition of theSDL
backend was quite a challenge but to really verify the robustness and ease of the new platform plugin system, adding support for a console was a more demanding adventure. Surprisingly, only two days of work were required to add support forNintendo Switch
to raylib! Implementation result showed an outstanding level of simplicity, with a self-contained module (rcore_swith.cpp
) supporting graphics and inputs. Unfortunately this module can not be open-sourced due to licensing restrictions. -
NEW
Splines drawing and evaluation API: A complete set of functions has been added to draw and evaluate different types of splines:Linear
,Basis
,Catmull-Rom
,Quadratic Bezier
andCubic Bezier
. Splines are extremely useful for game development (describe paths, control NPC movement...) but they can also be very useful on tools development (node-conections, elements-movement, 3d modelling, animations...). This was the missing feature on the raylibrshapes
module to make it complete! Note thatrshapes
module can also be used independently of raylib just providing the only 6 functions required for vertex definition and drawing. -
NEW
Pseudo-random numbers generator: rprand: After several years of users asking for this missing piece, a brand new pseudo-random generator module has been added to raylib.rprand
implements theXoshiro128**
algorithm combined withSplitMix64
, specially suited for fast software pseudo-random numbers generation. The module also implies some useful functions to generate non-repetitive random numbers sequences, functionality exposed by raylib. usage of this module can be controlled by a compilation flag, in case the default libcrand()
function was preferred. -
NEW
Automation Events System API: This new system was first added inraylib 4.0
as an experimental feature but it was a bit clumsy and there was no API exposed to users. For the newraylib 5.0
the system has been redesigned and proper API added for the users. With this new events automation system, users can record input events for later replay, very useful feature for testing automation, tutorials generation, assisted game playing, in-game cinematics, speedruns saving or even AI assited game playing! -
NEW
raygui 4.0
: The official raylib immediate-mode gui library designed for tools development has been updated to a new version, aligned with raylib 5.0. This new version is a complete redesign of raygui to unify all controls structure and usage, now all controls have the same function signature!.raygui
has been battle-tested with the development of +12 published tools in the last few years. The tools can be seen and used for free in the raylib technologies tools page. Worth mentioning that several of those tools have been open sourced for anyone to use, compile, contribute or learn how the code works. -
NEW
raylib web examples functionality: Beside the addition of several new examples, the web examples functionality has been improved. Examples have been organized by complexity level, marked with one star for simple examples and up to 4 stars for more complex ones. A new option has been added to web to allow to filter examples by function-name usage, to ease the learning process when looking for an usage example of some function. Finally, open-graph metadata information has been added to all examples individual webpages, improving a the visuals and information when sharing those webpages on social networks, sharing the example screenshot and details.
As always, those are only some highlights of the new raylib 5.0
but there is many more improvements! Support for 16-bit HDR images/textures, SVG loading and scaling support, new OpenGL ES 3.0 graphic backend, new image gradient generators, sound alias loading, improved 3d models loading, multiple optimizations, new bindings, CodeQL integration and much more!
Make sure to check raylib CHANGELOG for a detailed list of changes!
Undoubtely, this is the biggest raylib update in 10 years. Many new features and improvements with a special focus on maintainabiliy and long-term sustainability. Undoubtely, this is the raylib of the future.
Enjoy programming! :)
New Contributors
- @Koromix made their first contribution in https://github.com/raysan5/raylib/pull/2968
- @Webfra made their first contribution in https://github.com/raysan5/raylib/pull/2972
- @eltociear made their first contribution in https://github.com/raysan5/raylib/pull/2976
- @devmanso made their first contribution in https://github.com/raysan5/raylib/pull/2977
- @gingerBill made their first contribution in https://github.com/raysan5/raylib/pull/2981
- @jarroddavis68 made their first contribution in https://github.com/raysan5/raylib/pull/2983
- @RicoP made their first contribution in https://github.com/raysan5/raylib/pull/2982
- @chocolate42 made their first contribution in https://github.com/raysan5/raylib/pull/2997
- @eternalStudent made their first contribution in https://github.com/raysan5/raylib/pull/3006
- @benjamin-thomas made their first contribution in https://github.com/raysan5/raylib/pull/3014
- @RadsammyT made their first contribution in https://github.com/raysan5/raylib/pull/3013
- @Soutaisei made their first contribution in https://github.com/raysan5/raylib/pull/3017
- @szsam made their first contribution in https://github.com/raysan5/raylib/pull/3021
- @kolunmi made their first contribution in https://github.com/raysan5/raylib/pull/3031
- @Bigfoot71 made their first contribution in https://github.com/raysan5/raylib/pull/3032
- @Stopfield made their first contribution in https://github.com/raysan5/raylib/pull/3033
- @nullstare made their first contribution in https://github.com/raysan5/raylib/pull/3043
- @Gamer-Kold made their first contribution in https://github.com/raysan5/raylib/pull/3045
- @alfredbaudisch made their first contribution in https://github.com/raysan5/raylib/pull/3044
- @Shoozza made their first contribution in https://github.com/raysan5/raylib/pull/3048
- @manuel5975p made their first contribution in https://github.com/raysan5/raylib/pull/3052
- @lesleyrs made their first contribution in https://github.com/raysan5/raylib/pull/3062
- @hamyyy made their first contribution in https://github.com/raysan5/raylib/pull/3058
- @crynux made their first contribution in https://github.com/raysan5/raylib/pull/3065
- @PixelPhobicGames made their first contribution in https://github.com/raysan5/raylib/pull/3066
- @danemadsen made their first contribution in https://github.com/raysan5/raylib/pull/3074
- @Luramoth made their first contribution in https://github.com/raysan5/raylib/pull/3079
- @jasonliang-dev made their first contribution in https://github.com/raysan5/raylib/pull/3082
- @archydragon made their first contribution in https://github.com/raysan5/raylib/pull/3083
- @rayit made their first contribution in https://github.com/raysan5/raylib/pull/3085
- @yujiri8 made their first contribution in https://github.com/raysan5/raylib/pull/3090
- @TheLastBilly made their first contribution in https://github.com/raysan5/raylib/pull/3091
- @chemaguerra made their first contribution in https://github.com/raysan5/raylib/pull/3107
- @dantecatalfamo made their first contribution in https://github.com/raysan5/raylib/pull/3115
- @Gisteron made their first contribution in https://github.com/raysan5/raylib/pull/3150
- @ewpratten made their first contribution in https://github.com/raysan5/raylib/pull/3164
- @superxkooda made their first contribution in https://github.com/raysan5/raylib/pull/3176
- @RokasPuzonas made their first contribution in https://github.com/raysan5/raylib/pull/3181
- @AlbertoGP made their first contribution in https://github.com/raysan5/raylib/pull/3186
- @danilwhale made their first contribution in https://github.com/raysan5/raylib/pull/3189
- @smalltimewizard made their first contribution in https://github.com/raysan5/raylib/pull/3185
- @jakubvf made their first contribution in https://github.com/raysan5/raylib/pull/3191
- @bohonghuang made their first contribution in https://github.com/raysan5/raylib/pull/3203
- @ndytts made their first contribution in https://github.com/raysan5/raylib/pull/3211
- @mode777 made their first contribution in https://github.com/raysan5/raylib/pull/3212
- @kassane made their first contribution in https://github.com/raysan5/raylib/pull/3214
- @VitusVeit made their first contribution in https://github.com/raysan5/raylib/pull/3222
- @mohad12211 made their first contribution in https://github.com/raysan5/raylib/pull/3230
- @actondev made their first contribution in https://github.com/raysan5/raylib/pull/3254
- @asdqwe made their first contribution in https://github.com/raysan5/raylib/pull/3258
- @Dial0 made their first contribution in https://github.com/raysan5/raylib/pull/3263
- @n77y made their first contribution in https://github.com/raysan5/raylib/pull/3256
- @branc116 made their first contribution in https://github.com/raysan5/raylib/pull/3261
- @jbarthelmes made their first contribution in https://github.com/raysan5/raylib/pull/3283
- @SuperUserNameMan made their first contribution in https://github.com/raysan5/raylib/pull/3296
- @vushu made their first contribution in https://github.com/raysan5/raylib/pull/3299
- @gabrielssanches made their first contribution in https://github.com/raysan5/raylib/pull/3298
- @wilsonsilva made their first contribution in https://github.com/raysan5/raylib/pull/3318
- @Codom made their first contribution in https://github.com/raysan5/raylib/pull/3321
- @WraithGlade made their first contribution in https://github.com/raysan5/raylib/pull/3350
- @thechampagne made their first contribution in https://github.com/raysan5/raylib/pull/3358
- @blueloveTH made their first contribution in https://github.com/raysan5/raylib/pull/3361
- @luis605 made their first contribution in https://github.com/raysan5/raylib/pull/3353
- @DaveH355 made their first contribution in https://github.com/raysan5/raylib/pull/3363
- @purple4pur made their first contribution in https://github.com/raysan5/raylib/pull/3393
- @Murlocohol made their first contribution in https://github.com/raysan5/raylib/pull/3394
- @BabakSamimi made their first contribution in https://github.com/raysan5/raylib/pull/3403
- @KislyjKisel made their first contribution in https://github.com/raysan5/raylib/pull/3405
- @BeardedBread made their first contribution in https://github.com/raysan5/raylib/pull/3414
- @bluesillybeard made their first contribution in https://github.com/raysan5/raylib/pull/3417
- @jcorks made their first contribution in https://github.com/raysan5/raylib/pull/3427
- @neyrox made their first contribution in https://github.com/raysan5/raylib/pull/3425
- @rexim made their first contribution in https://github.com/raysan5/raylib/pull/3434
- @keithstellyes made their first contribution in https://github.com/raysan5/raylib/pull/3449
- @gk646 made their first contribution in https://github.com/raysan5/raylib/pull/3458
- @2Bear made their first contribution in https://github.com/raysan5/raylib/pull/3469
- @M374LX made their first contribution in https://github.com/raysan5/raylib/pull/3468
- @jestarray made their first contribution in https://github.com/raysan5/raylib/pull/3464
- @khalid586 made their first contribution in https://github.com/raysan5/raylib/pull/3477
- @JaanDev made their first contribution in https://github.com/raysan5/raylib/pull/3483
- @JettMonstersGoBoom made their first contribution in https://github.com/raysan5/raylib/pull/3490
- @27justin made their first contribution in https://github.com/raysan5/raylib/pull/3496
- @Techuuu made their first contribution in https://github.com/raysan5/raylib/pull/3495
- @cabarger made their first contribution in https://github.com/raysan5/raylib/pull/3501
- @AndreaBoroni made their first contribution in https://github.com/raysan5/raylib/pull/3505
- @freakmangd made their first contribution in https://github.com/raysan5/raylib/pull/3506
- @glowiak made their first contribution in https://github.com/raysan5/raylib/pull/3508
- @icy-comet made their first contribution in https://github.com/raysan5/raylib/pull/3511
- @b4yuan made their first contribution in https://github.com/raysan5/raylib/pull/3476
- @awfulcooking made their first contribution in https://github.com/raysan5/raylib/pull/3514
- @maksut made their first contribution in https://github.com/raysan5/raylib/pull/3518
- @mmilenkov made their first contribution in https://github.com/raysan5/raylib/pull/3519
- @isaacgravenortechnologies made their first contribution in https://github.com/raysan5/raylib/pull/3525
Full Changelog: https://github.com/raysan5/raylib/compare/4.5.0...5.0
1、 raylib-5.0_linux_amd64.tar.gz 1.76MB
2、 raylib-5.0_linux_i386.tar.gz 1021.34KB
3、 raylib-5.0_macos.tar.gz 2.96MB
4、 raylib-5.0_webassembly.zip 572.35KB
5、 raylib-5.0_win32_mingw-w64.zip 789.43KB
6、 raylib-5.0_win32_msvc16.zip 3.56MB
7、 raylib-5.0_win64_mingw-w64.zip 1.56MB
8、 raylib-5.0_win64_msvc16.zip 2.4MB