Releases: Ybalrid/Annwvyn
Annwvyn Experimental 0.2.1 Happily Refactoring!
Annwvyn 0.2.1
This is an API breaking release, as more or less everything until 0.3 will be.
The goal is to refactor AnnEngine into separate modules. The AnnEngine object is too much of a god object, and that's no good for obvious architectural reason. Plus this class is getting too complex and I had no idea on top of my head in what order the game internal systems were refreshed.
So I'm doing some refactoring work. I'm moving methods from AnnEngine to new classes.
The "Annwvyn SubSystem" framework is the new way Annwvyn functionalities have to be implemented. AnnEngine will instantiate it's subsystems at init time (as always)
The subsystem are stored in an std::list, and they are processed in that order, both during refresh and during engine destruction. Some of them are inter-dependent (this is a bit annoying, I have to think about it) so they have to be created in a somewhat rigid order.
Moving things inside the list will change the initialization order, update order and deletion order.
Changelog:
- Removed AnnTools
- Distance function useless because AnnVect3 has it's own
- stringToPhyShapeType has been moved to the only piece of code it's used in (XML reader)
- Fixed clean-up of OgreOculusRender where a shared pointer wasn't put to NULL
- GameObjects uses AudioSources instead of ALuints (raw OpenAL handles)
- AnnLightObject uses type descriptor defined by Annwvyn (Directional light, Point Light, or Spot Light)
- Created macros to get address of all Annwvyn subsystems
- Corected console display with VS2015 toolkit
- Added colored output on console
- App now quit when ovrSessionStatus.ShouldQuit is true
- App now stop running when user wants to get back to Oculus Home
- loadBuffer logging don't tell "Error : No Error" when loading some OGG files
- SubSystem base class for all sub systems (audio, physics, event, object management, resource management...=
- AnnEngine::Refresh() now goes through the list of sub systems instead of doing the refresh one by one
- AnnEngine destructor code simplified and cleaned. Because content are stored in lists instead of vector, there's no need of using the old "deletion queue"
- Added a ResourceManager class. Code to add resource to application is no longer part of AnnEngine
- Added a GameObjectManager class. Code to create, destroy, fetch and update state of GameObject is no longer part of AnnEngine
This is already enough significant changes to call this a release. Engine is still not "real game developement ready" but it's definitively nicer.
I expect to finish cleaning AnnEngine in the next few weeks. Some changes aren't as straightforward as the "game object manager" and the "resource manager". They are still functionality that I'm not sure about where to put it.
Annwvyn Experimental 0.2
After almost a month of work, here's 0.2,
This release uses OVR 1.3.2 and is compatible with both Oculus Consumer hardware and Dev Kit 2.
The Annwvyn SDK will be updated shortly after some dependency and build problems with Visual Studio 2015 are fully resolved (it's almost working).
Here's a changelog:
- Deprecated methods from 0.1.2 have been removed.
- Minor changes to subsystem intialisation.
- "VisualBody" is gone for good.
- "Player jump" is gone for good. No more vomit button in the "default" controll scheme.
- Lights are proper Annwvyn LightObject. API still need work, but it going in the right way.
- PCH have been updated, Should impove build times in Visual studio.
- Annwvyn application are now aware of the current "Session status".
- Splash screen is aware of the visibility state of the app in HMD.
- Reorient is called when Oculus SDK hint to do it.
- CORE.zip is lighter.
- AudioEngine now logs the current OpenAL version and vendor string.
- Debug Window is now placed at the upper left of the screen, instead of letting windows do whatever with it.
- Code comments and documentation have been slightly improved.
- Partial support of VS2015 toolset, there is some issues to fix. Next releas will use VS2015 Comunity as main platform
VS2015 issues:
- OpenConsle has been deactivated because it was preventing bullet from stepping the simulation (weird) and because the output stream were not redirected anyway
- Sometimes, on some run of the program, the render does not appear on the RenderTexture. This is also weird.
- The solution and project files are ported for VS2010 Express. Maybe starting from a cleaner base will be recomended...
- DO NOT MIX v110 and v140 toolsets! It create much strangeness.
Stuff on the todolist:
- Make it run with Visual Studio 2015 Comunity and update binary SDK
- Object holds OpenAL audio buffer and sources. They should hold Annwvyn Audio Sources managed by the AudioEngine instead
- The collision feedback code is a dodgy mess and should be redone
- The animation state system of GameObject is really really poor
- The trigger system could use Bullet Physics to detect collision.
Annwvyn Experimental 0.1.2
This release adds:
- Update to Oculus 1.3 and support for CV1 hardware (and DK2)
- The code uses the new Oculus' terminology (hmd -> session, etc)
- OgreOculusRender now only uses C style data types
- OgreOculusRender now manualy delete Oculus "TextureSwapChain" and "MirrorTexture" instead or relying on OVR automatic cleanup.
- Fixed a bug : "addGameObject", "addLightObject", etc... from a Level wasn't registering to the content list
- Fixed a bug : When switching between debug view types, the viewport background color wasn't refreshed
- OgreOculusRender header file was cleaned. Legacy member are gone and some better naming has been done
- The code will set the Oculus Perfomance HUD to "off" at renderer shutdown
- Proper comments for AnnColor class
- Added error code "ANN_ERR_NOTINIT". The program will return this code at an initialization order error
Due to evolutions on the platform:
- DK1 support has been broken by the runtime
- Linux specific code was based on 0.5 runtime. Since Linux is not supported by Oculus for now, most of linux relative code has been removed.
Roadmap to 0.2:
- Remove all DEPRECATED api
- Asure that the direct public API of the engine is only using Annwvyn data types for colors, vectors, quaternions, etc.
Annwvyn Experimental 0.1.1
Changelog :
- Fixed audio loading and fetching performance
- Started marking as deprecated methods that will be gone in 0.2
- Made setter/getter names more consistent (e.g. setPosition/getPosition instead of setPos/getPos)
- Added a TextInputer object to get string of text typed by the keyboard as string object
- Removed from the engine self use of "deprecated" methods
- Rewrote some comments consistancy for Doxygen
- Droped the use of m_ prefix for marking members
- Added methofd to get frame update time
- Added monoscopic debug output
- Debug window is monoscopic by default
- Monoscopic FOV is 90 by default
- Added class to represent color
- Switched to use custom class for representing a light source
No need to update SDK. Just git pull and compile.
Every deprecated method will not be usable with 0.2
Roadmap for 0.2:
- Review the Ogre initialisation code. the OgreOculusRender class is confusing.
- Put all linux legacy to the attic.
- Remove all deprecated methods
- Inforce the public API to not use Ogre data types.
- Assure compatibility with Rift CV1
Annwvyn Experimental 0.1
Complete SDK and source code for this release can be downloaded here.
I think Annwvyn is starting to be usable to make actual real little games. It's now possible to write gameplay in a not clunky way thanks to a proper event subscribe system. So it's possible to make things happen, which is something.
I still have to write a bunch of documentation. Also I have to revisit the AnnGameObject class. There are points that needs improvements here. And I think the next thing I'll work on is implementing classes for a state machine.
Changes
- Switched to Oculus Runtime 0.8.0.0-beta
- 64 bits on windows (linux support is broken. Maintaning support for the Oculus 0.5 runtime needs extra work)
- Debug output uses Oculus mirror textures or the intermediate render buffer instead of re-rendering the scene of the computer monitor
- Implemented Oculus Perfomance HUD
- New 'save file' data storage
- Can save and read data to files created under the User's home directory
- Data is stored on disk as plaintext "key=value" simple, stupid format
- Data is stored on memory as a "std::map<std::string, std::string>" for each file. 1st of each pair is key, 2nd of each pair is value
- You can create a class that will reinterpret the text data into whatever you want
- Data interpreter has pre-build convertion for "int", "float", "vector3" and "quaternion" data type
- Save data is keept as cache on memory, you do disk I/O only when you call the FileReader and FileWriter worker objects
- Improved event system
- Time event
- Trigger in/out event
- Added tick() method to the listener. Called once a frame.
- Can get input from multiple Joystick
- Can get an unique ID and a "vendor string" from the stick event
- Extendable spatial trigger system
- Trigger volume can be a box, or anything you want if you subclass the trigger.
- Improved Level subsystem
- Triggers can be part of a level content
- An XML level format is mostly implemented but not "usable" yet.
- Splash screen (as images on a giant curved screen) are now possible. They are implemented as levels and have a timer that will "jump" to the next level after how many seconds you want.
- Audio Engine can manage audio sources that aren't part of a GameObject
- Improved code readability
- Constructors systematicaly uses initialization list
- Use of C++11 style iterators in for loops
- Remove code that refer to old Oculus SDKs
- Every Create/Destroy method for objects, lights, etc... uses the **same naming conventions*
- OgreOculusRender::RenderOneFrame has ben re-factored into two methods "updateTracking()" and "renderAndSubmitFrame()"
- Misc good stuff
- Internal object storage is done using the "list" template instead of "vector". This is good in many ways I will not get into here
- World's background color can be changed
- Defined a series of error code that can be returned to the OS when an fatal initialization error occurs
- Ogre should clean up just fine without causing a breakpoint related to the heap
- Improved Doxygen comments.
- The VS2012 solution uses filters to better organise the code source
- An AnnVect3/AnnQuat object can tell you if it's flagged as invalid. Like retrived from a broken "SaveFile"
- Engine refresh() method is _WAY simpler_ thanks to the improvement above (list vs vector + refactored render call)
Annwvyn Experimental 0.0.10
Annwvyn Experimental feature_level 10
(first developement milestone. yay \o/)
This release is compatilbe on Windows with OVR runtime and SDK v.0.6.0.0-beta.
Supports:
- Rendering for the Oculus Rift DevKit 2 (1 should works too) compatible with Direct-to-HMD mode
- Physics rigid body simulation and collision detection
- Panned spatialization of sound
- Dynamic level managerment
- User input as event management
- Default input scheme FPS-like (WASD + mouse for moving around. Supports an xbox 360 controller-like on Windows)
- Spherical-geometric trigger object
- Partial compatibility with Linux using SDK 0.5.0.1-beta. Linux developement is put aside for lack of support by the Oculus SDK
More informations at http://annwvyn.org
You can ask question about this project at [email protected]