.
Anmeldung | Registrieren | Hilfe

.NET-Blogs Archiv März 2015

5 Punkte für bessere Präsentationen

30.03.2015 06:30:10 | Johnny Graber

Präsentationen und Vorträge vorzubereiten bedeutet meist viel Arbeit. Während Tagen wenn nicht gar Wochen wird an der Vorbereitung intensiv gearbeitet und oft braucht es viel Überwindung um vor das Publikum zu treten. Ich finde es immer schade wenn diese viele Arbeit am Ende in einer Präsentation resultiert, die wegen Kleinigkeiten hinter ihren Möglichkeiten zurückbleibt. Da … 5 Punkte für bessere Präsentationen weiterlesen

Trotz 100 % Business – Schüler auf der CeBIT 2015

26.03.2015 10:58:28 | Mathias Gronau

Das war sie nun, die zweite CeBIT nach der Neuausrichtung der CeBIT als reine B2B-Messe. Mussten sich deshalb private Besucher und Schüler ausgeschlossen fühlen? Einige Aussteller widersprechen einer solchen Argumentation und haben spezielle Programme für Schüler aufgelegt, insbesondere das Hasso-Plattner-Institut (HPI) und der der Branchenverband BITKOM. Beide Aussteller haben Programme für Jugendliche aufgelegt und konnten zusammen mehr als 1.000 Schüler erreichen, die sich für die „CeBIT-Erlebnistage“ angemeldet haben. Etwa die Hälfte der Jugendlichen kamen aus Niedersachsen, Brandenburg, Berlin und Nordrhein-Westfalen. Der Bedarf der Schüler an Führungen über die CeBIT war damit aber noch lange nicht gedeckt. „Wir hätten gut und gerne doppelt so vielen Schülerinnen und Schülern einen individuell gestalteten CeBIT-Erlebnistag bereiten können“, schätzte HPI-Direktor Prof. Christoph Meinel die Nachfrage bei der Anmeldung ein. Allerdings hätten die Kapazitäten der beiden Partner dafür nicht ausgereicht. Sie hatten ursprünglich die Betreuung von 300 interessierten Jugendlichen geplant. Zusätzlich zu den Gruppen registrierte das Hasso-Plattner-Institut den Besuch von rund 500 einzelnen Schülern an seinem Stand D44 in der Forschungs- und Innovationshalle 9 der CeBIT. Das HPI und BITKOM waren bei ihrer gemeinsamen Aktion besonders von den Ausstellern Bundesforschungsministerium, Fraunhofer-Gesellschaft, Fujitsu, IBM, Microsoft, SAP, Samsung und Tesla unterstützt worden. „Der CeBIT-Erlebnistag ist für die Schüler eine hervorragende Möglichkeit, sich über die späteren Berufsfelder und Unternehmen in der Branche zu informieren“, zog HPI-Direktor Prof. Christoph Meinel am Freitag Bilanz. Die digitalisierte Wirtschaft benötige dringend bestens ausgebildete und kreative IT-Spezialisten. „Deshalb haben wir uns dafür engagiert, dass sich der IT-Nachwuchs von der CeBIT nicht abgestoßen, sondern auf ihr willkommen fühlt“, erklärte Meinel. An die CeBIT-Verantwortlichen richtete Meinel „den dringenden Appell, dass in den kommenden Jahren noch stärker auf die Bedürfnis des IT-Nachwuchses eingegangen wird“. Denn die Schüler von heute seien Deutschlands Ingenieure von morgen. „Deshalb müssen wir sie möglichst früh für Informationstechnologie begeistern und es Schülern und Lehrern leichter machen, auf die CeBIT zu kommen“, mahnte Meinel. Die Teilnehmer der CeBIT-Erlebnistage wurden von Informatikstudenten in Gruppen von maximal 15 Teilnehmern zu ausgewählten Ständen bekannter Aussteller geführt und konnten dort mit Fachleuten sprechen. Die Schulklassen-Führungen fanden an jedem Messetag statt und dauerten maximal einen halben Tag. Das individuelle HPI-Angebot für einzeln angemeldete Schüler gab es am 18., 19. und 20. März jeweils von 9:30 bis 17 Uhr.Dieser Artikel wurde nach Informationen des Hasso-Plattner-Instituts erstellt.

