[Bug] Auswahl der Hauptdatei

ZeroByte
Beiträge: 25
Registriert: Mi 14. Sep 2011, 21:08

Re: [Bug] Auswahl der Hauptdatei

Beitragvon ZeroByte » Fr 28. Okt 2011, 19:49

Hardwarenaher Programmierung? C? ASM? cool :D
Welche Richtung genau? eigenes OS/Exploits/Treiber?
GPU's => Stream, CUDA oder OpenCL? Was haste darauf genau gerechnet?

Guck dir mal TCP::Iostream von Boost an. Nix gegen deine Library aber je unbekannter und selten verwendeter eine Library ist, desto mehr Probleme wirst du damit haben *prophezei* ;)

@npau: Aller Augen ruhen auf dir 8-)

MfG

mind_in_a_box
Beiträge: 15
Registriert: Mi 31. Aug 2011, 19:26

Re: [Bug] Auswahl der Hauptdatei

Beitragvon mind_in_a_box » Sa 29. Okt 2011, 12:14

http://www.moddb.com/engines/wtech
Es wird. ^^

Mit Hardwarenähe meine ich nicht direkt auf dem Metall zu programmieren. Es bedeutet auch sich um z.B. Cache-freundlichkeit Gedanken zu machen.
Was GPU angeht siehst du ja was ich auf der rechnen lasse. Alles was die Grafikprogrammierung so her gibt. VertexShader, PixelShader, GeometryShader, und DirectCompute.
Schade, dass wir in der SC nichts auf der GPU machen können... Und schade, dass es nicht um realtimerendering geht ;)

Guck dir mal TCP::Iostream von Boost an. Nix gegen deine Library aber je unbekannter und selten verwendeter eine Library ist, desto mehr Probleme wirst du damit haben *prophezei* ;)


Danke für den Tipp! Ich hatte nicht vor das ding komplett zu übernehmen, ich habe lediglich eine mögliche Lösung für das Problem gesucht. Dass BOOST auch sowas hat war ja klar ;)

ZeroByte
Beiträge: 25
Registriert: Mi 14. Sep 2011, 21:08

Re: [Bug] Auswahl der Hauptdatei

Beitragvon ZeroByte » Sa 29. Okt 2011, 20:58

Wenn du willst, kannst du meinen Code benutzen:

Connection.h:

Code: Alles auswählen

#ifndef CONNECTION_H
#define CONNECTION_H

#include <vector>
#include <string>
#include <fstream>

#include <boost/array.hpp>
#include <boost/asio.hpp>

using boost::asio::ip::tcp;

class Connection{

    protected:

        //basic IO-Service Object
        boost::asio::io_service io_service;

        //Service-Resolver, enables usage of hostnames/domains (pass port as service identifier)
        tcp::resolver resolver;

        //Socket object to use the io_service
        tcp::socket socket;

        //Necessary runtime variables
        boost::system::error_code error;
        std::vector<char> buffer;
        std::string host, service;

        std::ofstream log;

    public:

        Connection(const std::string host, const std::string service):
            // Bind Resolver and Socket to basic IO-Service object
            resolver(io_service),
            socket(io_service),
            // Size of buffer determines the size of each fragment boost will read from the socket
            buffer(100),
            host(host),
            service(service),
            log("log.txt")
            {}

        void connect();

        /**
         *  Readys everything from the socket
         */
        std::string readAll();

        void write(const std::string out);

};

#endif


Connection.cpp:

Code: Alles auswählen

#include "Connection.h"

#include <vector>

void Connection::connect(){
    //Retrieve the service using the resolver
    tcp::resolver::query query(host, service);
    tcp::resolver::iterator endpoint_iterator = resolver.resolve(query);

    //Connect to the service
    boost::asio::connect(socket, endpoint_iterator);
}


std::string Connection::readAll(){
    static std::string buf("");
    std::string ret(buf);
    unsigned int read = 1;

    std::string delimiter("</room>");

    while(ret.find(delimiter) == ret.npos){
        read = socket.read_some(boost::asio::buffer(buffer), error);
        buffer.push_back('\0');
        ret.append(buffer.begin(), buffer.begin() + read );

        //closed connection - game over
        if (error == boost::asio::error::eof){
            break;
        }
        else if (error){
            throw boost::system::system_error(error); // Some other error.
        }
    }
    int pos = ret.find(delimiter);
    if(pos != ret.npos){
        buf = ret.substr(pos + delimiter.size());
        ret = ret.substr(0, pos + delimiter.size());
    }

    ret = std::string("<tmpRoot>")+ret+std::string("</tmpRoot>");

    //log<<ret<<std::endl;;
    std::cout<<ret<<std::endl;

    return ret;

}

void Connection::write(const std::string out){
    boost::asio::write(socket, boost::asio::buffer(out));
    std::cout<<">>"<<out<<std::endl;
}



Ist nicht besonders schön, funktioniert aber :)

Mit GPUs hab ich noch nie was gemacht - GPGPU's hatte ich nich nie und Shader hab ich noch nie verwendet (bin an der GUI hängen geblieben bzw. dabei, die Win32API zu wrappen).


MfG

SvenK
Beiträge: 114
Registriert: Mo 17. Okt 2011, 08:40

Re: [Bug] Auswahl der Hauptdatei

Beitragvon SvenK » Mo 31. Okt 2011, 12:13

Die Hauptdatei eines Computerspielers kann jetzt wieder ausgewaehlt werden.

npau
Beiträge: 9
Registriert: Di 9. Aug 2011, 10:49

Re: [Bug] Auswahl der Hauptdatei

Beitragvon npau » Mi 2. Nov 2011, 21:09

Um das XML Problem habe ich mich nun auch endlich gekümmert. Ab der nächsten Serverversion sollte bei abgeleiteten Build- und SelectMoves das XML genau so aussehen, wie bei den normalen, sodass auch das obige Testszenario mit MyMove funktioniert.

Gruß Niklas