Releases: bryanedds/Nu
Added Group Tabs in NuEdit. First post-1.0 API changes (and some bug fixes).
Also can run NuEdit and play with scripted changes via F# Interactive.
Be mindful the small but important breaking API changes! You will have to adjust your code some!
Changes -
Added group tabs to NuEdit. … 614099b
Renamed World.tryMake to attemptMake to follow the new code standard. BREAKING CHANGE 05825d9
Renamed World.init () to Nu.init (). BREAKING CHANGE 955fcb8
Fixed body physics exception swallowing bug. d3847b5
Improved NuEdit from repl. 1fbd899
Removed ability for '/'s to get into address names. … e44ef74
Fixed bug where Screen.EntityTree was being persisted. bdc59de
EntityTree switch-over bug fix. 9b3f75b
Major bug fix for 'NuEdit Undo / Redo Destabilized in V1.0 #53'.
So, for the inevitable arrogance of release v1.0 of anything, I am punished with a severe bug that I did not at all anticipate. Fortunately, the fix was easy and quick!
Also included are some little changes that happened post-1.0.0.0.
Fixed issue with field not being omnipresent in InfinityRpg. ac2f977
Updated documentation. 57f31c1
Fixed 'NuEdit Undo / Redo Destabilized in V1.0 #53'. d539820
Finally, Nu Game Engine v1.0.0.0!
Over two years in the making, and 1700 commits, the world's first practical, pure functional game engine, the Nu Game Engine, releases v1.0.0.0! This release offers a greater guarantee of API stability than could be offered before.
I am hoping that Nu Game Engine will usher us toward an era of sustainable game development, because developer's lives matter, too! And if a game is torture to develop, its play experience isn't going to reach its potential.
Now that the days of being able to statically lay out the memory for an entire game are gone, it's time for developers to consider an alternative lifestyle where dynamism is a tool to be leveraged rather than eschewed.
Nu proves the efficacy and efficiency of game development with a pure functional API. Nu proves that hardcore optimizations like data-oriented physics engines, mutable spatial trees, and other machine-sympathetic data structures can be used transparently underneath a purely functional API.
Further, Nu proves that declarative programming style is also viable and sufficiently efficient for modern game development - https://github.com/bryanedds/FPWorks/blob/master/Nu/Documentation/Iterative%20Functional%20Reactive%20Programming%20with%20the%20Nu%20Game%20Engine.pdf?raw=true
Whether or not people adopt Nu, I hope to at least offer it as proof that the prejudice against dynamism and functional programming in games at a high level is obsolete. And for those who don't believe, it's time to break out your profilers!
It's time for game developers to start having as much fun as we did so many years ago before we got run over by unbounded complexity!
Changes this release -
Did the minimum needed to enable Petricek-style repl'ing. b2cfcd2
Improved opt simulant getter error messages. 66a5d11
Fixed error-reporting issue. e58e370
Fixed entity querying bug. af82421
Adopted NCoC. 7fe2460
Fixed several entity tree problems. fe4b627
Renamed Integrator to PhysicsEngine. BREAKING CHANGES 05162cb
Did some TODOs. 20b11df
Almost finished normalizing collision expressions... BREAKING CHANGES e0de369
Nu Game Engine, v1.0.0.0. 6e52984
Release v0.999m - NuEdit cut / copy / paste fix.
Release v0.999k - Rendering optimization with QuadTree.
To prove the efficiency of a purely functional game engine, I've implemented an imperative quadtree to dramatically improve the scalability of Nu's performance.
Work toward a practical v1.0 release continues apace!
Changes -
Added Aml back into repository. 1cc8118
Fixed a couple lingering errors in Aml. a678a7e
Renamed A Modular Language to A Meta-Language. 76c3fb7
Renamed subscribe and publish functions. BREAKING CHANGES ffa88b7
Renamed subscribeWithUnsub to subscribePlus. BREAKING CHANGES 43216b0
Refactor of SDL. BREAKING CHANGES 51f00de
Resumed work on QuadTree. 0ee5414
Added some QuadTree tests. e21ca24
Started implementing Quadtree in earnest. 2b1c5be
Updating EntityTree where appropriate. 0e7bca9
More quadtree implementation. db1bc5e
More work on Quadtree. c7d5970
Fixed perf leak in BlazeVector. 337d996
Removed space leak from MutantCache. afd77cc
Some optimizations. d50e467
Fixed perf bug in mutant cache. 8c207f7
Some perf improvements. e15ba5e
Additional perf improvement. b0dc26e
A couple more optimizations. b1cd979
MutantCache fix. 661ebe2
Cleaned up MutantCache. 5c8de95
More work on Quadtree. 2847b20
QuadTree fully implemented. … 39a51fc
Release v0.999j - PDF quality fixes.
Previous release had an issue with PDF legibility due to low-quality export. This is fixed.
Release v0.999i - API simplification.
Looking over Nu's usage in its sample games, I decided that the API warranted further simplification. This release implements that.
Changes (including some breaking) -
Removed Aml from repository. baf51ad
Renamed events. 926c8bd
Some naming fixes. 06ce151
Renamed Proxies to Simulants. de48ba7
Made World ADT a little more testable. 9578ac8
Made user state more intention-revealing in unit tests. f18795c
Renamed === to == and added new === operator. 4ea6b17
Improved testability of World further. 5c32648
Renamed EventAddresses to Events. … 04bfe1a
Added operators for Simulant type. bf649cd
Attempted to improve debugging experience. a6622b2
Replaced use of (<|) with (^). c1e2354
Simplified proxying. b26890b
Removed unnecessary proxying in irpg. d59a2b0
Revamped BlazeVector with new proxying style. 201d15e
Improved proxy operators. 007f254
Improved proxy operators. 3e870c1
Release v0.999h - Design and code clean-up.
Nothing really interesting in this release, just some shoring up of long-standing, small design issues. I figure it's best for everyone to get on latest, none the less. The changes do make the API much more discoverable, too.
Cheers!
Release v0.999g - Optimization, Fixes, and Clean-Up
This is a maintenance release with important optimizations and fixes, with some small breaking changes where listed below.
Fixed NuPipe args error message. 5d72256
Fixed broken unit test. 3da6488
Fixed Camera.mouseToLocal implementation. 869ffa1
Renamed Camera.mouseToLocal to mouseToEntity. BREAKING CHANGE …
Added Center getter / setter to Entity. ef74280
Added appropriate finalization in resource allocators - don't know why I didn't think to do this before... edde1c3
Better exit handling. 5a24f74
Attempt to increase resolution of internal timing. 036b217
Added high-resolution time stamps in a hopefully cross-platform way. f6b93ec
Implemented PLATFORM_AGNOSTIC_TIMESTAMPING. 0452d1a
Removed a likely bug in InfinityRpg. f23ad02
Added spin waiting. 25784d1
Started working on caching system. 9160cfa
First pass at cache optimization. f636ec2
Another optimization pass on entity state caching. ff9eb96
Got cache optimization working (I think...). fb8d96f
More principle key equality for entity state caching. dd630a9
More work on cache optimization. e2a843e
More work on caching optimization. df3daf5
Small optimizations. e02f9ec
Made NameKey and Address hashing lazy.
Removed Names field of Address, replacing with NameKeys. BREAKING CHANGE d410dae
Cleaned up naming in Address.fs. a5c3f71
Added MutantCache.fs. 405adb6
Made subsystems into Abstract Data Types. 46ddd1a
Added new branch 'development' so that pull requests no longer need to come from master. c2c876e
Fixed bug with FarseerPhysics blowing away objects spawned in the same place, and thus removed FarseerCautionMode boolean parameter in World.tryMake. BREAKING CHANGE e094304
Encapsulated SimulantState fields. 5f0a63e
Encapsulated WorldState type. 77885fb
Fixed editor crash. 346f387
Working on making simulant state types encapsulatable. 4f53543
Added some documentation about simulant state types. 0bb944c
Improved MutantCache. 9762b59
Improved MutantCache.getMutant implementation. 783cac6
Better comments for MutantCache. cef8679
Better encapsulation of global metrics. 9b94064
Made global metrics public. b38ec59
Moved Xtension to Prime. 8ccd875
Put overlay stuff into a single file. 0a83201