Skip to content
By using Twitter’s services you agree to our Cookies Use. We and our partners operate globally and use cookies, including for analytics, personalisation, and ads.

This is the legacy version of twitter.com. We will be shutting it down on June 1, 2020. Please switch to a supported browser, or disable the extension which masks your browser. You can see a list of supported browsers in our Help Center.

  • Home Home Home, current page.
  • About

Saved searches

  • Remove
  • In this conversation
    Verified accountProtected Tweets @
Suggested users
  • Verified accountProtected Tweets @
  • Verified accountProtected Tweets @
  • Language: English
    • Bahasa Indonesia
    • Bahasa Melayu
    • Català
    • Čeština
    • Dansk
    • Deutsch
    • English UK
    • Español
    • Filipino
    • Français
    • Hrvatski
    • Italiano
    • Magyar
    • Nederlands
    • Norsk
    • Polski
    • Português
    • Română
    • Slovenčina
    • Suomi
    • Svenska
    • Tiếng Việt
    • Türkçe
    • Ελληνικά
    • Български език
    • Русский
    • Српски
    • Українська мова
    • עִבְרִית
    • العربية
    • فارسی
    • मराठी
    • हिन्दी
    • বাংলা
    • ગુજરાતી
    • தமிழ்
    • ಕನ್ನಡ
    • ภาษาไทย
    • 한국어
    • 日本語
    • 简体中文
    • 繁體中文
  • Have an account? Log in
    Have an account?
    · Forgot password?

    New to Twitter?
    Sign up
TimSweeneyEpic's profile
Tim Sweeney
Tim Sweeney
Tim Sweeney
@TimSweeneyEpic

Tweets

Tim Sweeney

@TimSweeneyEpic

Epic Games founder & CEO

epicgames.com
Joined August 2013

Tweets

  • © 2020 Twitter
  • About
  • Help Center
  • Terms
  • Privacy policy
  • Imprint
  • Cookies
  • Ads info
Dismiss
Previous
Next

Go to a person's profile

Saved searches

  • Remove
  • In this conversation
    Verified accountProtected Tweets @
Suggested users
  • Verified accountProtected Tweets @
  • Verified accountProtected Tweets @

Promote this Tweet