Bereit für Windows 10: Das waren die Hardware-Highlights der CeBIT 2015

26.03.2015 10:31:23 | Mathias Gronau

Auch in diesem Jahr stellte Microsoft auf der CeBIT eine breite Palette an Geräten vor, die mit Windows laufen und die in diesem Jahr auch bereit sind für das kommende Windows 10. In der Device Experience Area auf dem Microsoft Stand (A26, Halle 4) erlebten die Besucher Windows-Geräte in allen möglichen Formfaktoren und Größen. Alle vorgestellten Rechner nutzen die Leistungsfähigkeit von Windows 8.1, sind aber auch schon für Windows 10 vorbereitet. TabletsDas neue Lenovo YOGA Tablet 2 kommt mit der AnyPen Technologie und eignet sich so für Produktivität und Entertainment. Der Kickstand lässt sich um 180 Grad für jede Arbeitssituation flexibel einstellen. Mit bis zu 15 Stunden Akkulaufzeit, geht dem neuen Windows 8.1 Tablet zudem so schnell nicht die Kraft aus. Auch ein neues Tablet von Trekstore machte sich auf die Reise nach Hannover. So ist erstmals das schwarz-weiße 8-Zoll-Tablet SurfTab wintron 8.0 mit Windows 8.1, 1 GB RAM und 16 GB integriertem Speicher zu sehen. Geräte, die Eigenschaften von Tablets und Notebooks kombinieren, bieten viele Vorteile. Dell geht nun noch einen Schritt weiter und präsentiert mit Dell Venue 11 Pro aus der 7000er Serie ein 3in1-Gerät: Neben der Mobilität eines Tablet-PCs, und der Leistung eines Ultrabook-Systems mit neuster Core M Prozessor-Generation, bietet das Modell die Benutzerfreundlichkeit eines Desktop-PCs. Die neue 9-Zoll-Tablet-Notebook-Kombination Toshiba Satellite Click Mini besticht durch eine ausdauernde Akku-Laufzeit. Bis zu 16 Stunden Nutzungsdauer bieten die jeweils im Tablet-Element und im Tastatur-Element verbauten Energiespeicher zusammen. Im unteren Preissegment positioniert, richtet sich das Gerät an Einsteiger in die Welt der 2in1-Geräte. 2in1-GeräteSoll es ein Tablet sein oder doch lieber ein Notebook? So genannte 2in1-Geräte nehmen einem die Entscheidung ab, denn sie vereinen die Vorteile beider Welten. Ein Teil besteht aus einem handlichen Touch-Display, der andere aus einer bei Bedarf ansteckbaren Tastatur, wie man sie von Laptops kennt. Nutzer finden in dieser Produktkategorie eine immer breitere Auswahl. Surface Pro 3 ist ein 2in1-Gerät aus dem High-End Segment für den mobilen Einsatz, das die Leistungsfähigkeit und Produktivität eines vollwertigen Laptops mit der Mobilität eines Tablets vereint. Mit seinen 800 g ist es ein echtes Leichtgewicht und eignet sich sowohl für produktives wie auch kreatives Arbeiten von unterwegs. Durch den stufenlos verstellbaren Kickstand und das Surface Pro Type Cover wird das Tablet in wenigen Handgriffen zu einem vollwertigen Laptop. Das hochauflösende 12-Zoll-Display lässt sich sowohl via Touch als auch mit dem drucksensiblen Surface Pen bedienen. Hohe Leistungsstärke und Flexibilität vereint das Business-Convertible Lenovo ThinkPad Helix 2nd Gen. Ausgestattet mit schnellem Prozessor, einer SSD und 8 GB Arbeitsspeicher nimmt es das Gerät auch mit hardwarehungrigen Anwendungen auf. Das Display ist klapp- sowie schwenkbar und lässt sich im Tablet-Modus sogar vollständig von der Tastatur entkoppeln. Damit schlägt es die Brücke zu den 2in1-Geräten. Ein weiterer passender Begleiter für alle Fälle ist das HP Envy x2 mit Windows 8.1 und leistungsstarkem Intel® Core M Prozessor. Mit dem 15,6-Zoll-Gerät kommt der Anwender in den Genuss eines All-in-One, Notebook und Tablet-PCs in einem Gerät. Besonderes Highlight: Mit Beats Audio™ und den zwei Lautsprechern des HP ENVYs x2 bietet […]

