Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

2024 Participants: Hannah Ackermans * Sara Alsherif * Leonardo Aranda * Brian Arechiga * Jonathan Armoza * Stephanie E. August * Martin Bartelmus * Patsy Baudoin * Liat Berdugo * David Berry * Jason Boyd * Kevin Brock * Evan Buswell * Claire Carroll * John Cayley * Slavica Ceperkovic * Edmond Chang * Sarah Ciston * Lyr Colin * Daniel Cox * Christina Cuneo * Orla Delaney * Pierre Depaz * Ranjodh Singh Dhaliwal * Koundinya Dhulipalla * Samuel DiBella * Craig Dietrich * Quinn Dombrowski * Kevin Driscoll * Lai-Tze Fan * Max Feinstein * Meredith Finkelstein * Leonardo Flores * Cyril Focht * Gwen Foo * Federica Frabetti * Jordan Freitas * Erika FülöP * Sam Goree * Gulsen Guler * Anthony Hay * SHAWNÉ MICHAELAIN HOLLOWAY * Brendan Howell * Minh Hua * Amira Jarmakani * Dennis Jerz * Joey Jones * Ted Kafala * Titaÿna Kauffmann-Will * Darius Kazemi * andrea kim * Joey King * Ryan Leach * cynthia li * Judy Malloy * Zachary Mann * Marian Mazzone * Chris McGuinness * Yasemin Melek * Pablo Miranda Carranza * Jarah Moesch * Matt Nish-Lapidus * Yoehan Oh * Steven Oscherwitz * Stefano Penge * Marta Pérez-Campos * Jan-Christian Petersen * gripp prime * Rita Raley * Nicholas Raphael * Arpita Rathod * Amit Ray * Thorsten Ries * Abby Rinaldi * Mark Sample * Valérie Schafer * Carly Schnitzler * Arthur Schwarz * Lyle Skains * Rory Solomon * Winnie Soon * Harlin/Hayley Steele * Marylyn Tan * Daniel Temkin * Murielle Sandra Tiako Djomatchoua * Anna Tito * Introna Tommie * Fereshteh Toosi * Paige Treebridge * Lee Tusman * Joris J.van Zundert * Annette Vee * Dan Verständig * Yohanna Waliya * Shu Wan * Peggy WEIL * Jacque Wernimont * Katherine Yang * Zach Whalen * Elea Zhong * TengChao Zhou
CCSWG 2024 is coordinated by Lyr Colin (USC), Andrea Kim (USC), Elea Zhong (USC), Zachary Mann (USC), Jeremy Douglass (UCSB), and Mark C. Marino (USC) . Sponsored by the Humanities and Critical Code Studies Lab (USC), and the Digital Arts and Humanities Commons (UCSB).

Tick in Unreal Engine

Title: Tick
By: Epic Games
Code: C++

*Function called every frame on this Actor. Override this function to implement custom logic to be executed every frame. *Note that Tick is disabled by default, and you will need to check PrimaryActorTick.bCanEverTick is set to true to enable it. * *@param DeltaSeconds Game time elapsed during last frame modified by the time dilation

virtual void Tick( float DeltaSeconds );

Overview
Tick is the method used on Unreal Engine to allow programmers to execute code before each frame of the game is rendered.
This code is executed several times per second, and it's critical for the overall performance of the game. In a conservative scenario, a video game rendering at 30 frames per second will call this function at least one time for each actor.

Questions for Discussion
Some of my questions are derived from my lack of experience in academic research, so please bear with me :smile:

  • The sample code is the virtual declaration of the method. There are several implementations of it in the Unreal Engine source code and a lot more for each custom implementation. Should I work with the virtual declaration or use some of the definitions?
  • One of the subjects that interest me is the power hierarchy that Game Engines have. Maybe it would be interesting to dig into the power relationships that this kind of structure can create between the engine's creators and the developers using that technology. I would love to hear your opinions on this.
  • The other subject is related to the human perception and this kind of code that executes at great speed and makes a lot of operations to generate the images we see in a video game. The thing with this option is that I don't know where to start :/
  • I also would love to hear any other ideas

