Need to integrate Unity output to TinCan API? - unity3d

I have developed a serious game(learning game) in Unity. I would like the game to be TinCan compliant. Can somebody tell me about the processes involved in making it TinCan compliant?

Tin Can compliancy doesn't really have a specific technical meaning, in so far as it can be tested objectively. Having said that, if your content tracks its experience (learning) data in a Learning Record Store (LRS), specifically a "conformant" LRS (see test suites or ask your vendor) then that content would generally be considered "Tin Can Compliant" because it is up to the LRS to enforce the requirements in the specification itself.
We (Rustici Software) have published a number of open source libraries that can be used to assist developers in communicating with an LRS in a conformant way, one or more of them can be used in a Unity application, and the list can be found at http://experienceapi.com/libraries/. There are several LRSs that are generally considered to be spec conformant, and our Cloud based product provides a free for testing LRS.

Here is a simple Unity game example sending a xAPI statement
https://github.com/HT2-Labs/unity-xapi
It is sending one xAPI statement from Start() at game initialization.
To make this example work:
git clone locally Unity example from github
add it to your local Unity hub
there will be warning about Unity old version of the example, select whatever Unity version you use and confirm version upgrade
open TinCanTest.cs in Visual Studio, change
string endpoint = "https://ORG_NAME.learninglocker.net/data/xAPI";
string user = "KEY";
string password = "SECRET";
to credentials of your LRS and try running the game.
A similar stackoverflow question.

Related

Unity SCORM Suspend_Data issue

I am working on a serious game project on Unity for a client that must be playable on a browser and compatible with SCORM.
I discovered the concept of SCORM and LMS with this project.
I made an internal backup system, with a JSON file, which works very well when I build for PC, my score saves well and when I restart my project, I can load my backup.
Unfortunately when I build in WebGL and publish to the SCORM Cloud website, the save and load information doesn't pass.
I found on the internet that I should use suspend_data functions, I did find the description of its functions, but I can't find how to send or retrieve my score.
I must have a problem in the conversion of JSON in string.
Can you help me with this, or give me a hint.
I thank you in advance.
Sincerely
There might be a couple different issues at play here.
First off, I'm not sure that SCORM Cloud allows for the Unity Player mime type today. That could be verified with a request to support#scorm.com and it may be able to be added if it isn't currently supported.
Second, how are you communicating with the SCORM API? When a SCORM course is launched in the player, there is a javascript API exposed with some basic calls you need to make. This is where you'd set completion or a score (or suspend_data if needed) and it tells the LMS what data to persist for the learner session and makes values available from previous launches if set to resume.
This won't happen automatically, so you need to handle that in your Unity package with either a wrapper, or some javascript calls to the proper context from within the package.
Hopefully all this is helpful for your understanding of SCORM. Feel free to reach out to support#scorm.com since you're using SCORM Cloud and they can help you if you need more information.
Note: I work for Rustici Software on the SCORM Cloud team and have some light Unity experience.

Tin Can API for Unity3D and Android [duplicate]

I have developed a serious game(learning game) in Unity. I would like the game to be TinCan compliant. Can somebody tell me about the processes involved in making it TinCan compliant?
Tin Can compliancy doesn't really have a specific technical meaning, in so far as it can be tested objectively. Having said that, if your content tracks its experience (learning) data in a Learning Record Store (LRS), specifically a "conformant" LRS (see test suites or ask your vendor) then that content would generally be considered "Tin Can Compliant" because it is up to the LRS to enforce the requirements in the specification itself.
We (Rustici Software) have published a number of open source libraries that can be used to assist developers in communicating with an LRS in a conformant way, one or more of them can be used in a Unity application, and the list can be found at http://experienceapi.com/libraries/. There are several LRSs that are generally considered to be spec conformant, and our Cloud based product provides a free for testing LRS.
Here is a simple Unity game example sending a xAPI statement
https://github.com/HT2-Labs/unity-xapi
It is sending one xAPI statement from Start() at game initialization.
To make this example work:
git clone locally Unity example from github
add it to your local Unity hub
there will be warning about Unity old version of the example, select whatever Unity version you use and confirm version upgrade
open TinCanTest.cs in Visual Studio, change
string endpoint = "https://ORG_NAME.learninglocker.net/data/xAPI";
string user = "KEY";
string password = "SECRET";
to credentials of your LRS and try running the game.
A similar stackoverflow question.

understanding microsoft bot platform