DevOps – Entwickelst Du noch oder lieferst Du schon?

25.03.2015 15:13:32 | Christian Binder

in Zusammenarbeit mit der Artiso, möchte ich auf folgende Roadshow hinweisen, die das spannende Thema DevOps aufgreift. DevOps als logische Evolution von Agile nicht nur für Anwendungen im Web – absolut empfehlenswert.

Details unter - http://www.devops.de/

image

Termine der Roadshow:

25.06.2015 München
14.07.2015 Stuttgart
24.09.2015 Köln

Playing around with SignalR 3 and ASP.NET 5

25.03.2015 07:12:00 | Jürgen Gutsch

In einem kleinen Projekt möchte ich ASP.NET 5 und und SignalR nutzen. Es geht darum, Daten die, von einem Sensor kommen, direkt per Web-Socket auf den Client zu publizieren, sobald dieser den Push aktiviert.

In diesem Beitrag geht es nicht um die komplette Implementierung, sondern nur um das einbinden von SignalR in ein einfaches ASP.NET 5 Projekt.

Wie auch der Rest von .NET Core, ist SignalR 3 im Moment (als ich das hier geschrieben habe) in der Beta 3 Verfügbar. Das heißt per NuGet sollte nach der Pre-Releases gesucht werden, wenn man die aktuellen SignalR Pakete laden möchte, die zur .NET Core passen.

SignalR einbinden

Dafür ergänze ich die Referenzen in der project.json um einen weiteren Eintrag

"Microsoft.AspNet.SignalR.Server""3.0.0-*"

Der Platzhalter in der Version garantiert mir, dass ich immer die die letzte Pre-Release Version bekomme. Im Produktivbetrieb wäre es dann wohl eher eine komplette Versionsnummer, die dann ein fertiges Release markiert.

Die komplette Referenzliste sieht bei mir im Moment so aus:

"Kestrel": "1.0.0-beta3",
"Microsoft.AspNet.Diagnostics": "1.0.0-beta3",
"Microsoft.AspNet.Hosting": "1.0.0-beta3",
"Microsoft.AspNet.Mvc": "6.0.0-beta3",
"Microsoft.AspNet.Server.WebListener": "1.0.0-beta3",
"Microsoft.AspNet.StaticFiles": "1.0.0-beta3",
"Microsoft.Framework.ConfigurationModel.Json": "1.0.0-beta3",
"Microsoft.AspNet.SignalR.Server""3.0.0-*"

Während Visual Studio sofort nach dem Speichern der project.json die Referenzen aktualisiert, wird das unter Linux per Hand erledigt. Im aktuellen Projektverzeichnis wird folgender Befehl abgesetzt:

[code language="JScript"]$ kpm restore[/code]

Die Server-Seite

Nun muss SignalR noch aktiviert werden. Dafür muss die Startup.cs bearbeitet werden:

public class Startup
{
    public void Configure(IApplicationBuilder app)
    {
        app.UseErrorPage();
        app.UseStaticFiles();
        app.UseServices(services =>
        {
            services.AddMvc();
            services.AddSignalR(options =>
            {
                options.Hubs.EnableDetailedErrors = true;
            });
        });
        app.UseSignalR();
        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller}/{action}/{id?}",
                defaults: new {controller = "Home", action = "Index"});
        });
        app.UseWelcomePage();
    }
}

Unter UseServices wird SignalR und seine Abhängigkeiten registriert, ebenso werden detaillierte Fehlermeldungen aktiviert.

