Jump to content

Norse_Harold

Lobby Moderators
  • Posts

    421
  • Joined

  • Days Won

    9

Posts posted by Norse_Harold

  1. Okay, I made a small source patch to adjust the MTU to 1392 bytes instead of 1400 bytes. It affects only the MTU of outgoing traffic. I don't see a way for the server to control the MTU used by clients for packets sent to the server, unless it's somewhere in the ENet logic for constraining the MTU. And, ideally the MTU is decided automatically instead of hardcoded in the source code. The ICMP traffic necessary for the OS to do that might be blocked locally or remotely, although that is not necessarily what ENet is relying on. Note that "ping -M do -s 1392 play0ad.com" through the VPN link succeeds. Edit: An idea for allowing the server to control the MTU used by clients: apparently MAX_CLIENTS peers are allocated immediately by the call to enet_host_create() in CNetServerWorker::SetupConnection() . We can iterate through all of the elements of the m_Host->peers array and adjust the MTU before the peer structures are used for actual connections.

    Anyway, I used the improved MTU when hosting several games through VPN today. longsentenceasname, who was unable to stay connected in the past was able to stay connected and play a complete team game hosted by me. I assume that the modification will also allow Helicity, Cousin, and others to stay connected now. And no, clients don't need to apply the patch. Only hosters using VPNs, such as @Ginnungagap might need to apply this patch.

    For anyone choosing to apply the patch, you need to have a build environment setup first. The build environment instructions mention the SVN version of the 0ad source code. Instead, use the source code for the stable release of alpha 26, since that's what this patch is intended for. That way it's usable with the current player base.

    See the attached file below for the patch.

    Adjust-MTU-for-VPN-link.patch

    • Like 1
  2. This is the screenshot, in case the external image hoster discontinues hosting it.

    1630005377_2023-03-05reportbynz-abusivebehaviorbyBakixeddu.thumb.png.c8ac4ebc959f54d8487d408dc86033b7.png

     

    Google Translate from Italian to English:

    Bakixeddu: nz. motherf______ come back (in Italian)
    nz.: call your mother Bakixeddu (in English)
    Bakixeddu: nz. but s___ me (in Italian)
    nz.: good, I am reporting you (in English)
    Bakixeddu: but get off the f___ you (untranslated: cojone) (in Italian)

    Thanks for the report. I count 4 or 5 instances of profanity in this report, depending on whether or not "cojone" is Italian profanity. I've added it to the list of Bakixeddu's infractions, which affects the recommended mute duration. I've applied a lobby mute of 1 day to Bakixeddu for this behavior and will be watching for future violations by Bakixeddu.

    To everyone, please report any other abusive behavior that you may observe. Also, consider avoiding Bakixeddu until he chooses to improve his behavior.

    • Thanks 1
  3. Someone else will have to help with that test, because if I ping myself then it just sends the packets over the loopback adapter.

    The problem seems to be fragmented packets that are being dropped some time before they reach Helicity.

    Two fragments:

    • Packet of size 1420 bytes on wire, 1400 data bytes
    • Packet of size 28 bytes on wire, 8 data bytes

    These aren't being acknowledged at all by Helicity when Helicity plays with his laptop and school Internet connection.

    Today he's using his dad's network, and it seems to be working.

    But, I want to avoid having fragmented packets being sent out. How does ENet determine what MTU to use? Maybe it's looking at the wrong interface.

    My ethernet interface has MTU 1500 bytes (maybe data).

    My VPN interface has MTU 1420 bytes on wire.

    ENet is using the default MTU of 1400 data bytes.

    I want ENet to use a lower MTU, such as 1392 data bytes.

  4. I remember advice about preventing packet loss when using UDP protocol. Because ISPs and Internet backbones are more likely to drop UDP packets that are larger, the advice for real-time network protocols like VoIP and gaming is to use smaller packet sizes. If I recall correctly, about 500 bytes is the maximum recommended.

    Maybe some Internet backbones used by Helicity, and the 5 other known players who have trouble staying connected to VPN users, have implemented the Random Early Drop QoS algorithm, preferring to drop larger UDP packet sizes.

    Is there a way to easily adjust the maximum packet size used by 0ad?

    Even so, it doesn't seem like the "reliable" feature is working as expected. Note that VPNs have a lower MTU than the average Internet connection, by almost 1000 bytes.

    I see a packet flag in the ENet library:

       /** packet will be fragmented using unreliable (instead of reliable) sends
         * if it exceeds the MTU */
       ENET_PACKET_FLAG_UNRELIABLE_FRAGMENT = (1 << 3),

    Hopefully this is not in use by 0ad, but if it is then it might explain what's happening here.

    Edit: there's only one call to enet_packet_create() that I can see, located in source/network/NetHost.cpp. Apparently all packets have the reliable flag, and do not have the unreliable fragment flag.

    My new hypothesis is that the number of retry attempts is being exceeded and the connection is being forcefully reset by ENet.

    • Thanks 1
  5. Helicity is on Linux, not Windows.

    We can reproduce the symptoms with no mods enabled, simply by setting the number of player slots to 5 or more, or toggling settings like capture the relic very rapidly with 4 slots.

    There are no JavaScript errors when the problem occurrs.

    When the problem occurs, the reliable data in transit increases to several thousand bytes and does not decrease. Then Helicity gets disconnected after a few seconds. I think that this is caused by packet loss, either on delivery of update packets from the host to Helicity, or on delivery of acknowledgement packets from Helicity to the host.

    The problem so far only occurs when I host via a VPN. When I hosted without VPN, Helicity remained connected despite using 8 player slots, and much rapid adjustment of game settings like capture the relic and number of relics.

    Helicity got disconnected from another host as a player in a 4v4 game today. People commented that he regularly has connection problems.

    My assessment is that there is not a bug in 0ad, but there is a combination of network or computer problems with the players involved. Maybe VPN traffic is bursty, and maybe Helicity's connection or computer has trouble with that.

    • Like 1
  6. On 26/02/2023 at 3:07 AM, Ornatkur said:

    Nevertheless there is two different ratings.

    You did redact the player's name, but there seems to be enough information combined with screenshots that I've taken in the past to determine the player's name. Don't worry, he's not reported for purposes of any rating adjustment. But, it's still useful to inform the player base about the player's behavior.

    It looks like the player is tonyfurg. He is probably using the customRating mod to make his rating appear to be 1176, as I see in past screenshots. But, his official rating is 1397 after that rated match was completed. Of course, a player's true skill level is rather subjective, and it depends on the skill level of the opponent. If you post the replay then players can get more of an accurate gauge of the player's skill.

    Also, unless your opponent is familiar to you, I advise that you always ask your opponent to tell you an actual skill level. Don't assume that your opponent's rating is accurate. That way, if they lie then you can call them on it. If you don't ask then they can just say, "Oh, you shouldn't have assumed that my rating was accurate. It's your fault for not asking."

    • Thanks 1
  7. 6 hours ago, Helicity said:

    image.thumb.png.b6f99de3274b573af6f4ae36d8724e6a.png

    These were the errors.

    @HelicityThe screenshot shows the errors that appeared when I enabled regicide and hero garrison mode at the same time. It's not what I was asking about.

    Please start 0ad from a Terminal window, connect to a game that I'm hosting with randomly generated map like Mainland, and copy/paste the JavaScript errors from the Terminal window to a forum post.

    The reason that this is necessary is because we should not assume that the root cause of the problem is regicide mode + hero garrison. There could be a different cause of an infinite loop during initialization.

  8. Okay, Helicity and I did some testing, and we discovered that it's probably caused by the bug related to hero garrison with regicide mode. Helicity said that sternstaub recommended that he check for that bug and disable persist match settings. Merely disabling persist match settings was not enough, though.

    Here is how to fix the bug related to hero garrison and regicide mode.

    Except that Helicity couldn't find matchsettings.json or matchsettings.mp.json.

    So, I hosted a game with a non-random map, such as Acropolis Bay. Helicity connected, and unlike when I was hosting with a random map like Mainland, he did not get disconnected. Then I enabled Regicide mode. Helicity noticed an error message that pointed toward the hero garrison bug. I enabled hero garrison, then disabled it. Then I switched to a randomly generated map (Mainland). And, Helicity did NOT get disconnected this time. Success.

    Later, with Helicity's "normal settings" (with community-mod and other mods?) the problem returned. So, there is still some troubleshooting to do.

    Note that there were some files in Helicity's mods/user directory, which is like having an extra stealth mod enabled that changes unexpected files. Files don't belong there for non-developer users, so we made a backup of those files and deleted them. It didn't fix the problem, but it is something else to watch out for in the future.

    The next step for troubleshooting would be to narrow down a setting or mod that is a minimal way to reproduce the symptoms.

    Note that there are three places where settings are stored for the game. There's default.cfg, local.cfg and user.cfg. Check in each of those paths for matchsettings.mp.json and matchsettings.json, and check in each of those config files for settings related to hero garrison. Backup any data that you remove before removing it so that we can identify the root cause(s) of the problem. If you choose to remove default.cfg then reinstalling the game will restore it to the correct state.

    Another clue: Helicity said that he neither hosted a game nor played as a player of a game involving regicide. However, he did spectate a game involving regicide. Developers, is there a way for match settings to become persistent in the game other than matchsettings.mp.json?

    It's strange that the problem would even happen without regicide mode enabled. Maybe there is a different root cause that induces the same symptoms as the hero garrison+regicide bug. Helicity, can you please provide a copy/paste of the console messages about the JavaScript errors related to the infinite loop, please?

    • Like 2
    • Thanks 2
  9. @ikluEnsure that the audio device that you plan to use is connected to your computer well before you start up 0ad, as 0ad doesn't seem to be able to pivot to a different audio output device at runtime. Also, ensure that you have the correct audio device configured as the default output device in playback devices before starting 0ad.

    Are you using HDMI audio output? 0ad may have a bug with HDMI audio output. Consider helping us resolve the bug by testing hotfixes. It would be necessary to setup a build environment and test patches. Or, consider using a different audio output device.

    If it's still not resolved then see the FAQ answer to the question "No sound, no audio, or 0 A.D. is the only app with sound".

    • Like 1
  10. 1 hour ago, Yekaterina said:

    And precisely what is that? I cannot see a corresponding punishment specified in the rules. 

    As I wrote earlier, I wouldn't be the one deciding and implementing a course of action. user1 can correct rating points. He can also implement other courses of action, as necessary. It depends on whether the user chooses to comply with the rules or requires an escalation in moderation response. That's up to cronelius. or whichever Ramirez brother controls all the duplicate accounts that have allegedly been involved in ratings abuses.

    It's not "my" rules. The rules were debated and carefully chosen many years before I was even active with Wildfire Games. And, there are many good and logical reasons for the rules. It's "our" rules, and it's a good thing that we have them. Otherwise it would be chaos and many good users would be driven away.

    • Like 1
  11. 4 hours ago, Yekaterina said:

    I am also providing you with an easy solution which I had proposed many many times in the past 2 years, and it is simple:

    COUNT ALL GAMES INTO A PLAYER'S PROFILE!!!

    Cool idea. Realize that development work can take months or sometimes years to finally get merged into the code base. In the meantime I expect WFG to be enforcing the rules the way that they are written.

  12. 6 hours ago, Yekaterina said:

    First of all, I think the purpose of 0ad as a computer game is to entertain it's players who are willing to spend their precious time on it. As long as he is enjoying it and is not harming anyone else, he deserves his freedom.

    If the matches were unranked then I would agree. Unfortunately, they were ranked, so I disagree that he is not harming anyone else by rigging ranked matches.

    In addition to what I wrote earlier, I will point out that the value of maintaining the integrity of ranked stats is more than just the rating. The value is also the number of ranked matches that have been played. That represents a real time investment, considering that matches usually require at least 15 minutes, sometimes much more. It's easy to create new accounts, but it's not easy to build up substantial ranked statistics, provided that we enforce the rules about not rigging matches. If we don't enforce the rules about rigging ranked matches then it means that the time investment that people have put into their ranked stats has almost no value, whether for honor or for proving that one has invested in an account. When one has invested in an account then one is less likely to engage in severely disruptive behavior. You see, this goes way beyond the simple issue of rigged ranked matches inflating one's rating.

    6 hours ago, Yekaterina said:

    Finally, it's just a game. Give it a rest and let people have the freedom to enjoy themselves. Don't turn the lobby into an exam hall or a Fascist country.

    Sorry, but what you wrote here is an ad hominem logical fallacy. Anyway, the rules have very good purposes, and you've completely ignored those purposes so far in the conversation.

    5 hours ago, Yekaterina said:

    1. Is Cornelius actually "flagrantly violating the rules" as accused

    2. Should the rules be changed? The current statements are quite ambiguous in English and some are inappropriate as of now. Maybe you should write some revised editions in a superior language, Français, then we try to translate it.

    3. What should happen to cronelius and others who farm ratings.

    How many ratings violations before you would agree that cronelius is flagrantly violating the rules? When you looked at the evidence that I posted, did you see any examples of rule violations? How many did you see?

    If you think that the rules should be changed, then that's a separate conversation that should be in a separate thread. In fact, this isn't even the correct thread for this conversation. Anyway, go ahead and propose rule changes. In the meantime, WFG staff are expected to enforce the rules.

    What I think should happen to cronelius is that the rules should be enforced the way that they are written. Anyway, the only moderation capabilities that I have are mute and kick. So, it's up to user1 to decide what course of action to take. I think that he will want to conduct an investigation first. Please share evidence that you may have, whether demonstrating rule violations or demonstrating rule compliance.

    • Like 1
  13. 22 hours ago, Yekaterina said:

    I recommend you ignore him, because he just likes earning rating points

    I'm not going to ignore flagrant rule violations. See lobby rules 7 and 8

    7. Not attempt to artificially adjust any user of the service's rating or any of the statistics which impact it. (Examples of this are, but are not limited to: cheating in ranked games, reverse engineering the service, and taking advantage of other users of the service.

    8. Not undermine the intended gameplay or purposefully gain unfair advantages in multiplayer matches (for example cheating, using exploits or bugs).

    When cronelius setup ranked matches between two users that he controlled that was gaining an unfair advantage in multiplayer by rigging the matches. It was also an artificial adjustment of his rating.

    There are good reasons for the rules. They help to protect the integrity of ranked matches. They also help to quickly identify the minimum age of an account based on the number of ranked matches. Many or most players are not online at the time of the rigged ranked matches, so they don't have an awareness of what's happening in order to identify that some ranked matches were rigged! And, how can you expect players to know this when you're asking me to not even post in this thread with the evidence?

    Integrity of statistics about the number of (legitimate) ranked matches is important for more than just gauging player skill. It also helps to identify which users have invested more in their accounts than other users. This is useful for identifying main accounts of players and linking player reputation to those names.

    Please do not ignore players that are boosting their ratings and number of ranked matches by playing rigged games. Please report them as soon as possible. See something, say something. Thank you.

       
    • Like 1
    • Thanks 1
  14. On a US English keyboard, the key to open and close the command console is ` (backquote), also known as ~ (tilde) since those characters are on the same key. It's the key that is the furthest to the upper-left of the keyboard within the main section of keys. It's just to the left of the number 1 key. It's not the Escape key, of course.

  15. In the title of your post, you state that it is not a network issue. I think that it is too early to conclude what the cause of the issue is.

    Based on the symptoms that you have described, and when they do and do not occur, I think that the most likely explanation of the problem is packet loss at your Internet connection. (Also check for packet loss at your wireless network.) There are many possible causes of packet loss at the Internet connection. One idea is to check whether you have a modem with the Intel Puma chipset, because those modems have terrible problems with packet loss. A partial list of modems to avoid is here. Otherwise, find your modem in the DeviWiki database and check what CPU it has. If it's Intel Puma then I advise replacing it, since there is no firmware fix for the problem.

    Another possible explanation of the problem is that your laptop is doing excessive power saving on the wireless network adapter. During gaming, you can try configuring your computer to be in high power mode so that the CPU (and maybe other devices) aren't doing power saving. Also, try disabling power saving on the I/O interface that your wireless network adapter uses, whether it's a USB port, PCI-e port, or other type of interface.

    Another possible explanation is that your laptop is overheating and doing brief periods of thermal throttling. This seems less likely than the other ideas, since the computer would probably be totally frozen during thermal throttling, not just networking. Usually cleaning dust and hair from the heatsink can resolve this. But, don't remove the heatsink unless you have the supplies, tools and instructions to properly reinstall it. Otherwise, you'll ruin the thermal interface between the processors and the heatsink. Generic instructions for redoing a thermal interface are on Arctic Silver's website, but ideally you would follow instructions specific to your laptop. Laptops often use adhesive thermal pads of specific thickness that you would need to source, ideally directly from the manufacturer, second-best is from ifixit.com, third best is from eBay spare parts intended for your specific model of laptop.

    If you don't know how to do these things or want more troubleshooting advice then talk to me on IRC when I'm online.

    • Like 1
    • Thanks 1
  16. 13 hours ago, Ceres said:

    our solution is as follows:

    We have set up a local mumble server and use mumble with headsets at home (is fun anyway). This includes game sound over headset, which works fine also in fullscreen mode

    Thanks for sharing this. By using the headset, it is completely bypassing the HDMI audio output device. It's not a solution to the HDMI audio output issue, but it's certainly an effective workaround to the problem.

    Likely your headset is configured as the default audio communication output device, and your HDMI audio output is configured as the default audio output device. When Windows detects a voip program in use like Mumble then it sends all audio to the default audio communication output device.

  17. 1 hour ago, Yekaterina said:

    But I also do need 3.11 on my system for work. Can I have both installed at the same time?

    Yes, you can have python version 3.10 and 3.11 installed at the same time. I had that setup for a while. You can control which version of python is used by changing the symlink /usr/bin/python3 to point to /usr/bin/python3.10. Maybe there is an app that configures the default version of python3, but I'm not aware of it currently. Just remember to configure the symlink back to python3.11 again after you're done building 0ad.

  18. More thrown matches to inflate the ratings of el_gallo_desplumaduo and cronelius.

    [2023-01-30 20:36:21+0000] Ratings: A rated game has ended. el_gallo_desplumaduo won against guanajato. Rating Adjustment: el_gallo_desplumaduo (1587 -> 1597) and guanajato (1402 -> 1392).  
    [2023-01-30 20:36:49+0000] Ratings: A rated game has ended. el_gallo_desplumaduo won against guanajato. Rating Adjustment: el_gallo_desplumaduo (1597 -> 1606) and guanajato (1392 -> 1382).  
    [2023-01-30 20:37:16+0000] Ratings: A rated game has ended. el_gallo_desplumaduo won against guanajato. Rating Adjustment: el_gallo_desplumaduo (1606 -> 1615) and guanajato (1382 -> 1373).  
    [2023-01-30 20:38:18+0000] Ratings: A rated game has ended. el_gallo_desplumaduo won against guanajato. Rating Adjustment: el_gallo_desplumaduo (1615 -> 1623) and guanajato (1373 -> 1364).  
    [2023-01-30 20:38:41+0000] Ratings: A rated game has ended. el_gallo_desplumaduo won against guanajato. Rating Adjustment: el_gallo_desplumaduo (1623 -> 1631) and guanajato (1364 -> 1356).  
    [2023-01-30 20:39:01+0000] Ratings: A rated game has ended. el_gallo_desplumaduo won against guanajato. Rating Adjustment: el_gallo_desplumaduo (1631 -> 1638) and guanajato (1356 -> 1348).  
    [2023-01-30 20:39:23+0000] Ratings: A rated game has ended. el_gallo_desplumaduo won against guanajato. Rating Adjustment: el_gallo_desplumaduo (1638 -> 1645) and guanajato (1348 -> 1340).  
    [2023-01-30 20:39:48+0000] Ratings: A rated game has ended. el_gallo_desplumaduo won against guanajato. Rating Adjustment: el_gallo_desplumaduo (1645 -> 1652) and guanajato (1340 -> 1333).  
    [2023-01-30 20:40:10+0000] Ratings: A rated game has ended. el_gallo_desplumaduo won against guanajato. Rating Adjustment: el_gallo_desplumaduo (1652 -> 1658) and guanajato (1333 -> 1326).  
    [2023-01-30 20:40:54+0000] Ratings: A rated game has ended. el_gallo_desplumaduo won against guanajato. Rating Adjustment: el_gallo_desplumaduo (1658 -> 1664) and guanajato (1326 -> 1319).  
    [2023-01-30 20:41:14+0000] Ratings: A rated game has ended. el_gallo_desplumaduo won against guanajato. Rating Adjustment: el_gallo_desplumaduo (1664 -> 1670) and guanajato (1319 -> 1313).  
    [2023-01-30 20:41:38+0000] Ratings: A rated game has ended. el_gallo_desplumaduo won against guanajato. Rating Adjustment: el_gallo_desplumaduo (1670 -> 1676) and guanajato (1313 -> 1307).  
    [2023-01-30 20:42:46+0000] Ratings: A rated game has ended. el_gallo_desplumaduo won against guanajato. Rating Adjustment: el_gallo_desplumaduo (1676 -> 1681) and guanajato (1307 -> 1301).  
    [2023-01-30 20:43:07+0000] Ratings: A rated game has ended. el_gallo_desplumaduo won against guanajato. Rating Adjustment: el_gallo_desplumaduo (1681 -> 1686) and guanajato (1301 -> 1295).  
    [2023-01-30 20:44:25+0000] Ratings: A rated game has ended. cronelius. won against el_gallo_desplumaduo. Rating Adjustment: cronelius. (1716 -> 1729) and el_gallo_desplumaduo (1686 -> 1673).  
    [2023-01-30 20:44:48+0000] Ratings: A rated game has ended. cronelius. won against el_gallo_desplumaduo. Rating Adjustment: cronelius. (1729 -> 1741) and el_gallo_desplumaduo (1673 -> 1661).  
    [2023-01-30 20:45:14+0000] Ratings: A rated game has ended. cronelius. won against el_gallo_desplumaduo. Rating Adjustment: cronelius. (1741 -> 1753) and el_gallo_desplumaduo (1661 -> 1649).  
    [2023-01-30 20:45:43+0000] Ratings: A rated game has ended. cronelius. won against el_gallo_desplumaduo. Rating Adjustment: cronelius. (1753 -> 1764) and el_gallo_desplumaduo (1649 -> 1638).  
    [2023-01-30 20:46:07+0000] Ratings: A rated game has ended. cronelius. won against el_gallo_desplumaduo. Rating Adjustment: cronelius. (1764 -> 1775) and el_gallo_desplumaduo (1638 -> 1627).  
    [2023-01-30 20:46:30+0000] Ratings: A rated game has ended. cronelius. won against el_gallo_desplumaduo. Rating Adjustment: cronelius. (1775 -> 1785) and el_gallo_desplumaduo (1627 -> 1617).  
    [2023-01-30 20:46:50+0000] Ratings: A rated game has ended. cronelius. won against el_gallo_desplumaduo. Rating Adjustment: cronelius. (1785 -> 1795) and el_gallo_desplumaduo (1617 -> 1607).  
    [2023-01-30 20:47:15+0000] Ratings: A rated game has ended. cronelius. won against el_gallo_desplumaduo. Rating Adjustment: cronelius. (1795 -> 1804) and el_gallo_desplumaduo (1607 -> 1597).  
    [2023-01-30 20:47:40+0000] Ratings: A rated game has ended. cronelius. won against el_gallo_desplumaduo. Rating Adjustment: cronelius. (1804 -> 1813) and el_gallo_desplumaduo (1597 -> 1588).  
    [2023-01-30 20:48:02+0000] Ratings: A rated game has ended. cronelius. won against el_gallo_desplumaduo. Rating Adjustment: cronelius. (1813 -> 1821) and el_gallo_desplumaduo (1588 -> 1579).  
    [2023-01-30 20:48:28+0000] Ratings: A rated game has ended. cronelius. won against el_gallo_desplumaduo. Rating Adjustment: cronelius. (1821 -> 1829) and el_gallo_desplumaduo (1579 -> 1571).  
    [2023-01-30 20:48:50+0000] Ratings: A rated game has ended. cronelius. won against el_gallo_desplumaduo. Rating Adjustment: cronelius. (1829 -> 1836) and el_gallo_desplumaduo (1571 -> 1563).  
    [2023-01-30 20:49:36+0000] Ratings: A rated game has ended. cronelius. won against el_gallo_desplumaduo. Rating Adjustment: cronelius. (1836 -> 1843) and el_gallo_desplumaduo (1563 -> 1555).  
    [2023-01-30 20:49:59+0000] Ratings: A rated game has ended. cronelius. won against el_gallo_desplumaduo. Rating Adjustment: cronelius. (1843 -> 1850) and el_gallo_desplumaduo (1555 -> 1548).  
     

  19. I meant two monitors connected to the computer that you're using to play 0ad. In that case the OS would span the desktop across all monitors, and when the mouse cursor is moved beyond a certain edge of one monitor then it appears on another monitor. Hence it interferes with scrolling if you have the wrong version of SDL.

    What does the monitor arrangement look like in the Display section of Control Panel or Settings?

    What model of video card do you have? Maybe it has a VGA output that's always active, whether you have a monitor connected or not.

×
×
  • Create New...