From the blog

Upgrading from Legacy Analytics to Unity Gaming Services Analytics

To put more resources into our upgraded Analytics platform, we will stop investing in Legacy Analytics with the aim of sunsetting the product by the end of 2022. It is advised that new projects are created with the new Unity Gaming Services Analytics platform and we also recommend using this guide to migrate existing projects over.  Transitioning a live game to a new Analytics solution can be difficult, so we’ve designed a data pipeline so you can run Analytics and Legacy Analytics in parallel. The Core Events data (from July 2021 onwards) from your Legacy Analytics integration will be automatically imported into the new Analytics solution.  Metrics such as DAU, MAU, session length, revenue, and others will be populated in the new Analytics solution for a trial of the product ahead of implementing the SDK. Please note that this does not cover any Custom Events that you have defined; these will need to be redefined both in your game code and the dashboard – see the tech docs guide for more information. Note: No duplication or double counting will occur, standard events being triggered by the Analytics package will take precedence over imported data for each individual player.  Want to learn more about Unity Gaming Services Analytics? Register here for our free UGS Analytics bootcamp on May 17 at 12 PM EST/ 9 AM PST and get a live overview of everything you need to know for your next project. If you have any concerns or questions, please contact our support team here or reach out to your client partner and we’d be happy to help you through this transition.

Read More

DevOps in Education 2021 Survey results

In fall 2021 we launched our second annual DevOps in Education Survey. Over 460 respondents from all regions of the world shared insights on how DevOps and GitLab are transforming higher education. Key findings One platform for the win: Respondents’ enthusiasm for teaching GitLab’s single DevOps platform increased 190% over 2020; survey takers also pointed to the way GitLab can tie culture to operations as key (up 189% year over year), and they also value student portfolio management (up 200%). CI/CD success: Academic institutions reported high rates of adoption of GitLab’s CI/CD features both within the classroom and in all other use cases. Flexibility is key: Deployment flexibility stands out again as a major advantage of GitLab at institutions of higher education. Security and authentication are the primary drivers. GitLab spreads the DevOps love: Multiple departments within an academic institution are reporting they’re now using GitLab and 21% of respondents said the ability to install multiple instances across a campus was a GitLab advantage (up 6% from 2020). …and more spread = branching out: Because GitLab has one complete platform, higher ed. respondents report they’re expanding their DevOps footprint to include additional stages like Secure. The three most used stages in education continue to be Source Control Management, Plan, and Verify. Release and Package are also seeing nearly 30% adoption by respondents. Planning features: Educators find planning features such as multi-level epics, issue tracking features, labels, and project management highly useful tools. Why DevOps belongs in the classroom The benefits of teaching or learning GitLab came through clearly in the survey. The fact that GitLab is a single DevOps tool was key for 58% of respondents, up from just 20% in 2020. What are the benefits of teaching or learning GitLab? How GitLab in education works Deployment flexibility is critical to universities because security and server access can be controlled (81%), all while integrating with user authentication systems (54%). The ability to host multiple instances per institution was also a factor for 21% of respondents, up 6% from last year – another sign that cross-campus adoption is growing. Advanced features (only available in the Ultimate tier) are used by 35% of respondents, which remained fairly consistent from 2020. Security features including container scanning, SAST, advanced security testing, custom DAST, and compliance management were among the most frequently mentioned. Multi-level epics and free guest users were commonly mentioned as well. Use cases and DevOps stages The most common use of GitLab in education was source control management with 53% of respondents actively using, followed by Verify (Continuous Integration) at 40%, Plan (issue tracking, labels) 38%, Manage (authentification, compliance management) at 28%, Package 29% and Release (Continuous Delivery) at 29%. The top four tools other than GitLab used by respondents were GitHub (76%), GitHub Actions (24%), Jenkins (26%), and BitBucket (17%). Faculty respondents noted the value of bringing industry tools to the classroom. One wrote, “Thank you for the GitLab Program. It makes it possible for us to manage students’ software engineering projects in a modern development environment.” Leveraging GitLab to boost skills The 2021 survey asked an additional question regarding what specific skills are being taught with GitLab in the classroom. The three top skills taught with GitLab are: CI/CD (40%), collaboration and communication (36%), application development and design (30%). Other […]

Read More