app.UseSignalR(); fügt die dann benötigte MiddleWare hinzu, die dann für den WebSocket verantwortlich ist.

Für den ersten Start reicht das aus. Der WebSocket ist per Default unter http://localhost:5004/signalr/ erreichbar. Wer das ändern möchte, kann dass in der Methode UseSignalR konfigurieren.

Ab jetzt können SignalR Hubs erstellt werden, die dann auch automatisch erreichbar sind:

[HubName("sensors")]
public class GpioHub : Hub
{
    private static readonly ICollection<string> Users = new Collection<string>(); 

    public GpioHub()
    { 
        StartSendSensorData(); 
    }
    private async void StartSendSensorData() 
    {           
        while (true)
        {
            await Task.Run(() => SendSensorData());

            Thread.Sleep(TimeSpan.FromSeconds(1));
        }
    }

    private void SendSensorData()
    {
        if (!Users.Any())
        {
            return;
        }

        var rnd = new Random();
        var currentSensorData = new
        {
            X = rnd.Next(0, 90),
            Y = rnd.Next(0, 90),
            Z = rnd.Next(0, 90)
        };

        Clients.Clients(Users.ToList()).showessage(currentSensorData);
    }

    public void Enable(string connectionId)
    {
        Users.Add(connectionId);
        Clients.Client(connectionId).enabled();
    }

    public void Disable(string connectionId)
    {
        Users.Remove(connectionId);
        Clients.Client(connectionId).disabled();
    }
}

Die Sensor-Daten hier sind fake und es ist hier auch völlig egal um was für Sensordaten es sich handelt. ;)

Jede Sekunde werden neue Daten erzeugt und an alle Clients gesendet die sich mit Enable() für den Push registriert haben. Wird Disable() aufgerufen, wird der aktuelle User aus der Liste genommen und bekommt keinen Push mehr. Somit kann der User eine Echtzeit-Überwachung eines Sensors aktivieren.

Die Client-Seite

Clientseitig kommt bei mir (wie fast immer) Bootstrap und AngularJS zum Einsatz um eine schnell funktionierende UI zu erhalten. Diese habe ich dieses mal manuell dem Projekt hinzugefügt, da die entsprechenden NuGet Pakete die Datei- und Ordnerstruktur unter Linux nicht anlegen können (Das Paket ist installiert aber die JavaScript Dateien stehen nicht zur Verfügung) und Bower wollte auf die schnelle nicht funktionieren. Das Ziel sollte es aber sein, alle Clientseitigen Pakete über Bower zu installieren.

SignalR auf dem Client benötigt jQuery. Auch das habe ich manuell in das Projekt geholt. Somit habe ich am ande folgende Referenzen in der _Layout.cshtml:

<script src="http://www.aspnetzone.de/Scripts/angular.js"> </script>
<script src="http://www.aspnetzone.de/Scripts/angular-route.js"> </script>
<script src="http://www.aspnetzone.de/scripts/jquery-1.8.2.js"> </script>
<script src="http://www.aspnetzone.de/scripts/jquery.signalr-2.0.3.js"> </script>
<script src="http://www.aspnetzone.de/signalr/js"> </script>

Die letzte Referenz geht auf die SignalR Middleware und stellt die clientseitige API zu unseren WebSockets, sprich zu unserem Hub zur Verfügung.

Weitere Referenzen die hier nicht aufgelistet sind, sind mein AngularJS Modul, die AngularJS Controller, Services, Directives, etc.

In einem SensorController.js halte ich den Zugriff auf den WebSocket per SignalR. Üblicherweise wäre das in einem Service oder einer Factory perfekt aufgehoben.

Zu aller erst wird die Client API aufgebaut über die Methoden des Controllers aufgerufen werden:

var sensors = $.connection.sensors;

$.extend(sensors.client, {
    enabled: function () {
        enabled();
    },
    showessage: function (message) {
        showessage(message);
    },
    disabled: function () {
        disabled();
    }
});

$.connection.hub.start()
    .then(init);

function init() {

}

