Step by Step help absolute beginners

Options
maddy
maddy ✭✭
edited August 2010 in DotNet
Hi ...

I've been working on a game using XNA Framework. And i reached a junction where i need multiplayer support.
And im a complete newbie wrt to Networking and stuff....

Please help me in setting up the basic stuff, so that i can integrate the multiplayer support to my game.
I have seen the document section which i ofund in the downloaded SDK folder, as well as online on the exit games forum, also i have seen the videos to start the server and stuff ...... honestly it has not helped me much (no offence) ... as i've mentioned, im a complete newbie wrt to multiplayer stuff., so please bear with my queries below. I would love to compile all this as a tutorial for the newbies like me for the XNA community , if i can gather enough info to start with, so i seek your help in this regard. Now to the queries ....


What currently we are able to do with the current help ...
1. Installed photon .... and using the task bar icon, i've started the server ....

Now, what i need to understand and be able to do is this
1. Setup a server side script in c# ... from within an XNA project ...( its fine if i have to create this part as a seperate dll project, as long as i can reference it from within XNA game )
a. what this script should be able to do is, when ever the client sends a request (client sends a number, and a string). String points to the function() listed in the
    script, and the number is sent as a parameter to that function, the result that comes from the function is sent back to the client. In the current case, i would like to see, the server be able to double the number the client sends.
    Server Side Code
    OnInitialize() { ... }
    OnDestroy() { ... }
    On_Recieved_A_Client_Request(string request, int number )
    {
      if(request == "DoubleTheNumber") {
      requestedClient.SendBackResult( number * 2 );
    } }

    i would also like to see the server to be able to continously broadcast to all the clients some information ,
    ex : say the server is continously trying to update all the clients with current time ....
    So, how do we do that, is there a Update() loop of some sort predefined? if not, how do we handle it?

    Now, once i've written such a code, how do i deploy this in the server ...... a local server where i can test using the free version., and i should be able to move it to production server without any difficulties at a later time.
    Do, i have to compile the server side code into a dll or something, or do i just copy the above c# file somewhere in the server? ......... in anycase, how to do it., step by step?

    Ok, say now we deployed the server app, that does the above tasks, now how about calling it from within XNA ......
    1 ........ what all references do i need to add to the project? (currently im using XNA 3.1 ...)
    2. Once the references are added, ...... do we need to setup any login information into the server? or can we connect to it just by calling connect or something ....
    In Any case, how to do that in C# , in XNA ?

    3. Once such setup is done, i would like to call the below functionality within the game ....

    ex: CLient side code ....
    int number = 10;
    within XNA's Update() loop ......
    {
    number = server.sendRequest( "DoubleTheNumber", number);
    print 'number' to the screen in beautiful colours;
    }

    ............

    Please help as much as you can, if you can provide the actual steps ......... pls dont just say read the documents, or google it. Thanks for understanding.
    Also, is there a online chat option for us aswell? ..... coz explaining and asking these questions can be daunting for both people like me, and also for the gurus who would want to answer these queries ?

    thanks in advance :)

    Comments

    • dreamora
      Options
      I would recommend you to download the server sdk and the dotnet client sdk and toy with them and read the documentations that come with the client and then revise above posting to make any meaning.

      I doubt anyone will be interested to help you at all if you throw around xna references which are of less than 0 interest, while you clearly have avoided to give the code or docs a look at all.
    • maddy
      maddy ✭✭
      Options
      dear dreamora ....

      its for people like you i wrote that last para .... thanks for ur insight anyway!
    • dreamora
      Options
      I am aware of that last part.
      But I fear nobody can give you any insight and pointers if you are not aware of even the basic of Photon.
      The code to get you going in a practical way instead of the theoretical (docs) is already written and accessable there for you to look at in the Lite server application C# solution and the corresponding DotNet client SDK C# solution.

      I recommended to look at that basic example so you get at least a basic understanding on the matter.
      The DotNet client SDK (Lite) is as simple as it can be and once you have given it a try you will understand why I mentioned it and also gain a lot of knowledge at no effort.

      You talk about stuff throughout your whole posting that has no relevance or existance at all in Photon. Photon does not use the XNA networking nor is it even compatible with it (actually it does not even use .NET for networking on the server side at all, its a C++ server, the socket server), and its architecture is also not 1 : 1 comparable to plain simple network layers like sockets or lidgren.

      The other reason why you must have a basic picture is cause even a on the surface step by step is a matter of several pages++ of text, which is to the vast majority of people just boring and nothing you write out of the nowhere in an understandable way.


      EDIT: There are two youtube video tutorials on photon from ExitGames which you might have a look at too if you haven't, though the first one on installation is potentially no longer needed :)
    • dreamora
      Options
      But lets get down a few basics for you so you get a feel for why your part about "don't send me to docs" is more an insult than anything else basically which heavily influenced the postings.
      Also for a few things you can not avoid it not even if hell freezes, as the command documentation is only in there and the client documentation pdf also contains the informations on the supported data types for sending cause you can't send freeform data!

      But lets get a few infos down so you have a starting base for the experimentation with the lite game

      1. DotNet client SDK means the Photon-DotNet SDK you find online, then in there the demo-realtime folder and solution


      2. I'm assuming that you have a distinct game session based environment, in which case your work will likely build upon extending the Lite Application, so lets get a few basics down on how the networking in general works. This is in no way complete but it should support you pretty well

      Communication
      Operations: Operations are requests the clients sends and which are handled and processed by the server and cause code to run on the server for some matter (join, logout and alike)
      The base of operations is the Dispatcher. As you will likely expand upon the Lite environment, you will have an extended Dispatcher that handles your Operations and if they aren't yours / of interest to you, lets the Lites Dispatcher handle them.
      The dispatcher on the server receives the incoming operations the clients executed and will dispatch them to the right place, which in most cases will route the operation to the LiteGame (and extended) instance within which the player is, so they can be executed in that context. Thats also where you will find the implementations of most operations in Lite actually.

      Operations are identified through byte codes, so ensure that however you do it, that you have unique identifiers there.
      To send operations from the client you use OpCustom from the LitePeer (the default operations have special functions in the LitePeer, for example for join and the properties)

      Operations are one of two (actually 3) ways for communication. The other one is using Events. The difference between operation and event is that events are not processed on the server. They will be routed through to all other users in your game without the server actually looking at them (you could change that but commonly you wouldn't want to do that and instead have an own operation if you need Events + server processing), as such you will use them for things you want to send from client to client primarily like position updates if you do no server processing of it and alike.

      Events are identified through bytes too.
      To send events, you call OpRaiseEvent on the LitePeer

      the 3rd way is no real way of communication but for sending state data. that are properties, which store data for Actor or Game instances on the server and allow anyone within the game to request them as they need them through a predefined operation (if you use the Lite base). These mechanism for example would be used to sync the current points in a game, health of players or whose turn it is in a turn based game. This mechanism is part of Lite and does not exist if you don't use it.

      You can identify properties through whatever you want, they are sent as a hashtable. But for traffic sake, I personally would recommend byte when you are able to do so. As you can put hashtables into hashtables you can overcome restrictions of too little identifiers by packing up blocks, identify them with some key and then use context dependent byte identifiers for the data in there which can be overlapping between the different usage cases.

      Internally, all these 3 things are technically operations, but the way they express themself in the client and server are different enough to think about them in a seperated way.



      Mainloops: there is no such thing on the server for you to use and hook in. The server goes through callbacks. The docs contain information on what you have but the Lite application in the server sdk actually contains all and also shows you what their use is.
      On the client you can have whatever you want, you just have to have the callbacks expected by Photon to call in by having a IPhotonPeerListener implementing class with a LitePeer which handles the communication in the client. In the DotNet example, the Game class is handling the networking part, the LitePeer object within is handling the communication to the server


      I hope that gives you a better picture on the whole matter
    • maddy
      maddy ✭✭
      Options
      i dont know, why are u so fked up with this..... and a lot of what u said may make sense to u, but know this ..... if you dont know, doesnt mean it doesnt exist!

      anyways, by the time any usefull thing happened in this forum,guess what i found?? ............ WCF !! ...... and thats not a swear, .... its Windows Communication Foundation ! ......

      And im now able to host my own server, and am able to launch multiple clients and have done decent progress ........
      agreed, i still dont know how make this local server to port to an online server, but im sure now im in right track .... and there are usefull people elsewhere than this forum! who do know how to write a sensible 'to the point' tutorial for beginners! ....after all., its no rocket science!

      If someone is in a beginner stage doesnt mean they are incapable ....
      and piece of advice b4 i leave, ...... if you can contribute anything usefull then talk ...... otherwise please dont just spam!

      thanks ... and peace
    • dreamora
      Options
      Make your own local server: ExitGames just recently posted a YouTube video on how to install and run Photon in less than 5 minutes. Thats all thats needed to run it :)
      see their channel at http://www.youtube.com/user/ExitgamesVideos


      All beyond that is related to what I posted above: Photon Server Applications running on the socket server (The Photon Control you have found in the bar actually starts and stops the socket server, which in turn will launch the photon server applications that are configured in its configuration xml file thats found in the bin folder from where you started the control)

      You develop these Photon Applications through C# webservice solutions that then run on the socket server (See the src-server folder in your photon installation folder. it contains the sources and solutions to 2+ of them. One being the Lite one which I've talked about before and in relation to which all explanations will be as it forms the base of any distinct game session based photon server application). After building the assemblies you copy them to the place you specified in the configuraiton xml.

      How the app looks within that app is up to you aside of the PhotonApplication instance that must be present (you also specify it in the xml), if you go with the Lite as base, you will work with the Application, the Dispatcher and LiteGame directly or through extension.

      The role of these 3 is simple:
      Application: Main Entry point for the socket server. Handles startup and shut down and global init of your server app.
      Dispatcher: Routes the incoming operations to where they are meant to
      LiteGame: This extends Room and is a "game session". It manages all players in the current room, the forwarding of data to where they are meant to etc and implements all game operations (the majority of all operations present in Lite / most games)

      The possibilities you have for communicating from client to server are mentioned in the posting above :)

      On the client the whole thing is far simpler: there work with the LitePeer (thats your connection, the communication channel to and from the server) and need a listener interface extending class as mentioned above, which will server as call point for the network layer (it will call in from there if it received messages. the checking for that happens when you ask the peer to check its queue through .Service)


      Easy - Complex:
      I'm aware that it isn't an easy thing.
      But thats exactly why I'm pissed a bit basically: Its a complex thing and you were pointed to the points on how to get in touch with it and where to learn about the very basics like getting it to run and I told you that your references in relation to whatever you did in the past are basically worthless as there is no counterpart here.
      I might have been missinterpreting your reaction but to my understanding it was an insult as it told me that you don't want to invest your own time to even do basic experimentation with the provided example and/or reading the docs yet expect others to invest time to bring a step by step guide to you and that for free.
      This is just hard to get, cause if you are aware that it is no easy topic, why don't you handle it accordingly by getting in touch with the materia first and then ask questions.
    • maddy
      maddy ✭✭
      Options
      You keep saying its difficult its difficult ................. u never really showed anything usefull again, except for discouraging the beginners!

      heres a tutorial for WCF ...
      http://msdn.microsoft.com/en-us/library/ms731835.aspx

      Read their step by step tutorial ......... and that is called, explanation ....
      u write pages and pages of stuff, that doesnt really show anything!

      And you are wrong abt me doing experimentation......... I did my part, ... and being a beginner i can do only so much, before it gets annoying.

      And about providing stuff for free, ..... if you are not interested in providing stuff for free ..... y did you even bother to start bouncing off people from the site ....
      if you are a worker from the exitGames.... then, sir., u r not helping anyone to look at your product.

      As pointed out above, ..... if creating a server and hosting is that easy, why the F do i need a PHOTON server, and try to appeace doosh bags like you ....

      found it offensive???? ............ ya.... i meant to be! dooshbag
    • Boris
      Options
      Wow, let me get some pop corn... :roll:
      Anyway - if WCF works for you then you will probably not need Photon.
      If you want a high performance socket server you are welcome to continue to check out Photon. While more documentation is certainly useful the provided samples are fairly easy to understand. If you have specific questions they are usually answered on the same day. We won't be able to deliver a whole new documentation chapter and tutorial in such short time.
      Please be aware that Exit Games is not a giant company like Microsoft and that your posts are answered by a small number of developers. We will not respond kindly to insults so please keep them out of future posts.
      Thanks and good luck!
    • maddy
      maddy ✭✭
      Options
      Ah finally ..... sure do, get some coffee aswell, as you may want to get some sense into your head and start acting professionally rather than being another jerk
      Please note: the end users need not respond kindly to insults as well !!
      But, you atleast came back with some sensible answer somewhere ...so yeyyyyyy!!

      Firstly my query IS specific!
      Second, i've never resorted to insults, until you've provoked me with bullshit.
      (bullshit == not an answer to the question, but something that satisfies his/her ego)

      If you guys dont like the users come back with yelling, then please behave accordingly first ....
      ex: you dont know the answer, then just dont answer .... ( or say it will take time for the answer, if you are so interested in asnwering them. )

      The time and dedication, that the other fellow who started bullshitting could have been used for coming with something usefull .... like
      Step1 : install the SDK ... Add so and so lines in your config file to create a specific room etc ...
      blah blah ....
      Does this make sense to you???

      The question i've asked makes sense for any beginner in the world.If you cant respect a beginner's point of view, you are going no where with this.
      ummmm, may be u'll go somewhere, but u'll never reach up to microsoft's level! Microsoft dinn go up high because of their lack of user friendly ness in their apps or support!
      Not that you care about reaching a great goal as above, but if you do ..... please try to understand this ...

      If you cant answer a query for a specific reason, as boris mentioned ''We won't be able to deliver a whole new documentation chapter and tutorial in such short time'' that would have been a less provoking answer, than to tell me to go read documents and come back ....
      Coz, i did b4 i posted the query, and the documents havent solved all my queries regarding to my dev plan with XNA. And more importantly i explicitly mentioned in the first post itself that dont come back with bullshit

      If you can throw me the right information in the way ..... i can teach you how to make a good tutorial ... and reach a larger base of audience in matter of days! and then you can try and hope to become a huge company, with huge success ....
      But, if you think telling every new user, to go back to school .... Please!!!!
      Hypocrites, do such stuff ... they might have the appropriate knowledge, ...but ....they just dont share it ... coz, if they share the only knowledge they have, the others might out grow them! atleast thats what they think


      now the constructive criticism part ....
      Imagine, you could teach a newBie (not incapable), who also happens to be a critic ... and i(newBie) help you with coming up with a detailed Tutorial, that you can post in you website for FREE! .... and make that STICKY! in ur forum .... dont you think that could be more usefull and be of more impact to all your potential clients?
      Also, i could share with the world, how nice my experience was with you guys here .... and create a more friendly environment for everyone ...?

      So, who ever reads this, and can understand what im saying with a straight head .... then, please lets create some usefull material for every to use, and let photon come out of its closet in a better packaging, inside and out!
    • Boris
      Options
      It didn't need another insulting post to understand what you are looking for. As I said there is nothing else here at the moment, so feel free to ask something specific when you get stuck.
    • maddy
      maddy ✭✭
      Options
      Im not trying to insult, im looking for cooperation in creating a tutorial for absolute beginners, if interested in the same, please do .... just confirm if you are interested.... are you?
      then i'll post queries step by step myself
    • Tobias
      Options
      The problem with open discussion in a forum like this is, that you can't prohibit others from writing something you did not ask for or even be insulting. The best way is to ignore insulting / unhelpful posts. This is not always possible, I agree. At the same time, you can't demand that anyone answers at all.

      From our view:
      Of course we would like to have samples and tutorials for every demand and every entry-level.
      We understand and develop Photon as a professional-grade framework which is growing still. At the moment we have to concentrate on professionals and customers and we work on the documentation step by step. The latest Server SDK release (v2.0.4) has more in-code help and additional info in the doc folder. There is also a short chapter about deployment in the "Getting Started" guide.

      Even the best-documented solutions out there have their forums and posts with all kinds of questions about them. At the moment we hope Photon makes sense to many of you and already makes life easier until we can properly explain every bit of it. Understanding the code is imperative and so we try to explain Photon by supplying the Lite and LiteLobby applications as well as the MMO Demo (separate download).

      Please bear with us.
    • maddy
      maddy ✭✭
      Options
      thanks, but my query not just about the Server SDK .... im unsure abt client side implementation aswell .... nevermind, i guess we crossed the stage of taking this further.

      So all the best for ur upcoming work., hopefully we'll see some unambiguous tutorials soon enough.
    • dreamora
      Options
      The client side implementation is actually pretty straight forward.
      I hope below explanation will help you see the path in the woods full of trees you might current be standing in front / fight your way through

      It builds around 3 things basically:

      1. a PhotonPeer (or LitePeer) instance for communication (it handles the send command queuing as well as the sending / receiving which is done through the Service method). From this instance you send commands through OpCustom. If you use LitePeer you additionally have direct functions for sending events (OpRaiseEvent) or the properties

      2. An iPhotonPeerListener implementing class instance which you pass on the init of the peer (in the DotNet client sdk, realtime project, this is the class Game). This class implements the fundamental methods to receive data like EventAction ...

      3. drop in the PhotonDotNet / PhotonUnity3d assembly in your project and use it on all classes that require photon functionality. Depending on your implementation this can just be the two above but it can also be more
    • WoW Maddy, I am not a member of exitgames so don't blame them for what I am about to say. Giving your history in this thread it's a wonder you even have a game thats ready for multiplayer support. Like you I am a beginner at Photon and yes I must agree with you that Photon could use some better documentation. However unlike you I am not lazy and I don't mind trying different things out and coming to a working solution through trial and error. Trial and error is all part of the learning process.

      I just sit down and do what I can when I can. If I get stuck on a specific issue I come here and I ask questions that get directly to the point of what I am having problems with. I don't come here requesting that the developers write up a Photon for dummies book and have it on my desk with in the hour! I personally have found that the developers do a great job replying to my questions and I am very happy with the support provided on these forums. You really can't ask for better support if your using the free 50 concurrent connection license considering it's free!
    • dreamora
      Options
      Just to mention that: I'm neither an exitgames dev, just another user too :)
      I think devs should potentially have some special badget on the right or alike
    • maddy
      maddy ✭✭
      Options
      OK ....... fine .... agreed ... im a lazy bum/dummy blah blah .... ( ihave no issues whatever you want to call me, as long as you can share USEFULL information, and i gain some from it)
      And yes, i did develope a working Game, and is in good shape so far, being just a single player game.

      Anyways, let me get out of my lazy ness ..... Let me start, working on the basic example provided, and do the RnD ...I'll be posting specific questions along with the code(if needed) ...

      ok while following the code i have many doubts ... lets do one by one
      but before going any further, let me explain how the structure goes in XNA for the game ... Because my ultimate goal is to be able to use photom within xna ....

      we have the following in order ...
        Initialize() LoadContent() Update() Draw()

      and they are called in order ........ the heart of the game is the 'Update()'
      which is nothing but a gameLoop (while loop ... whichever makes sense to you)
      something like.....
        while( run_the_game == true ) { handleInput(); DoTheGameLogic(); // like check collision detects, user interactions etc updateData(); // update/validate the player data in the server }
      And you can guess what will draw does every frame ....

      So, i extended my Game Class with 'IPhotonPeerListener' and implemented its functions/members
      Well, not all are implemented in true sense .... but you get the drill ..
      #region IPhotonPeerListener Members
      
              public void DebugReturn(string debug)
              {
                  debugText += debug + "\n"; // this string is shown on my screen in the draw method
              }
      
              public void EventAction(byte eventCode, System.Collections.Hashtable photonEvent)
              {
                  throw new NotImplementedException();
              }
      
              public void OperationResult(byte opCode, int returnCode, System.Collections.Hashtable returnValues, short invocID)
              {
                  throw new NotImplementedException();
              }
      
              public void PeerStatusCallback(int returnCode)
              {
                  throw new NotImplementedException();
              }
      
              #endregion
      

      Now, lets see how to connect to a server in this session, nothing more ... just connect
      Client Side: (assuming we are using the lite App as server side contact )
      As document says,
      1. create a LitePeer ( see page 13) instance
      2. from now on: regularly call Service() ( see page 27) to get events ( see page 3) and send commands (e.g. ten times a second)
      3. call Connect() ( see page 26) to connect the server
      4. wait until the library calls IPhotonPeerListener.PeerStatusCallback ( see page 35)
      the returned status int should equal ReturnCode.Connect ( see page 38)
      So, we do the connection code within the 'Initialize method, which happens at the begininning of the game
      here it goes ...
      Initialize()
      {
         //connect to server
         Connect();
      }
      

      .... where the code for the function COnnect is here ...
      public bool Connect()
              {
                  if (peer==null) peer = new LitePeer(this, false);
                  peer.DebugOut = LitePeer.DebugLevel.WARNING;
                  
      
                  if (!peer.Connect(ipPort, "Lite"))
                  {
                      DebugReturn("not connected");
                      return false;
                  }
      
                  DebugReturn("connected!");
                  return true;
              }
      

      So we are doing the 1st step, and 3rd step ...... not doing the 2nd step here ....
      I believe the 2nd step should come only after, the 3rd step ..... coz, how would i keep calling the service, if im not connected yet!!!
      Please correct me if im wrong ....

      ... now run the game, and i see . Connected message .... so yey!!!
      Im not calling the 'Service' function yet .... coz, i have some queries on it ...

      but wait, the 4th step says ....
      4. wait until the library calls IPhotonPeerListener.PeerStatusCallback ( see page 35)
      the returned status int should equal ReturnCode.Connect ( see page 38)
      Ok i waiting long time, i dinn get any callback to the 'PeerStatusCallback' function .... i should be getting a 'NotImplementedException' atleast, if it had happened .... So does it mean im not connected to the server?

      So, .... Step 1, Step 3, worked for me .... (or may be not?)
      i believe step 2 and step 4 ... are tied somehow ... so could you throw some light on
      What does this 'Service' call do actually? and how/where actually im supposed to call it ?
      And when will be the ''PeerStatusCallback' function called?
    • maddy
      maddy ✭✭
      Options
      btw, please dont say im still lazy ......... if i were, i wouldnt take the pain to write all these comments so far ...... im very keen to learn this ....no matter what
    • dreamora
      Options
      Your are missing the peer.Services() call in your main loop, that should happen from the moment on peer != null or you will never connect to the server as you are not notified of the connection events etc.
      Your problem you have by not getting the callback shows this.

      Without calling Service, the photon thread will not process the events it received / is meant to send


      Also by not implementing op results you will also never connect to the server cause you must request a join after you got the response that your connect succeeded.
      You can look at what the game class in the dotnet example offers there. You can add additional own things if you implemented such on the server but you can not remove the base things present in any way or functionality will cease to exist.


      aside of that, the way you have it now is the right structure
    • maddy
      maddy ✭✭
      Options
      ummm wait ...

      I still did not call the peer.Service(), but did get a PeerStatusCallback() now ....
      earlier also i was getting, i just made a nasty error, (i've put break point elsewhere!!! )... sorry abt the misleading point in earlier post ....
      Without calling Service, the photon thread will not process the events it received / is meant to send

      Also by not implementing op results you will also never connect to the server cause you must request a join after you got the response that your connect succeeded.
      You can look at what the game class in the dotnet example offers there. You can add additional own things if you implemented such on the server but you can not remove the base things present in any way or functionality will cease to exist.

      So, .... i guess this invalidates your point! and i am infact looking at the dotnet example, and dissecting it piece by piece to understand the flow ...

      Anyways, i guess i got the point now ..... i will post the next query in a while.
    • Tobias
      Options
      You are right: there is a way around peer.Service():
      You can call DispatchIncomingCommands() and SendOutgoingCommands() to get the same effect as Service() and gain more control about how much you dispatch and how many UDP packages you send.

      Service() combines these to make it even easier. You have to call DispatchIncomingCommands() in a loop until you dispatched everything or you risk flooding an incoming queue of data.
    • XNA has a built in network, period, use it, not to put down photon or say that you do not want photon, well to be honest, XNA's built in networking is BEAUTIFUL for XBOX thus you can use it in your games and post them to the XBOX Live and have flawless victory on the network interface will almost no skills. Seriously, I am an XNA developer myself, try this link:

      http://creators.xna.com/en-US/education ... =19&sort=1

      I wouldn't use Photon in my XNA games, not that it isn't worth doing, but Microsoft is a b*tch with regards to 3rd party anything in your XNA game, unless you don't care about the marketplace, but that is just not wise. Now if you want to make a C# game for Windows that is not XNA, that is a different story all together!

      Check that link out and get the XNA networking going, you will pray to the makers that you did later. It really is a waste of breath trying to do it here or with this tool, this tool is not a target for XNA and I would NEVER expect or want them to go that route. (man I want a spell checker)
    • dreamora
      Options
      wouldn't and as far as I recall, you can't put it into it at least with target xbox, not?
      MP on XBox = pay for gold membership or get lost
    • Actually "Gold" won't cut it, you have to be a "Premium" member if you want to develope and upload the program to the community and hope it hits the marketplace. I stress the "HOPE" part. And NO they will not allow third party libraries unless they have a certified strong signature, meaning you need to have a code signing entity to buy your code sign from for your libraries, then again pray that their checking server doesn't puke all over you for trying to upload it. Besides, if you use their network component you can use their lobby servers, etc.
    • dreamora
      Options
      Yeah for developing its clear.

      I meant for playing xna network games. And thats required independent on if the game is xbox or windows actually (as universe at war has shown which doomed itself to flop on pc thanks to this bullocks idea)
    • Yup, gold is required to be able to play the game networked anyway, unless M$ has changed their rules in the last day or two. A person can only play network games networked if they have the right membership level. This is why the majority of the games on the market are single player. But we digress. As per the OP, just don't use Photon for XNA games, besides, XNA is proprietary to M$, get Unity, make the game and use Photon IMHO, unless you a really that stuck on M$ marketplace.