Learn Python with Pj! Part 4 – Dictionaries and Files

This is the third installment in the Learn Python with Pj! series. Make sure to read Part 1 – Getting started, Part 2 – Lists and loops, and Part 3 – Funcitons and strings. I’ve learned a lot with Python so far, but when I learned dictionaries (sometimes shortened to dicts), I was really excited about what could be done. A dictionary in Python is a series of keys and values stored inside a single object. This is kind of like a super array; one that allows you to connect keys and values together in a single easily accessible source. Creating dictionaries from arrays can actually be very simple, too. In this blog, I’ll dig into how to create dictionaries and how to read and write files in the code. Dictionaries Dictionaries in Python are indicated by using curly braces, or as I like to call them, mustaches. { } indicates that the list you’re looking at isn’t a list at all, but a dictionary. shows_and _characters = { “Bojack Horseman”: “Todd”, “My Hero Academia”: “Midoriya” “Ozark”: “Ruth” “Arrested Development”: “Tobias”, “Derry Girls”: “Sister Michael”, “Tuca & Bertie”: “Bertie” } This is a dictionary of my favorite TV shows and my favorite characters in that show. In this example, the key is on the left and the value is on the right. To access dictionaries, you use a similar call like you would for a list, except instead of an element number, you would put the key. print(shows_and_characters[“Ozark”]) would print Ruth to the console. Additionally, both the key and value in this example are strings, but that’s not a requirement. Keys can be any immutable type, like strings, ints, floats, and tuples. Values don’t have this same restriction, therefore values can be a nested dictionary or a list, in addition to the types mentioned for keys. For instance, the following dictionary is a valid dictionary. shows_with_lists = { “Bojack Horseman”: [“Todd”, “Princess Carolyn”, “Judah”, “Diane”], “My Hero Academia”: [“Midoriya”, “Shoto”, “All Might”, “Bakugo”, “Kirishima”], “Ozark”: [“Ruth”, “Jonah”, “Wyatt”], “Arrested Development”: [“Tobias”, “Gob”, “Anne”, “Maeby”], “Derry Girls”: [“Sister Michael”, “Orla”, “Erin”, “Claire”, “James”], “Tuca & Bertie”: [“Bertie”, “Speckle”, “Tuca”, “Dakota”] } In this example, each value is a list. So if we tried to print the value for the key ”Derry Girls”, we would see [“Sister Michael”, “Orla”, “Erin”, “Claire”, “James”] printed to the console. However, if we wanted the last element in the value list, we’d write shows_with_lists[“Derry Girls”] [-1]. This would print the last element in the list, which in this case is James. Dictionaries can be written manually, or, if you have two lists, you can combine the dict() and zip() methods to make the lists into a dictionary. list_of_shows = [“Bojack Horseman”, “My Hero Academia”, “Ozark”, “Arrested Development”, “Derry Girls”, “Tuca & Bertie”] list_of_characters = [[“Todd”, “Princess Carolyn”, “Judah”, “Diane”], [“Midoriya”, “Shoto”, “All Might”, “Bakugo”, “Kirishima”], [“Ruth”, “Jonah”, “Wyatt”], [“Tobias”, “Gob”, “Anne”, “Maeby”], [“Sister Michael”, “Orla”, “Erin”, “Claire”, “James”], [“Bertie”, “Speckle”, “Tuca”, “Dakota”]] combined_shows_characters = dict(zip(list_of_shows, list_of_characters)) print(combined_shows_characters) This is one way to create a dictionary. Another is called Dictionary Comprehension. This one is a little more work, but can be used in a variety of different ways, including using a bit of logic on a single list to generate a dictionary using that original list. Here’s […]

Read More

3 Steps To Finding The Perfect Android App Builder Software

