Just found out that [OptionalFieldAttribute] does not work on Mono, and therefore on Unity 😦
Actually a new field in a class should not throw any error messages on older applications using older versions of this class.
But unfortunately it does throw an error on Mono and there is no way of preventing that on the older applications 😦
Here some links about it:
How it should work
Nice info on how to handle optional fields
Another fellow having the same issue
and if you are still curios about it, BinaryFormatter.AssemblyFormat
The “smoothing” algorithm used in the image recognition now can help the game improve its car physics!
With a better interpretation of the hand drawn racing track, it is possible to generate an improved car physics such as the “rolling friction” on fast curves.
Basically it is the amount of speed reduced when the car takes the curve too fast, drifting a little. This makes the car loose speed which can be used to improve the pilot performance or it can make the car take the curve slower than it could be done.
That depends on the shape and length of the curve. Gotta use it wisely! 😉
This version is a HUGE improvement! Now it is possible to create the track inside the game. No need for the SlotLeague Tracker app anymore.
The track creation has actually been improved to generate much smoother tracks and now it works on iOS, Android, Windows, MAC and Facebook Gameroom!
The image recognition has been improved to identify ANY color of ink, and it will work even on ball point pen! As long as your pen is not failing too much 😉 It does need a continuous single outline to be correctly identified as a racing track.
And there is a new official ranking track! Track number 6! Try it! A real beautiful track! The layout was designed by a lot of guys that love slot cars and SlotLeague Time Trials got the permission to publish it along the game!
The video above shows how the smoothing algorithm can improve significantly the Catmull-Rom calculation of points identified by image recognition…
(to be continued)…
Next version 1.1.0 will have a new menu on the track panel of the game (swiping right the main menu panel).
It will be possible to download new tracks from the Facebook Group, Select which one you want to play (from created and downloaded tracks) and now it will be possible to create new tracks!
The Android App “SlotLeague Tracker” can already identify hand drawn sketches of racing tracks and publish on Facebook for everyone to download.
“So if there is an Android app for that, why bother creating a new menu?”
For two reasons! First, because it is a LOT easier if the option is already on the game! Second, because it is a much IMPROVED process!!
Now even ball point colored pen can be used on any simple white stock sheet of paper! Besides, the track identification goes under a “smoothing” process of the track points.
This means that even though a hand drawn track does not have a high level of precision (such as an SVG editor can) the smoothing process tries to ignore imperfections and make the curves smooth and consistent with the other curves and straights of the track!
On the featured image above, the track is hand drawn and the new menu is used to create it on the game track database. On the top left there is a picture of the identified points which are used to render the “smoothed” track. Blue points mean those points that define the racing track. The white points are added in order to help the math formula to calculate the smoothed points better!
Unfortunately both limitation of SlotLeague Tracker still remain: 1) cannot create tracks which intersect itself (“8” shaped tracks) and 2) cannot create tracks with variant height points, such as the “First SVG” track officially numbered 1.
There is only one issue being corrected and tested and this next week, version 1.1.0 will be released! Let’s start drawing slot car tracks!
There are many improvements to be made to the game. Those will be released as soon as tested. New game mode, better rendering, performances improvements, all will be released before version 2.0 😉
So, it is already time for version 1.0.1! What has been changed:
- The track loading time has been greatly improved
- User made tracks are now validated to prevent basic rendering errors
- Menu logic simplified
Every time the player selected a new scene, when coming back to the main menu the whole process of loading and generating the track was performed. This was kinda annoying after a few menu clicks…
The game has been improved to keep the last rendered track on memory, and only starts a new loading process if the current track has changed.
User generated tracks
It is possible to create tracks where some turns are too close from other turns. This gives no room for rendering the track or the game objects around it. Now there is a validation of the track before saving it.
It is hard to find a way of explaining the two race modes and how they differ from each other. Specially when in a casual game the player does not feel like reading text right?
So instead of showing text messages and relying that the user will read them and interpret each one, now the game decides what is probably the best scene to be launched.
For instance, if you have selected a new track, then the game automatically starts a time trial on that track, instead of going to the main menu and doing nothing until the user chooses “time trial” or “ranked race”.
This menu logic has been changed thanks to the players feedback!
There are a few steps I have to take before archiving the app in order to update the App Store version of SlotLeague Time Trials.
After building the XCode project in Unity, first thing I do is to update the “pods” generated by Unity 3D.
In my game I have two “CocoaPods”, Google AdMob and AdColony (video reward provider). So I open a Terminal window, “cd” to the xcodeproject directory and type “pod update”. This is the first step 😉
Second step is changing a few properties of the XCode project that must not have the default values generated by Unity. What I change is the Deployment target and Architecture.
Selecting the Project Navigator and then the project. Click on the “General” tab.
The deployment target comes with a default value of 7.0 ( because I did not know I could change it on unity… my bad 😳 ), but this version of XCode only allows a minimal version of 8.0, so I changed it.
Now, on the “Build settings” tab I can find the selected architecture. In order to generate an app for all processors supported I need to change it to “Standard architectures” (there is a Unity configuration for this but it failed).
Time to take all the tests on my “Test book” and if they are successful, time to archive it and then upload to the App Store, that would be all but the Xcode project is being generated with two issues that the App Store rejects.
- Missing Info.plist key, NSCalendarsUsageDescription:
<string>Ads might ask to access the calendar</string>
- Missing Push Notification Entitlement, Classes/Preprocessor.h
#define UNITY_USES_REMOTE_NOTIFICATIONS 0
Change the above line in order to end with 0 instead of 1.