I have a soft spot for RPGs and Turn-Based Strategy games, and with the cheap Civ5 purchase a little while back, and pulling out my PSP for some Final Fantasy Tactics in the last couple of weeks, I haven't done much of anything for about a month. I like to think of these distractions as a necessary break when working on projects outside of work, but I do get sucked in a bit too much sometimes.
So, I have a handful of things I wanted to sort out with my Market game.
Framework / Architecture
- Remove the AoP 'Unit of Work' implementation - this is pretty much done, I just need to formalise the new pattern for the UnitOfWork (single EF context/unit of work for each 'public' business method, and a single usage business service)
- Restore the repository layer - specifically to assist with unit testing (EF/Queryable methods are not mockable, at least using moq).
- The Repository has jumped back into my consciousness for two reasons - one, on a new small project I kicked off I plan on doing thorough unit testing, and found that the base EF IDbSet functions cannot be mocked. and two - implementing a null object pattern using EF is not simple, but implementing this logic in the repository is pretty simple.
- Investigation on a dual nHibernate / EF implementation - see how much effort is involved in creating an nHibernateRepository
- Investigation into AutoFac for Dependency Injection / IoC - problems with Unity lifetime behaviours and Bootstrapping may be improved with AutoFac.
- Modify the application actions to use a command pattern, and introduce a server queue for processing.
- Revisit the timed action services (server thinking / working) to produce a more flexible solution
Short Term Functionality
- Implement base (atomic) producer AI
- Implement complex (multiple ingredient) producer AI
- Implement producer (basic and complex) trading AI - buy (ingredients) and sell (created items) orders, basic market analysis/P&L.
- Add market transactions
- Implement a lightswitch asset management application
- Add ships/capacity and item volume
- Add ship cargo
- Add pathfinding
- Add movement
- Add Trading AI (buy/move/sell) - include improved market analysis
So yeah, i should get my ass into gear.