Android Studio is indeed the go-to Android App Builder Software for creating Android applications with Java or Kotlin. Since applications built with Java and Kotlin provide full native app development and all the available features, it really provides long-term success. Moreover, the community around Java and Android Studio is vast, and if there are issues that arise, there is a hundred per cent guarantee you can find the solution easily. But there are some cases where the Android Studio with Java or Kotlin cannot be a solution.  Android is very likely the most popular operating systems for mobile and portable devices with the flexibility to deploy primarily any device that can handle it. It is projected to grow and dominate not in just mobile, tablets, PCs, cars, set-top boxes, smartwatches, home appliances, and more. For these reasons, learning how to create Android applications is a must, but choosing the proper Android development framework and a programming language is tricky with its app development ecosystem. For instance, you can see an Android developer using Android Studio but also looking for other options to develop apps with more productivity. I help you select the right Android app builder and the proper framework for your projects. How to compare Android app builders and Frameworks? It really depends on the company. For instance, start-ups use hybrid app development technologies mainly because they are free and open-source but, in reality, do not provide much productivity and higher security over your code. Numerous Android app development frameworks share many identical characteristics. But with their certain unique features, creating specific types of projects can be more accessible. Moreover, the app builder environment also plays a significant role. For instance, one framework can be used to create e-commerce apps which have easy to integrate solutions for third party services but lacks graphical user interface development. Or it requires you to work with XAML to design UI, which is not productive and not intuitive at all. Here are some criteria you should know to compare framework and Android app builders: Cross-platform capability Popularity and resourcefulness Easy & Fast UI Designing Choosing a cross-platform framework where you can build native but cross-platform applications with one codebase is no news in the current state of technology. But not all framework and development platforms support this power with the ideal architecture. FireMonkey framework, with its RAD Studio app development ecosystem, you can get all the modern features and environment to build any application that can run on major platforms like Android, iOS, Windows, macOS and Linux. Additionally, you can create business-oriented web applications. The best thing about the RAD Studio development environment is that you can prototype and design applications 5x faster than most other app builders. It gives you the low code app development platform and traditional software engineering ecosystem. Why should you select RAD Studio for your Android app development? First of all, I recommend you try out the Delphi Community Edition or RAD Studio trial version to build various types of applications. When you install the IDE with its framework and libraries, you get a set of sample applications. You can see how simple and fast to create different applications with the RAD Studio platform. Official support for recent updates of OSs The Delphi 11.1 release adds official support […]

Read More

Extend TMS WEB Core with JS Libraries with Andrew: Epic JSON Primer (part 1)

For the rest of this document, we’re going to be doing triple the work – showing the JavaScript version (JS), the TMS WEB Core wrapper version (WC), and the Delphi version (PAS) of each scenario, presented as a block of code suitable for inclusion (and tested!) within a TMS WEB Core project, which supports all three of these seamlessly.  If you were working on a part of a project that used only Delphi VCL code, you could use just the PAS code equally well there.  Or if you were working on a part of a project that used pure JavaScript, then the JS code within the asm … end blocks would work just as well in that environment.  We’ll even cover a little bit about moving between these three environments.   To begin with, we’ll need to know how to define variables to reference JSON objects. We’ll also need to know how to supply JSON to them (sometimes referred to as serialization), and how to see what they contain (de serialization). For the sake of simplicity, we’re going to show our work using console.log() which works in both Delphi and JavaScript in our TMS WEB Core environment. Simply substitute with ShowMessage or some other equivalent debugging output if you’re working in any other environment.   But why do we have to define variables at all?  Well, one of the key differences between JavaScript and Delphi is how data types are managed.  Delphi is a strongly-typed language meaning that, at nearly every step, the data type assigned to a variable is known, usually in advance of its being used.  And these data types tend to be rather specific in nature.  A JSON Object is not necessarily interchangable with a JSON Array, for example.  JavaScript, on the other hand, is a weakly-typed (some might even say non-typed) language.  Data types are sort of an afterthought and you can write all kinds of code without having to think about what kind of data is flowing through it.   There are significant trade-offs to both approaches.  JSON is also very closely tied to the JavaScript language itself, and some aspects of the JavaScript language that have evolved over the years have led to significant improvements in using JSON in that environment. The overall result is that the JS code we’ll be showing tends to be very short, sometimes a little cryptic, but often very efficient.  The Delphi equivalents often have to do a little more work to achieve the same thing, but not always less efficiently, as we shall see. Using JS code in TMS WEB Core just involves wrapping it in an asm … block.  We’re not using any other libraries or supporting code to do our work here. The WC variations similarly will work without anything special in terms of the TMS WEB Core environment.  The classes we’ll be using are there by default, collectively referred to as the TJS* classes.  For Delphi though, we do need the extra little step of adding WEBlib.JSON to the uses clause of our project (or Form, etc.).  This brings in the TJSON* classes that we’ll be using. Here then is our sample WebButtonClick procedure that we’ll use in nearly every example that follows.  It will start with whatever JS, WC or PAS variables we need and then contain […]