My company has started looking into using a platform to generate chat bots, we came across microsoft's framework and are considering using it. we have a few concerns that we need to understand better about their product and would appreciate it if you could help us.
1) What kind of support do they give us when using Facebook messenger compared to what facebook gives natively? things like quick answer or image sending, buttons on the messages? do they support any of that?
2) We would like if you could elaborate exactly what the platform may give us and why we should use it, what we need is to keep all our logic in our servers and have a platform that will interact with all the messengers for us and keep us from coding to each a different code.
3) like question 1 but for telegram and any other messenger? (custom keyboards and stuff like that).
thanks for the help!
Thanks #ejadib
Regarding your second question, your bots logic does stay within your bot and your servers. The Bot Framework provides three things:
1) Connectivity services between your bot and the channels your users are on. All of the logic continues to reside in your bot.
2) Optionally - Bot Building SDK's you can use to facilitate dialog within your bot. These are SDK's you would code to, but still deploy to your own servers.
3) A directory where you could optionally publish your bot.
As #ejadib says, where we can be consistent across channels we add functionality to the core API; and where functionality is very specific to a channel we expose it through the ChannelData property of the C# SDK (SourceEvent in Node).
Regarding 1 and 3, if you want to be able to take advantage of special features or concepts for a channel (Facebook/Telegram) BotFramework provide a way for you to send native metadata to that channel giving you much deeper control over how your bot interacts on a channel. The way you do this is to pass extra properties via the ChannelData property (in C#).
Some things are already supported in the framework, for example Rich Cards will render differently depending on the channel.
Here you will find the information (including Facebook and Telegram).
Also, here you can find how for example you can use things like quick replies.

SMB/samba support on iOS?

I check iOS document and also google it for a while and get the impression that iOS does not support samba (although there is a samba app for jailbreak iPhone).
But then how do the app FileBrowser achieves that? Does that mean they implemented samba support by their own ?
I also find there is an open source library called tango that provides limited support for samba. So my question is that the best samba support I can get ?
I spent quite some time in implementing my own SMB client so I would like to share some experience here.
First do not use tango in your production code because once you become familiar with SMB you will realize that its implementation is problematic, e.g. it does not support unicode and in some several cases it is not correctly padding so you can't access the folder. And I also heard people said they can't connect window 7 with it.
Second, to summarize my experience I find jcifs guys had said the best: "anyone who wants to implement the CIFS needs to know one very important thing - the "official" CIFS documentation is not accurate
and does not reflect reality. There is NO specification. Do not believe anything you read in the IETF draft or the SNIA document (same document different formatting). Use it only as a hint. The definitive reference is whatever you see on the wire.
WireShark Rules!
... look at JCIFS for design inspiration such as how it puts the request and response into a map by MID and encodes and decodes frames.
Then implement the following commands:
SMB_COM_NEGOTIATE
SMB_COM_SESSION_SETUP_ANDX
SMB_COM_TREE_CONNECT_ANDX
SMB_COM_NT_CREATE_ANDX
SMB_COM_READ_ANDX
SMB_COM_WRITE_ANDX
SMB_COM_CLOSE
all responses for above
"
The only thing I can add is that , you also need to implement TRANS2_FIND_FIRST2 request/response to query the files inside a folder and if you want to find out how many shared folders the server exposes you need to implement NetShareEnum Request/Response.
I used libsmbclient from samba package (http://www.samba.org) for SMB operations on iOS.
You can look on my project https://github.com/kolyvan/kxsmb (objective-c wrapper on libsmbclient). For now it supports a limited set of SMB operations. It mostly was designed for browsing local net and retrieving files from SMB shares.
iOS doesn't give you access to a filesystem that you may be used to. You can read and write files inside your own App's private area, but that's all. You could potentially implement another file system in your application, but you won't be able to use normal file operations.
I'd bet FileBrowser implements the protocol inside their app and implements a file system like layer on top of that for access. I'd guess you could either try to port an existing samba library or roll your own.
iOS does not have any APIs to work with SMB. However, SMB is currently documented by Microsoft and implementing it is not impossible (although not easy too). I've created a freeware project which contains most of what you need to handle SMB. See
https://sourceforge.net/projects/smb4ios/

Does an Alcatel Genesys simulator/emulator exist?

Me and my team were tasked to integrate our application with Alcatel Genesys call center, but we don't have access to a proper instalation nor equipment (like, for instance, phones).
Is there some kind of software I can use to simulate such environment to test our application? And where should I begin researching how to do this integration?
(PS: I posted this same question on https://serverfault.com/questions/308381 - I didn't exactly know which of the sites this really belongs to).
Doesn't look like there is a public one. You would probably have to go through one of their product managers.
The Genesys Platform SDK documentation appears to be public though:
http://docs.genesyslab.com/Documentation/PSDK
The good news - you do not need phones to test integration with Genesys. The bad news is that integrating requires quite a lot of components and is quite complicated so there is no simulator or mock interface you could use. One of the best ways would be to get in contact with Genesys tech support who are usually quite helpful or pre-sales and ask them about access to a virtual demo image you could use for integration.
Also a great resource of information is their newly designed doc site:
http://docs.genesys.com/Documentation/OS
Also Alcatel has sold Genesys a while ago and they're independent now, just in case ;-)
Actually there is. Genesys Simulator Toolkit. It will enable to emulate an Avaya PBX or a Simple TDM scenario. Last version also includes as Genesys SIP Server emultaor.
You won't care too much about the PBX on the other side for basic integrations, your goal is to learn the SDK and the TEvents (TLib). You can achieve this with the Emulator. You need to ask it to a Genesys representative.