LD48 LynxJS Post-Mortem

I’ve already written a post-mortem about what I personally learned from LD#27 and creating my first entry, Food court hell. However, I haven’t gone over what I’ve learned that will affect the future of my engine, LynxJS. After much thought and consideration here’s what I’ve decided is important to LynxJS development.

LynxJS is ready to make games

Originally I advised people against trying LynxJS as I thought it was extremely buggy, and basically useless. However, I would not have been able to complete the dare had I not used this library. I saved quite a bit of time compared to if I had simply prototyped a game with pure javascript, and much of my work was already done for me in terms of collisions, object handling and asset management. LynxJS, though a small library of only 1500 lines of code, is capable of game creation. That being said…

LynxJS is not ready to make games

A little contradictory, but it’s the truth. Though Lynx is capable of making the prototyping process easier and faster, it still isn’t ready to go beyond just that. I found that with my library it was still missing some basic features that I’ve overlooked, including collision settings, a better collision detection algorithm, and no ability whatsoever to go beyond the prototype phase. It may have simplified my development, but there were too many instances where the library had hindered me more than helped me. Lynx was originally designed with no specific targets defined. My goal was to create an engine that worked, not worked well.

In all fairness, Lynx has a long way on a short road to go before it could be considered a true game engine, which is something I will be working on over the next few weeks.

The future of LynxJS

Immediate changes:

Right now, the biggest problem I’ve found is that I haven’t completed the classes I’ve already created. Collision detection is buggy and overpowered, IO is not nearly finished and requires more precise events, and mouse support isn’t even added. At the moment, my plans are to touch up IO and Time classes, and I’m going to add components before changing collision from a built in class to a supported component. What that means is that this presents the opportunity for either myself or other developers to create collision components to help cut down collision checks and better algorithms to perform said checks, while still allowing the core to handle the onCollide event subscriptions.

While collision is being pushed to a supported component, it isn’t the only class that will be making that transition. Both the developer tools and Map classes will be converted to components. This is in an effort to reduce bandwidth and load times to be minimal, and both tools have instances where the classes would not be used.

Future Changes:

With these changes in place, Lynx will become a more dynamic library, loading only what it needs to while remaining powerful and efficient. Lynx-CORE will be the only file you need to directly include in your applications, and a simple import command will handle anything else you need. I’m still looking into ways to make this even simpler so these plans are subject to change, but overall the goal is to keep Lynx simple and to make Lynx as powerful as possible.

After the above changes have been completed, Lynx will be at an alpha milestone and I will open the community, where hopefully developers will come together to help with library changes, creating components, and showcase their creations. I’ll also begin working on a visual editor for Lynx games to help simplify the process.

What to expect:

Honestly you shouldn’t expect much from Lynx in the near future. As a (somewhat starving) full time server, I don’t get too much time to work on my favorite projects. Another problem is since I’m working on this mostly by myself, I don’t have many people I can run ideas by/decide how things should work with. I’m looking for more people to join the LynxJS team, but I’m not expecting much considering it’s much harder to find a team for something that isn’t well established. LynxJS probably won’t become viable until at least early 2014.

If you are interested in contributing to the development, you’re welcome to send me a short message on twitter and I’ll get back with ways you can help. I’ll also be revamping my personal website as well as pushing these changes to the LynxJS website within the next week.

Thanks for reading, and best of luck in your future game creation endeavors!

-Cosrnos