Nachdem die Verbindung gestartet ist, könnte optional eine weitere Initialisierung stattfinden, auf die ich hier verzichte. Man könnte beispielswese ausgeben, ob der Hub erreichbar ist oder nicht.

Der Rest des Controllers (bei dem die ‘Controller As’ Syntax genutzt wird) könnte dann so aussehen:

var vm = this;
vm.status = "disabled";
vm.data = {
    X: 0,
    Y: 0,
    Z: 0
};
vm.enable = enable;
vm.disable = disable;

function enable() {
    sensors.server.enable($.connection.hub.id);
}
function disable() {
    sensors.server.disable($.connection.hub.id);
}

function enabled() {
    vm.status = "enabled";
    if (!$scope.$$phase) {
        $scope.$apply();
    }
}
function showessage(message) {
    vm.data = message;
    if (!$scope.$$phase) {
        $scope.$apply();
    }
}
function disabled() {
    vm.status = "disabled";
    if (!$scope.$$phase) {
        $scope.$apply();
    }
}

Im Groben war’s das schon. NUn können wir das Web starten, indem wir im Projetverzeichnis $ k kestrel aufrufen.

Das Web ist nun unter http://localhost:5004/ erreichbar. 5004 übrigns ist der Standard-Port, der in den Projekttemplates in der project.json hinterlegt ist.

So kann ich mich nun dran machen die echten Sensoren anzubinden :)

ALM Days 2015 Recordings

24.03.2015 10:55:00 | Christian Binder

Nach dem Event ist vor dem Event und so starte ich, wie auf den ALM Days versprochen, mit dem Link zu den Aufnahmen der Vorträge.

Auf der ALM Days Website - Hier
Auf Ch9 – Hier 

Zudem möchte ich die Gelegenheit nutzen, mich nochmal ganz herzlich für die Teilnahme zu bedanken und hoffe, dass Sie einige Inhaltliche Impulse für sich haben mitnehmen können. Und natürlich würde ich mich freuen, Sie auf den nächsten ALM Days wieder begrüßen zu dürfen.

Chris

40 Tonnen Microsoft: Hole Dir den Microsoft TechTruck kostenfrei auf Dein Event, zu Deiner Firma oder in Deine Gegend

19.03.2015 11:28:26 | Kay Giza

40 Tonnen Microsoft - kostenfrei auf Deinem Event, in Deiner Firma, in Deiner Gegend? Technologie zum Anfassen, Möglichkeiten zum Networking, erstklassige Vorträge und Expertenwissen – das sind nur einige der Vorteile, die ein Besuch im Microsoft TechTruck bietet. Holen Sie sich daher den Microsoft TechTruck kostenfrei! Mehr Informationen, Bilder und weiterführende Infos in diesem Blogeintrag auf Giza-Blog.de [... mehr auf Giza-Blog.de]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
© Copyright 2006-2016 Kay Giza. All rights reserved. Legal

Teilnehmer der Microsoft Office TechCamps berichten - jetzt noch freie Plaetze sichern!

19.03.2015 11:14:10 | Kay Giza

Die Microsoft TechCamps, Hand-on Labs (Level 300) erfreuen sich großer Beliebtheit. Vielen Dank für die große Nachfrage und die tolle Interaktion vor Ort. Tipp: Jetzt schnell einen der freien und kostenfreien Plätze sichern und anmelden, es lohnt sich: http://aka.ms/OfficeTechCamps Teilnehmer der Office TechCamps berichten, ein Auszug aus den Feedbacks... [... mehr auf Giza-Blog.de]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
© Copyright 2006-2016 Kay Giza. All rights reserved. Legal

Windows Phone 8: Keyboard schließen nach Enter

15.03.2015 10:36:23 | Hendrik Loesch

Ich war etwas überrascht als ich mitbekam, dass es keine Suchbox für Windows Phone gibt, immerhin ist diese ja in Windows 8 enthalten. Andererseits hatte ich mit der unter Windows 8 auch nicht so viel Spaß, da sie kein sauberes MVVM zuließ. Besonders interessant war sie eigentlich für mich auch nur deshalb, da ich nach […]