Read More

Extend TMS WEB Core with JS Libraries with Andrew: Epic JSON Primer (part 2)

20 : Relative Performance. I’ve often heard that while it is possible to use the TJSONObject variant of these approaches (the PAS code we’ve been working so diligently on), it is preferable instead to use the WC variant as it will be better performing.  We’ll put that to the test here in a bit of a contrived example.  Often, readability and re-usability of code is more important than straight-up performance, particularly for difficult code that isn’t executed frequently. But at the same time, situations certainly do come up where a bit of code is executed frequently in a tight loop, and squeezing out every bit of performance is important. procedure TForm1.WebButton1Click(Sender: TObject); var   WC_Object: TJSObject;   PAS_Object: TJSONObject;   ElapsedTime: TDateTime;   i: Integer;   Count: Integer; begin   ElapsedTime := Now;   // JS Create 1,000,000 Objects   asm     var JS_Object = {};     for (var i = 0; i

Read More

Setting the vision for Unity DevOps

Q: Why is Plastic SCM being prioritized over Collaborate going forward? A: Collaborate was never designed to be a fully-featured VCS solution, which Plastic SCM is. The Plastic SCM technology is also a better fit for Unity creators’ needs, since it was designed specifically for real-time 3D, with separate workflows for artists and programmers, and support for handling large files and binaries common to RT3D development.  Q: What’s happening to the versions of Unity Teams bundled into Unity Editor subscription plans? A: Starting May 5, 2022, new subscribers to Unity Pro and Enterprise will no longer receive any allocation of Unity Teams. You can take advantage of Plastic SCM’s cloud edition for version control, which is free for up to three users and 5 GB per month, and then pay as you go pricing. Cloud Build has pay-as-you-go pricing. Q: What are Unity’s current DevOps offerings? A: Currently, there are two separate components, each available for purchase separately – Plastic SCM for version control and Cloud Build for CI/CD. Q: As an existing Cloud Build customer, will my pricing change? A: No, it won’t change. As an existing Cloud Build user, you will continue to have access to your current pricing and capabilities for the foreseeable future and until we move all Unity products to Cloud Build 2.0. You will receive notice 60 days in advance of changes to your account prior to conversion to Cloud Build 2.0. Note that access to larger repositories and increased concurrency limits will be unavailable if you choose to keep the old Cloud Build pricing, along with many of our planned innovations. Q: How does the new Cloud Build pricing work? A: Cloud Build 2.0 pricing is completely metered. You will only pay for what you use. Users are charged for build minutes, based on the platform they are building for. For Windows the price is $0.02/min; for Mac the price is $0.07/min; and it’s $10 per build machine concurrency. Q: Can I use version control in Unity, or do I need a separate client? A: Unity Plastic SCM works in the Unity Editor, and it can also be accessed via a separate desktop client. In supported versions of the Editor, Plastic SCM users  can check-in, check out, lock files, view file history, and even create and switch branches as well as choose to install a seperate desktop client. For former Collaborate users, see this user’s guide to switching to Plastic in Unity. A list of supported versions for the in-Editor experience is available here. Q: Can you use Cloud Build with Plastic SCM? A: When setting up Cloud Build, you can choose to connect to Unity Plastic SCM as your source control. If you previously used Collaborate for this workflow, you will need to take action to connect Cloud Build to Plastic SCM. Follow this video guide here.

Read More

Our biggest e-book yet: 2D game art, animation, and lighting for artists

Unity’s suite of 2D tools provides creators with endless possibilities. This guide unpacks key decisions to tackle at the start of your project, as well as best practices for leveraging Unity’s 2D toolset. It’s specifically tailored to developers and artists with intermediate Unity experience who want to make high-end 2D games, independently or collaboratively with a team. The e-book was written by Jarek Majewski, a professional 2D artist, Unity developer, and creative director of our 2D demo, Dragon Crashers, together with input from several Unity 2D experts, such as Rus Scammell and Andy Touch.

Read More

The Things You Missed From Delphi 27th Anniversary Webinar