Comments

  • human perception and this kind of code that executes at great speed and makes a lot of operations to generate the images we see in a video game. The thing with this option is that I don't know where to start :/

    For me, it is sometimes helpful to start with a prototypical or extremely atypical. So something prototypical might be Unreal Tournament, and how it uses Tick, for example. Something atypical might be some Unreal-based art project or conceptual experiment that is playing with perception -- and might be using Tick in surprising or revealing ways at the limits of expected design.

    The thing that is challenging about starting with a method that is used by almost everything, everywhere... is that it is everywhere! When I am getting thousands of hits for it in a code base, I can browse, but sometimes I then need to refine the question....

    Should I work with the virtual declaration or use some of the definitions?

    Personally I would say either or both, whichever seems more productive to you! Many people (like me!) may not be fully familiar with what a C++ virtual function is, so it might be worth touching on some of the very basics -- what the role of Actor is in the Unreal framework, if Actor is abstract and whether an implementation is required for any Actor, if an Actor can have a Tick() that does nothing....

  • @jeremydouglass said:
    Personally I would say either or both, whichever seems more productive to you! Many people (like me!) may not be fully familiar with what a C++ virtual function is, so it might be worth touching on some of the very basics -- what the role of Actor is in the Unreal framework, if Actor is abstract and whether an implementation is required for any Actor, if an Actor can have a Tick() that does nothing....

    Thanks a lot, Jeremy. I'll play around with your ideas and see which one fits better :)

  • I've been trying to structure some writing exercises to work with this code. I don't have an exact idea of what I'm gonna find, but I believe that as an exercise, they can be of help. I'm posting here the intended structure to hear your opinions about it and also to see if there is one of them that may be of particular interest.

    1. A basic description: How do Unreal Engine works and how this Tick function affects everything that happens in the video game.
    2. The virtual functions: I would like here to take an approach centered in the Seriality Studies and how the virtual functions allow the serialization of code.
    3. A shared visualization: This tool is used frequently in the visual research field, and I wish to emulate it here. I want to work with two groups of programmers, one with Unreal Engine experience and others without it, and talk with them and see what kind of remarks they do about the code. It would be great to have a third group, with no programming knowledge, just to see what happens :)
    4. Distant reading: I would like to do some kind of distant reading, taking the multiples definitions of the Tick function and see what kind of patters, if any, do emerge.

    I would try to finish at least one of these items within the duration of this workgroup, so if there is any interest in one of them, it will help me a lot to know it so that I can prioritize my work. Thanks to all :)

  • The virtual functions: I would like here to take an approach centered in the Seriality Studies and how the virtual functions allow the serialization of code.

    They all sound interesting, but I personally was particularly curious about this because I'm not sure I understand. By Seriality Studies, which specific authors / traditions are you referring to -- I have seen this used in a few ways. The feminist tradition, or the study of serial narrative forms, or both, or...?

  • @jeremydouglass said:

    The virtual functions: I would like here to take an approach centered in the Seriality Studies and how the virtual functions allow the serialization of code.

    They all sound interesting, but I personally was particularly curious about this because I'm not sure I understand. By Seriality Studies, which specific authors / traditions are you referring to -- I have seen this used in a few ways. The feminist tradition, or the study of serial narrative forms, or both, or...?

    Thanks, your questions are helpful to me :)
    I was referring specifically to the Digital Series, as presented by Shane Denson in this project: http://kairos.technorhetoric.net/22.1/topoi/denson/index.html
    I used a similar framework for my thesis project, but I didn't examine the Unreal Engine code as much as I would want to. In the example project, in the Case Study section, he shows some visual techniques that may be useful to work with a big codebase.
    Maybe with this example, it will be more clear what I was trying to say :)

  • Hi!
    It has been jam-packed days, and I'm not progressing as I would like. Nevertheless, I'm committed to keeping my work on this topic. However, I would like to receive and advice about how to continue once this workgroup ends. Because I'm not a teacher or an academic researcher, I don't know which could be a good way to share the progress and troubles of my work and improve based on the feedback. Is there any online community to keep the exercise going? Any other advice?
    Thanks a lot :)

  • The tick function is a very interesting one to me. Not only because it's executed that often and thus seems to be essential to the performance, but also due to it's definition in relation to the actor (https://docs.unrealengine.com/en-US/Programming/UnrealArchitecture/Actors/Ticking/index.html).

    Since you are mentioning power relations, it is (imho) super interesting to examine the discussions online on how to implement the tick() function "right" or efficient. This makes the quesion explicit who is actually acting and being acted upon? The programmer, coder or the framework, engine? A possible lead might be the discussion on how to "bend" implementations in order to gain performance and effectiveness at the same time. I don't know, if there is any of this online, since I did no deeper research by now, but I'm curious and saved a lot of youtube videos(+ discussions below) to watch later.

    Additionally: analyzing the tick function's usage on github for example, as @jeremydouglass suggested might be a good way, I was thinking of forking several repos and rebuilding an overview over the different use cases in an own repository.

    @alvarotriana said:
    Hi!
    It has been jam-packed days, and I'm not progressing as I would like. Nevertheless, I'm committed to keeping my work on this topic. However, I would like to receive and advice about how to continue once this workgroup ends. Because I'm not a teacher or an academic researcher, I don't know which could be a good way to share the progress and troubles of my work and improve based on the feedback. Is there any online community to keep the exercise going? Any other advice?
    Thanks a lot :)

    Directly working with github, not only for research, but also to reassemble and distribute the findings might be an elegant way to go further. It also allows other users to watch your work and get in touch with you via the discussions. I'd love to follow your research and progress over there on github.

  • Great question.

    One method would be to create a web-accessible repo with your code and use its facilities to add comments, create analysis in logs or documentation files, experiment with modifications using named branches, or use the issues feature to open questions that you want to investigate / resolve. This would then give you urls that you could tweet / email etc. For example, if you used GitHub, you could also invite or @ directly people already on that platform to have code-centric conversations.

    Another would be to create a research blog that hosts a diary of your work -- e.g. WordPress, Tumblr etc.

    Another would be to choose an appropriate forum -- e.g. a forum on Unity programming, for example -- and start a long-running mega-thread on your investigation. This would depend on the forum and its community norms, of course.

    I wonder if anyone else has suggestions on this?

    Currently the Working Group doesn't host a running forum / listserv for ongoing projects, but we could also think about the possibilities there.....

Sign In or Register to comment.