Block

  • Tweet with a location

    You can add location information to your Tweets, such as your city or precise location, from the web and via third-party applications. You always have the option to delete your Tweet location history. Learn more

    Your lists

    Create a new list


    Under 100 characters, optional

    Privacy

    Copy link to Tweet

    Embed this Tweet

    Embed this Video

    Add this Tweet to your website by copying the code below. Learn more

    Add this video to your website by copying the code below. Learn more

    Hmm, there was a problem reaching the server.

    By embedding Twitter content in your website or app, you are agreeing to the Twitter Developer Agreement and Developer Policy.

    Preview

    Why you're seeing this ad

    Log in to Twitter

    · Forgot password?
    Don't have an account? Sign up »

    Sign up for Twitter

    Not on Twitter? Sign up, tune into the things you care about, and get updates as they happen.

    Sign up
    Have an account? Log in »

    Two-way (sending and receiving) short codes:

    Country Code For customers of
    United States 40404 (any)
    Canada 21212 (any)
    United Kingdom 86444 Vodafone, Orange, 3, O2
    Brazil 40404 Nextel, TIM
    Haiti 40404 Digicel, Voila
    Ireland 51210 Vodafone, O2
    India 53000 Bharti Airtel, Videocon, Reliance
    Indonesia 89887 AXIS, 3, Telkomsel, Indosat, XL Axiata
    Italy 4880804 Wind
    3424486444 Vodafone
    » See SMS short codes for other countries

    Confirmation

     

    Welcome home!

    This timeline is where you’ll spend most of your time, getting instant updates about what matters to you.

    Tweets not working for you?

    Hover over the profile pic and click the Following button to unfollow any account.

    Say a lot with a little

    When you see a Tweet you love, tap the heart — it lets the person who wrote it know you shared the love.

    Spread the word

    The fastest way to share someone else’s Tweet with your followers is with a Retweet. Tap the icon to send it instantly.

    Join the conversation

    Add your thoughts about any Tweet with a Reply. Find a topic you’re passionate about, and jump right in.

    Learn the latest

    Get instant insight into what people are talking about now.

    Get more of what you love

    Follow more accounts to get instant updates about topics you care about.

    Find what's happening

    See the latest conversations about any topic instantly.

    Never miss a Moment

    Catch up instantly on the best stories happening as they unfold.

    1. Tim Sweeney‏ @TimSweeneyEpic 29 Dec 2019
      • Report Tweet
      • Report NetzDG Violation

      Tim Sweeney Retweeted Tim Sweeney

      This is up and running as a C++ library. Currently transactional variable reads and writes are ~50x slower than ordinary variables. 40% the overhead is transaction bookkeeping, 40% is concurrent garbage collection bookkeeping, 20% is platform atomics. Many optimizations to go.https://twitter.com/TimSweeneyEpic/status/1210260682605764611 …

      Tim Sweeney added,

      Tim Sweeney @TimSweeneyEpic
      Using the holidays for a 2-week coding session. Writing a new transactional memory manager that’s O(1) for all operations, completely non-blocking and progress-guaranteeing, and uses atomics only for writes.
      Show this thread
      19 replies 28 retweets 387 likes
      Show this thread
    2. Tim Sweeney‏ @TimSweeneyEpic 29 Dec 2019
      • Report Tweet
      • Report NetzDG Violation

      This amount of overhead may be acceptable, as you'd only use transactional variables for shared globally-visible state (like properties of game objects) and not locals. If performance is dominated by low-level operations like collision detection, this may be negligible.

      2 replies 0 retweets 27 likes
      Show this thread
    3. Tim Sweeney‏ @TimSweeneyEpic 29 Dec 2019
      • Report Tweet
      • Report NetzDG Violation

      For comparison, UE3 UnrealScript and pre-il2cpp Unity Mono bytecode interpretation were ~30x slower than native.

      4 replies 1 retweet 29 likes
      Show this thread
    4. Tim Sweeney‏ @TimSweeneyEpic 29 Dec 2019
      • Report Tweet
      • Report NetzDG Violation

      One great side-effect of transactions is that you can automatically undo variable writes upon failure, for example so you can write something like "if(move a bunch of actors) ... else ...", and if any operations fail, then all of their effects are undone.

      1 reply 0 retweets 32 likes
      Show this thread
    5. Tim Sweeney‏ @TimSweeneyEpic 29 Dec 2019
      • Report Tweet
      • Report NetzDG Violation

      I've had to re-learn my code optimization intuition from the late 90's. C++ compiler optimization is magic now, and Skylake can reliably issue 4-6 instructions per clock. But control flow misprediction has become wildly expensive.

      3 replies 4 retweets 61 likes
      Show this thread
    6. Tim Sweeney‏ @TimSweeneyEpic 29 Dec 2019
      • Report Tweet
      • Report NetzDG Violation

      Anyway, there are two competing theories on how we'll unlock higher performance through parallelism. One is the data oriented design approach, asking programmers to rewrite gameplay code as highly parallel fragments of algorithms that pipe inputs and outputs among stages.

      4 replies 0 retweets 61 likes
      Show this thread
      Tim Sweeney‏ @TimSweeneyEpic 29 Dec 2019
      • Report Tweet
      • Report NetzDG Violation

      The other is transactions, hoping we can just write gameplay code using "var<int> Health;" instead of "int health;", write code to minimize unnecessary contention for shared state, and have the engine and API magically sort out concurrency for us.

      11:04 PM - 29 Dec 2019
      • 1 Retweet
      • 92 Likes
      • Alexander Jobling Lordfreya Eryk Dobson Jeffery Butts Nater Gator Jason Ed Reid 𝒜𝓁𝑒𝓎𝓈𝒾𝒾𝒶 ˳✧༚ Matt Loveday
      12 replies 1 retweet 92 likes
        1. New conversation
        2. John Carmack‏Verified account @ID_AA_Carmack 30 Dec 2019
          • Report Tweet
          • Report NetzDG Violation
          Replying to @TimSweeneyEpic

          I wanted to investigate a model where every entity could potentially be a separate thread, but you could only read the immutable previous frame’s data for other entities. Some challenges with complex interaction resolution.

          8 replies 1 retweet 58 likes
        3. Tim Sweeney‏ @TimSweeneyEpic 30 Dec 2019
          • Report Tweet
          • Report NetzDG Violation
          Replying to @ID_AA_Carmack

          If you do that, track reads and writes to each entity in the new frame updates, and rerun any updates that relied on state that was changed by a prior new-frame entity update, you have transactions via copy-on-write!

          1 reply 0 retweets 11 likes
        4. 2 more replies
        1. New conversation
        2. What's in a name‏ @CVbMG1U1 29 Dec 2019
          • Report Tweet
          • Report NetzDG Violation
          Replying to @TimSweeneyEpic

          Wouldn't this lead to problems where order of operations is important? ie +health from pickup and -health from damage. Would the concurrent operations library ensure consistency, or just leave it indeterminate?

          1 reply 0 retweets 2 likes
        3. Tim Sweeney‏ @TimSweeneyEpic 30 Dec 2019
          • Report Tweet
          • Report NetzDG Violation
          Replying to @CVbMG1U1

          Transaction ensure that each gameplay object update is atomic, consistent, durable, and isolated. Transactions are just a way to have a lot of threads collaboratively contribute to outcomes that are indistinguishable from a single thread running each updates sequentially.

          1 reply 0 retweets 3 likes
        4. 3 more replies
        1. New conversation
        2. Keith Newton‏ @inovae_keith 30 Dec 2019
          • Report Tweet
          • Report NetzDG Violation
          Replying to @TimSweeneyEpic

          So in other words we need a special programming language just for games ;) perhaps a better ispc/CUDA without vendor lock-in that plays nice with a broader range of heterogeneous computing hardware

          1 reply 0 retweets 2 likes
        3. Michael Tornberg‏ @Planetrift 30 Dec 2019
          • Report Tweet
          • Report NetzDG Violation
          Replying to @inovae_keith @TimSweeneyEpic

          I believe @Jonathan_Blow is doing exactly this with his JAI. Maybe Tim should speak to him? Just to avoid mistakes he might already have made?

          0 replies 0 retweets 0 likes
        4. End of conversation
        1. Scott Richmond‏ @ScottTRichmond 30 Dec 2019
          • Report Tweet
          • Report NetzDG Violation
          Replying to @TimSweeneyEpic

          We're in the middle of implementing a similar architecture for our in-prod sim game! The paradigm shift in coding style had a steep learning curve but the "free" multithreading by default is pretty god damn cool I must say.

          0 replies 0 retweets 1 like
          Thanks. Twitter will use this to make your timeline better. Undo
          Undo
        1. New conversation
        2. Scott Michaud‏ @scottmichaud 29 Dec 2019
          • Report Tweet
          • Report NetzDG Violation
          Replying to @TimSweeneyEpic

          Data-oriented vs object-oriented... I keep thinking "Why not both?" Think like a database. Have columns be packed arrays of component data. Each row is an entity. Most systems just ISPC down component data (ex: gravity). But allow *some* rows to be typed with tick() etc.

          1 reply 0 retweets 1 like
        3. Scott Michaud‏ @scottmichaud 29 Dec 2019
          • Report Tweet
          • Report NetzDG Violation
          Replying to @scottmichaud @TimSweeneyEpic

          So you'd get data-oriented design, but the flexibility of selectively treating a handful of semi-unique rows as objects.

          0 replies 0 retweets 0 likes
        4. End of conversation
        1. New conversation
        2. Jake Simpson‏ @JustJakeSimpson 29 Dec 2019
          • Report Tweet
          • Report NetzDG Violation
          Replying to @TimSweeneyEpic

          Wow. That’s a hell of an optimization pass. I mean, it should be algorithmic, assuming enough passes on usage case - but it would only take a few wrong use cases to drive performance to its knees in a multithreaded environment? Then again, DTOs can do the same in the wrong hands.

          1 reply 0 retweets 1 like
        3. Mike Burrows‏ @zebedee666 29 Dec 2019
          • Report Tweet
          • Report NetzDG Violation
          Replying to @JustJakeSimpson @TimSweeneyEpic

          Today unintended atomics are way too expensive, therefore requiring significant sw mitigation to minimize. Known highly contended atomics=serialize code; known uncontended=parallelize. Big software cost/complexity trade off to try and deal with all the rest. We can fix this...

          0 replies 0 retweets 0 likes
        4. End of conversation

      Loading seems to be taking a while.

      Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.

        Promoted Tweet

        false

        • © 2020 Twitter
        • About
        • Help Center
        • Terms
        • Privacy policy
        • Imprint
        • Cookies
        • Ads info