Montag öffnet die CeBIT 2015

14.03.2015 18:31:15 | Mathias Gronau

Montag ist es wieder soweit – die weltweit größte IT-Messe öffnet ihre Pforten für das geneigte Publikum. Seit dem letzten Jahr steht die Messe unter dem Leitspruch „100 % Business“ und in diesem Jahr unter dem Motto d!conomy (eine wie ich meine unmögliche Wortschöpfung, die die beiden Elemente digital und economy enthält). Aber egal. Als die Messegesellschaft für die Veranstaltung 2014 wieder einmal versuchte, die Consumer von der CeBIT fernzuhalten, läutete schon so mancher das Totenglöckchen für die Messe. Ich war von Anfang an der Meinung, dass dies falsch oder zumindest verfrüht ist. Und jetzt bin ich überzeugt, dass die Entwicklung der Messegesellschaft Recht gibt. Immerhin hat die Deutsche Messe AG in diesem Jahr 8.000 Quadratmeter Ausstellungsfläche mehr verkauft als 2014. Einige Aussteller haben ihre Flächen vergrößert, andere sind nach langer Pause wieder am Start und einige sind sogar erstmals auf der CeBIT vertreten. Irgendetwas wird wohl richtig sein am neuen Konzept. Na gut, die Besucherzahlen werden vermutlich nie wieder die Höhen wie vor 20 Jahren erreichen, als es kaum noch möglich war, in weniger als einer halben Stunde von einem Hallenende zum anderen zu kommen. Aber eine überfüllte Halle ist nun mal kein Maßstab für eine erfolgreiche Messe. Ich hatte heute die Gelegenheit, schon einmal einen Rundgang durch die Hallen zu machen und erste Eindrücke von der kommenden Veranstaltung zu sammeln. Sicher ist, dass die CeBIT nicht mehr so laut und bunt wird wie bis 2013. Es gibt halt weniger Entertainment. Das ist die erste gute Nachricht. Microsofts Stand in Halle 4 sieht weitgehend wie im letzten Jahr aus. Er wurde aber (gefühlt) vergrößert und die (von mir vermutete) zusätzliche Fläche wurde nicht mit zusätzlichen Tischen vollgestellt sondern die Besucher haben mehr Platz als im letzten Jahr. Der Besuch auf dem Stand wird damit sicher angenehmer. Auf die Partnerstände, die wie in jedem Jahr einen Großteil der Fläche einnehmen, will und kann ich an dieser Stelle nicht eingehen. Aber das Fließband, an dem Microsoft das Internet der Dinge (I0T) darstellt, hat mich durchaus beeindruckt. Endlich einmal nicht noch eine theoretische Beschreibung des IoT, sondern ein recht gelungener Versuch, das IoT erlebbar zu machen. Ansonsten zeigt Microsoft Windows-Geräte in allen möglichen Formfaktoren und stellt seine Produkte vor. Erstmals gibt es Windows 10 auch nicht nur zum Selbertesten und rumspielen, sondern Microsoft Deutschland spricht auch erstmals darüber. Weshalb das erst jetzt geschieht kann ich mir allerdings nach wie vor nicht erklären. Fujitsu stellt einen 5K-Monitor mit einer Bildschirmdiagonalen von satten 105 Zoll vor. Ja wirklich, einhundertundfünf Zoll. Es ist schon beeindruckend, vor einem so großen Monitor mit einem gestochen scharfen Bild zu stehen, auch wenn das Gerät nicht wirklich für den Einsatz am Schreibtisch geeignet ist, sondern seinen Platz eher in der Werbung am Point of Sale findet. Die wirklich spannenden Exponate habe ich aber in Halle 16 bei code_n gefunden. Dort stellen 50 Startups ihre Produkte für das IoT vor. Kein Lebensbereich wird ausgelassen. Vom Leben mit Diabetes über das Öffnen von Türen per App bis zur Unterstützung von Autofahrern […]

Implementing a timeout in c# with Session/httpContext access

08.03.2015 17:15:25 | Paul Mizel