Delphi recently celebrated its 27th anniversary and in line with this celebration is a special webinar hosted by Jim McKeeth along with other Embarcadero MVPs like Ian Barker, Kyle Wheeler, David Millington, and Marco Cantu. In connection with this year’s team “Building the Future”, the panel will discuss the future of Delphi and how it continues to shape the future of software development. The video highlights some exciting topics from useful windows app development tools like Skia4Delphi to some useful modules and libraries like Python4Delphi and more. See an introduction to WinUI 3 The webinar will first introduce us to the so-called “Ultimate Delphi eBook bundle” that is composed of useful eBooks to help you master Delphi. These include the Object Pascal Handbook by Marco Cantu, Code Faster in Delphi by Alister Christie, and eBooks by Nick Hodges including the Dependency Injection in Delphi, Coding in Delphi, and More Coding in Delphi. The panel will also discuss the WinUI 3 which is said to be the next generation of Microsoft’s Windows UI library. The video will highlight some of its runtime components, XAML-Based UI Elements, and Event handlers. Learn all about the Skia4Delphi project Ian Barker will also discuss more about the Skia4Delphi, an open-source 2D graphics library that provides common APIs that work across a variety of hardware and software platforms. Barker will revisit his Star Trek-inspired data dashboard that was built using the Skia4Delphi library. It is also interesting to note that Paulo César and Vinícius Felipe Botelho Barbosa, the duo behind Skia4Delphi were announced as Delphi Award Winners for the year 2021. Did you know about the Python Library for Delphi? The webinar will also revisit some familiar topics including the Python4Delphi Library which provides a set of free components that wrap up the Python DLL into Delphi which makes it very easy to use python as a scripting language for Delphi applications. It will also highlight both the Delphi VCL for Python and Delphi FMX for Python modules and the benefits of using two different programming languages in one development environment. To learn more about the future of Delphi, feel free to watch the webinar below.  

Read More

How To Become An Expert At The Best Low Code App Builder

Together, in previous articles here on the Embarcadero blog, we have been learning about low code or no code platforms. We learned how RAD Studio helps increase productivity with its fast time-to-market ecosystem and low code mindset. Helping you get your apps created with you only needing to write the smallest amount of code possible is what RAD Studio Delphi and C+ Builder has always been about right from the first days of their release. If you are not aware of our previous low code articles, check them out! With those, you can learn: What is low code movement Differences in low code tools The position of low code tools in the market Universal platform for building apps with low code Other unique features of RAD Studio development environment And 20 fun facts about low code platforms So, I consider you have already read the previous articles and know about the basics of low code movement. This article will show you the steps or must-dos you should follow to become an expert at the best low code app developer. Are you a Professional or a Citizen Developer? Anyone can use low code tools to build applications based on their idea, and these people are called citizen developers. Professional developers mostly create more reliable, stable and scalable platforms with their engineering knowledge. The exciting part is that, according to a Gartner survey, 66% of low code development platform users are professional developers from the IT department of the enterprise. For instance, developers who build apps with RAD Studio can prototype and design everything with 5x or 10x fast productivity and can extend the application with custom code where you can create a more functional app. I am here telling you that consider what you will do and who you want to become with these tools! For instance, if you love engineering and solving problems by writing/integrating/glueing up things, you should become a RAD Studio Developer. RAD Studio is the ecosystem for developers who love productivity and appreciate its time. RAD Studio’s GUI development environment is one of the greatest among any other development tools. Because of its hundreds of built-in visual and non-visual components, you can develop a working prototype in seconds and work on custom functionalities. Moreover, the data connectivity solutions are the best in class. How to become an expert at the best low code app builder? In order to become an expert in any area, you must be genuinely interested in the subject. To become a RAD Studio Developer, you should learn Delphi or C++ programming languages. Being an expert with RAD Studio is not about learning the whole Delphi or C++ language; it is more about correctly using the things you have. For instance, a tutorial shows how to become an experienced Delphi developer.  After completing these steps, it is better to see how the real-world RAD Studio developers are doing to solve problems. For example, several times a month, there will be workshop events where you can learn how to do things and ask questions from professional developers. Additionally, discover new open-source projects that can improve your development process. How to understand Low Code tools? Last semester while taking the System Analysis class, I learned so much about project planning and analysing the system requirements. In the […]

Read More