Releases: bryanedds/Nu
Important Pure Functional Optimization
Previously, due to my lack of imagination, looking up entities required 3 map look-ups. With the new optimization, only a single look-up is needed, enhancing Nu's baseline performance and scalability significantly.
And that's about it for this release!
Changes in detail -
Using Vmap in Effect. 6dd85cb
Important and significant optimization of Entity updates. a7b29e9
Upgrade to F# 4.0 / .NET 4.6, optimized scalability with persistent hash maps.
Some breaking changes, but likely none any end-user will notice.
Most importantly, (==) was changed from meaning reference equality to just a faster version of equality. If you use this, update your usage appropriately!
Now using a Name type to represent simulant names.
Addresses now use Names rather than NameKeys or strings.
Changes in detail -
Fixed InfinityRpg bug with player changes not being published. … c73bdb7
Upgraded to F# 4.0 / .NET 4.6. 16ec75e
Started working on Vmap. 9c2d2e9
Update NuGame template. … e8741ff
Updated sln file type. 157ee34
Using new primitive F# collection functions where possible. b9645b3
Attempt to optimize Vmap array creation. 01c8ddf
Vmap optimizations from profiling. 09a58b9
Started Address refactoring. ec02a73
Converted to using Name instead of NameKey. c6921c8
Moved Name and Address to Prime. bea4c91
Moved to using Vmap in intended places. 77c4413
Using comparison delegate rather than generic equality for Vmap. 27e067d
Removed laziness from Name hash caching. … 7d34a39
Made (==) a fast eq rather than a ref eq. … 0216bc3
Refactored to using pure ADT-style in Nu.
This is mostly done for my own agenda of fulfilling my thesis of using abstract data types to build sophisticated software.
This release was for me; you'll find nothing interesting in the change list unless you're a maintainer.
Added ability to disable RigidBody facet physics.
An oversight on my part not having done this earlier!
Several bug fixes and MountFacet.
Also includes Relation type that enables relative Addressing.
Effect system is still a WIP.
Changes -
Engine refactoring for additional efficiency and flexibility.
The main breaking changes here is the replacement of the GetRenderDescriptors EntityDispatcher signature with Actualize. Additionally, you may prefer to subscribe to local Update events for simulants now using the syntax (Events.Update ->- entity).
This release paves the way for implement an advanced effects / animation / movie authoring system in Nu, so please pardon the dust!
Additionally, there were some very important bug fixes.
Changes -
More progress on Effect system design. 86ce985
More work on effect system design. a93facb
Now serializing Maps. 65918c2
Got effect serializing. 22a3bf7
Renamed slop to overdraw. … 638c9af
Started work on Effect evaluator. 67661fb
A little more code org. 0064feb
Updated Nu design comments. 78045e2
Lot's more discussion on Nu's design. 937c33a
Removed Aml from FPWorks repository... again :) 762d2c2
Removed moved missing Aml project. 01c8b24
Commit before renames. 2ea4294
Renamed several Nu projects. aa64f95
Fixed Nu template issues. cb3766a
Made NuGame project not expanded upon creation. 251d280
Added local updates for large world scaling. 11a8a56
Some optimization for local updates. 1d06270
More optimization for world size scaling. 28774dc
Merge pull request #96 from bryanedds/development … fac2e6c
Suggested proper fix for unscalable physics. … 05039db
Changed physics TODO to NOTE as the proper solution is to replace the… … 84b0e0c
Removed old code. a2b5edf
Merge pull request #97 from bryanedds/development … f7f2cbf
Implemented Animation.eval. c8d51e2
More work on effect system. b7e94b6
Using new local update optimization. 49f53ee
Working on engine refactor. e21269a
Fixed quad tree collection update bug. b911bf1
Fixed update issue in InfinityRpg. d5b9c0b
Fixed stupid bounds checking bug... 03237d6
Gave default value to Overdraw. 08db01c
Implemented Overflow feature. b94dd53
Merge pull request #98 from bryanedds/development … 8851298
Updated documentation. 524b198
Added ability to turn off entity update and actualize publishing. 543ea4d
Removed Actualize publishing. 559b367
Fixed default OptSpecialization being written out for entities. 0ddb2a2
Enhanced efficiency of BlazeVector tile maps. bdbed75
Cleaned up screen transition code. 482bbd7
Added traces to events. 1bcf3dd
Renamed 'event' bindings to 'evt' to allow for debugging them in VS. d3b10c3
Renamed some binding to make debugging easier. 4b05e29
Merge pull request #100 from bryanedds/development … 623fdec
Fixed event sorting bug. … e7593e6
Merge pull request #101 from bryanedds/development … 087d346
Data format change and Critical Fixes
So, as it turned out my little sexpr syntax used for value notation Nu's serialization format was not usable beyond its intended purpose. That was fine, until it wasn't.
Since I found out it's just going to be too difficult to write an importer for an existing animation package, and not likely very usable, I decided to use said syntax to enable encoding effects in the upcoming Effect system.
What I found out very quickly, however, was that the syntax was too hard to use for this purpose.
So rather than adding an additional syntax (and make everyone's lives worse forever), I decided to fix up the existing syntax. So now instead of specifying a collision expression like this -
[PolygonShape | [0, 0 | 5, 5 | 0, 5] | 0, 0]]
we do the following -
[BodyPolygon [[0 0] [5 5] [0 5]] [0 0]]
- which removes the | that are, in most cases, lexically redundant.
Also, you'll notice that the name of the physic body shape types have changed.
So, if you've got a lot of data, you're going to have to convert it in order to get it to work with the new system. Fortunately, the conversion process is straight-forward. But because this is a data-breaking change, I've ticked the minor version number.
Additionally, there were some critical bug fixes.
Here are the changes in detail -
Fixed AddressConverter bug. … 7c06d21
Started working on Effect system. f345bfd
Fixing notation usage. 16f66e7
Converted IRPG to new notation. b993e8b
Updated documentation. 7d5d6db
Now again working on Effect system. 948492c
Added Nu.init invokation manually. 27589a3
Fixed serious MutantCache bug! X/ 4b225f6
Small enhancements and fixes.
Nothing terrible interesting happened this release. Just minor some clean and bug fixes up before I start working in earnest on a big game project with Nu.
Moved NameKey type into its own file. be87757
Did a couple of overlooked optimizations. e75ee03
Renamed tuple / untuple to curry / uncurry. 2555c25
Fixed a couple of unit tests. f25e819
Using newer style of programming in tests. 1a9d8de
More modernization of test code. c50e1b8
Hid some internal types. 25c9e2f
Fixed some overlooked issues in NuEdit Interactive.fsx. 8c2b7fe
Some internal refactoring. d6595ee
Fix bug in Either type. 83ece5d
Couple of Prime lib augmentations. 6068a41
World.empty value was not appropriate semantics after all, so removed. a32dae6
Selecting target directory before opening NuEdit. d265ad5
Better NuEdit closing behavior. d8cb597
Added purer reactive programming model with OptSpecialization field.
To enable purer Petricek-style programming with Nu, I needed to add a field called OptSpecialization. This allows simulants (other than Game) to be specialized a step further than what's specified by the dispatcher type. Unfortunately, this implies rather a few breaking changes in the simulant creation functions. When you update your calls, make ABSOLUTELY SURE the parameters are in the order they're supposed to be, as there has also been some shuffling of them.
Here are the changes in detail -
Moved Prime operators to their own file. 4d3f631
Changed API of nearly all Simulant creation functions. BREAKING CHANGES 4d3c164
Small API clean up.
Haven't really done much but cleaned up the API a bit. This version sees the removal of the Nu.init () function from the public API since it's now called by the engine automatically.
Also, in an effort to support the best value semantics for Nu's World type, there is now a World.empty value that can be built upon. Not a useful detail for most users, but helps to keep the engine's design on a lofty track.
Gave more value-style semantics to World. Removed Nu.init () BREAKING CHANGE 0d9a936
More work on making World a value. b2dcda9