Eine Erweiterung der Task um Drittsystemen die nötigste Zeit zu geben, falls die Systeme nicht Antworten, geht die Ausführung der Seite weiter, der Kunde bekommt in einer SLA -  Zeit die Webapplication zu sehen. public static class TaskExtensions {     public static async Task TimeoutAfter(this Task task, int millisecondsTimeout)     {         if (task == await Task.WhenAny(task, Task.Delay(millisecondsTimeout)))             await task;         else             throw new TimeoutException();     } }   public class HomeController : Controller {     public class IndexViewModel     {         public DateTime Date { get; set; }     }    public async Task<ActionResult> Index()     {         Session["date"] = DateTime.Now;         IndexViewModel model = null;         try         {             var task=Task.Run<IndexViewModel>(() =>             {                 var result=new IndexViewModel();                 System.Threading.Thread.Sleep(1000);                 result.Date = (DateTime)Session["date"];                 return result;             });             await task.TimeoutAfter(500);             model=task.Result;         }         catch (TimeoutException ex)         {             //Log.Warning("Timeout");         }         return View(model);     }

Decisions, Artificial Intelligence and Finite State Machines in Unity3D

06.03.2015 21:50:00 | Daniel Springwald

After programming my first AI approach for the traffic system I've noticed that the reasons for the decisions of the vehicle are a little bit difficult to observe.

But for the future game I expect far more complex decision systems. So I needed a better debuggable solution than coding in normal C# methods.

After researching some hours I thought that “finite state machines” (FSM) could be a possible approach.

If found some implementations of FSM for Unity3D which were inspiring but not exactly what I needed:

So I decided to write my own finite state machine. It looks like this:

My FSM works by creating an instance of a state object for every available state.
Transitions from this state to the next state are attached to the state. 

For example:
The vehicle should follow another vehicle when touching it´s back bumper bar.
In this case the vehicle is running in the state “stateDrivingOnOthersBackBumperBar”.

As soon as no more touching the back bumper bar the state should be exited and the state “DrivingForward” should be entered.
So a transition “transitionNoMoreBackColliderTouched” has to be attached to the state. 

In code this looks like this:

// Create a new state for driving on others vehicle bumper bar
var
 stateDrivingOnOthersBackBumperBar = new StateDrivingOnOthersBackBumperBar(this); // Define the reason to activate to transition to change to state "DrivingForward" FsmTransition.IsFulfilled noMorebackColliderHit =
() => !this.MyPhysics.GetColliders<VehicleBackCollider>().Any();
// Define "back-collider-ended-touching" transition
var
 transitionNoMoreBackColliderTouched =
new FsmTransition(noMorebackColliderHit, MyFsmStates.DrivingForward) { Order = 1, Name = "no more touching others back-bumper-bar", };
// add Is-no-more-touching-back-collider transition stateDrivingOnOthersBackBumperBar.AddTransition(transitionNoMoreBackColliderTouched);

Ok, now it works in a different way than before. But it still cannot be better observed.

So the next thing I needed was a visual representation of what the finite state machine is “thinking”.

I wrote a Unity3D editor window to display this via a force-directed graph drawing:

 

See the complete FSM in action:


Open ALM: Lösungen mit TFS und VSO integrieren

05.03.2015 16:35:21 | Christian Binder

Open ALM - Das Ziel ist, eine Plattform zu schaffen, welche über Industriestandards einfach erweiterbar ist und somit die Integration anderer Tools und Plattformen ermöglicht.

image

Zu diesem Zweck haben wir, Ulli Stirnweiß (Lead der .NET User Group Franken) und Karsten Kempe (MVP für Visual Studio ALM), das Thema REST API’s, OAuth 2.0 und Service Hooks mit VSO und TFS 2015 näher beleuchtet. Es gibt schon eine ganze Reihe von VSO Integrationen, die auf diesen Industriestandards aufsetzen - eine Übersicht gibt es hier. Unter folgendem Link findet Ihr ein Video zum Einstieg und Blog Posts zu den VSO REST API’s, OAuth 2.0 und Service Hooks.

Chris

Regeln | Impressum