smudge202 / clean-living Goto Github PK
View Code? Open in Web Editor NEWWalking a mile in the shoes of a game developer.
License: Apache License 2.0
Walking a mile in the shoes of a game developer.
License: Apache License 2.0
I left hat pull request in a bit of a mess (it was getting pretty late) so I want to go through and review it myself. Refactor anything strenuous to read, expand on the unit tests where gaps exists, etc.
Appveyor can build manually but does not seem to be detecting commits across all branches. Is this by design (only dev branch runs)?
Personally I'd prefer CI across all branches.
Currently the build server doesn't introduce compilation symbols, just uses those defined in project properties.
I think both component and integration tests should be enforced in CI.
Requests to engine can:
Later:
We're preaching that comments aren't necessary when code is well structured and named, so should probably be consistent and not follow the AAA comment pattern in test classes
The engine currently (as of PR #11) provides the ability to subscribe for an event type. However, do we need finer grained subscriptions?
For example, imagine the component controlling a bottle of water. It wants to subscribe for when it is consumed; the current structure would only allow for it to subscribe for when anything or at best any drink is consumed.
This might be a non-issue if the same component is responsible for handling the consumption of any drink, but if the components are finer grained, do we need the ability to predicate the events?
We need the ability to track our level of thirst.
Thirst should diminish over time.
Thirst should be replenished by drinking.
The player should be adversely affected by dehydration
The player should have positive effects when thirst is quenched
We have the GameTime
class, but in hindsight I this should either not to be exposed, or exposed but not used by the Engine's API.
Instead, it should probably be IEngine<TTime>
where you specify which Time mechanisms you're using (Gregorian or something custom), and you're expected to provide (or consume if we provide) an interface that can convert between TTime
and GameTime
, which the Engine can then use to work as per current behaviour.
Receiving a subscription for a time that has already passed can be handled in several ways:
For now we have decided Option 2, but add option 3 if it becomes a problem.
The current xunit test runner/discoverer displays test names as the fully qualified name of the class + method name. We'd rather this was just the method name.
This can be achieved with a blank test discoverer returning testcase's with the appropriate naming enum.
We have test attributes in the test helpers project which encompass everything except Theory's.
We need a WithValuesAttribute
and test discoverer capable of running theories.
Capture all IEvent, IRequest (anything inheriting IMessage) and create way of replaying these
We should setup a build server, for... well.. building.
AppVeyor seems a good a choice as any considering this is an open source project, unless there are any objections?
At the point it becomes appropriate we can publish to a NuGet feed, but I don't think that needs to be setup yet.
The GameEngine
class holds IDisposable
's but is not itself IDisposable
.
Address potential racing condition in concurrent STA subscription when disposing subscriptions.
Whilst disposing subscriptions, it is possible for the STA thread to add subscriptions that will not be disposed correctly.
We need to introduce the concept of perspectives as the medium in which UI components view data.
Perspectives are :
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.