Noutați

Getting to grips with Tentacular, Firepunchd’s chaotic kaiju “constructathon”

Optimizing the quest system Progression in Tentacular is structured by main and side quests, each with their own stories and levels organized as Scriptable Objects. The quest system contains all elements from the game as well as the scenes that Firepunchd needed to load during each build. This enabled them to manage progression from one centralized location. “Some games manage this data with long lists, but I prefer modules,” shares Cubasch. “I can just click or duplicate a module, and I really like that workflow.” Structuring quest data with Scriptable Objects helped manipulate game data and keep Reference Exception errors to a minimum. “If we need to add more stuff or delete, it’s very easy to make adjustments,” specifies Scaramuzzino. “The iteration of level creation was much smoother because of that.” Speeding up character design Scriptable Objects also influenced character creation. The team worked on a large number of individual character assets – eye color, hair color, clothing, and headgear – and used parameters to generate configurations randomly. This sped up Prefab creation considerably. Most background characters are fully randomized, whereas main characters are customized in the Unity Editor. These Scriptable Objects are then exported and dropped into the game, where Prefabs are generated at runtime. Managing localizations To simplify switching between languages, Firepunchd linked a Scriptable Object to the database containing Tentacular’s localization strings. The Scriptable Object has functions for checking against the font/typeface and presence of certain characters. “We probably could have done this with different tech,” admits Cubasch, “but because Scriptable Objects are so convenient to use, for us it’s always a good place to go.” “All of the localization strings are in a Google Sheets document. You can pull the data from a Google document using the Google API and populate the Scriptable Object,” explains Scaramuzzino. “This way, we can be sure that every time we build, we have the latest version of the localization files.”

Read More

10 Signs You Should Invest in Cross Platform Apps

Cross platform apps are becoming increasingly popular as they allow users to access their favorite apps and programs on multiple devices. If you are considering investing in cross platform app development, here are ten signs that it’s a good idea! How to determine if your business needs cross platform apps If you are not sure whether your business needs cross platform apps, there are a few things you can consider.  First, think about what kind of business you have. For example, cross platform apps might not be necessary if you have a brick-and-mortar store. However, a cross-platform app could be very beneficial if you have an online or service-based business. Second, think about what kind of customer base you have. If your customers primarily use iOS devices, then an iOS app might be all you need. However, if your customers are using various devices, cross-platform apps could be beneficial for reaching them all.  Third, think about your budget. Developing an app can be expensive, so you’ll need the device if the benefits of cross platform apps are worth the cost.  Ultimately, only you can decide whether cross platform apps are the right for your business. However, these are some things to remember as you make your decision.  Do you want to reach the broadest possible Audience with cross platform apps? Cross platform apps are becoming increasingly popular in reaching the possible broadcast audience. Cross platform apps can be installed on various devices, including smartphones, tablets, and computers. This means that your app will have the potential to reach a wide range of people.  Are you targeting multiple demographics? If you’re trying to reach multiple demographics with your app, then cross platform development is a good option. This way, your app will be accessible to a broader range of people.  Targeting a precise user or users across multiple platforms is called cross-device targeting or cross-device marketing. The main goal is to analyze and understand your audience so that you can reach them through their favourite platforms or mediums. Do you want to improve employee productivity by using cross platform tools? If you want to improve employee productivity, investing in cross platform apps is a pragmatic approach. Utilizing cross platform app development tools provides a set of flexibilities to software engineers. With the correct cross platform app development ecosystem, employees can collaborate on projects regardless of where they are. This ensures that deadlines are met, and tasks are completed efficiently. With the RAD Studio ecosystem, you can get the highest productivity level. For instance, hundreds of built-in components and the UI development environment are among the best in the market. The latest version of RAD Studio 11.1 Alexandria has all the latest functionalities and support for the latest technologies. Besides, the pool of third-party components is so prominent in Delphi and FireMonkey ecosystem that if you want to make something big, there is already a library or component available. Do you need an app that can be used on multiple devices? If you need an app that can be used on multiple devices, then investing in cross platform apps is the best idea. Cross platform apps are designed to work on numerous operating systems with exact functionalities (except the UI/UX). Moreover, investing cross platform apps is also a good idea if you want […]

Read More

What Is A Low Code Application Platform? An Overview

The idea of a low code application platform has become a trend in recent years. By 2024, Gartner projects that low code will comprise more than 65% of app development activity. The need to offer digital solutions for COVID-19 has increased this trend. It’s vital to understand the notion of low code. A low code platform is a development environment. It allows non-technical users to create applications. These apps can be deployed on the cloud. Low code platforms use visual programming languages. They are typically compatible with multiple devices. Also, they are featured to work with operating systems. With a little research, you can easily find a perfect low-code application platform for you that suits your needs.  What is a low code application platform? The low code application platform is a method of designing and developing software. They are specifically used to design software with no coding. Low code application platforms enable enterprises to create unique solutions. For these unique solutions, they provide cutting-edge features. These features are tailored to certain business models. These platforms provide easy visual builders, ready-to-use code snippets, and form & report templates. They also have built-in connectors. These are used to accelerate development. Also, they expand the potential to innovate to a wider audience. Users can also get right to work on their apps. These platforms automate common coding tasks. These common coding tasks include framework creation, data modeling, and user interface development. What are the benefits of using a low code application platform? Here are some advantages of low-code development. A low code application platform is often easier to use The platforms provide drag-and-drop interfaces and visual editors. They allow non-technical business users to create apps quickly. Business users can design screens using the platform’s visual editing tools. They can easily connect them with data sources, business rules, and other functionalities via connectors. This makes it possible to develop complete custom applications. Also, there’s no need to write any code as well in these low code application platforms.  A low code application platform can promote increased development agility Low-code platforms can help companies accelerate application development. With them, they can create custom applications quickly. Also, teams can work together better. Thus, they can work on the same app in real-time. A low code application platform allows you to create interfaces with Drag-and-Drop Drag-and-drop usage is available on every established low-code platform. It is one of the most significant and beneficial elements. It facilitates the development process.  It assists both citizen hobbyist and professional developers. The time to market can be much quicker with a low code application platform Low code platforms allow businesses to create applications. These apps can be deployed directly and quickly. This means that businesses can get their products and services to market faster. This is important in today’s fast-moving environment. Lower usage cost Low code platforms are cheaper than traditional software development. They do not require developers to write code manually. Low code platforms are also easy to use. Less experienced IT experts can operate them without compromising processor security. Increased productivity with low code application platforms – little or no code means less work and more efficiency Because low code platforms are so intuitive, you can build your entire application without writing any code. This means that you don’t […]

Read More

An SA story about hyperscaling GitLab Runner workloads using Kubernetes

The following fictional story1 reflects a repeating pattern that Solutions Architects at GitLab encounter frequently. In the analysis of this story we intend to demonstrate three things: (a) Why one should be thoughtful in leveraging Kubernetes for scaling, (b) How unintended consequences of an approach to automation can create a net productivity loss for an organization (reversal of ROI) and (c) How solutions architecture perspectives can help find anti-patterns – retrospectively or when applied during a development process. A DevOps transformation story snippet Gild Investment Trust went through a DevOps transformational effort to build efficiency in their development process through automation with GitLab. Dakota, the application development director, knew that their current system handled about 80 pipelines with 600 total tasks and over 30,000 CI minutes so they knew that scaled CI was needed. Since development occurred primarily during European business hours, they were interested in reducing compute costs outside of peak work hours. Cloud compute was also a target due to acquring the pay per use model combined with elastic scaling. Ingrid was the infrastructure engineer for developer productivity who was tasked with building out the shared GitLab Runner fleet to meet the needs of the development teams. At the beginning of the project she made a successful bid to leverage Kubernetes to scale CI and CD to take advantage of the elastic scaling and high availability all with the efficiency of containers. Ingrid had recently achieved the Certified Kubernetes Administrator (CKA) certification and she was eager to put her knowledge to practical use. She did some additional reading around applications running on Kubernetes and noted the strong emphasis on minimizing the resource profile of microservices to achieve efficiency in the form of compute density. She defined runner containers with 2GB of memory and 750millicores (about three quarters of a CPU) had good results from running some test CI pipelines. She also decided to leverage the Kubernetes Cluster Autoscaler which would use the overall cluster utilization and scheduling to automatically add and remove Kubernetes worker nodes for smooth elastic scaling in response to demand. About 3 months into the proof of concept implementation, Sasha, a developer team lead, noted that many of their new job types were failing with strange error messages. The same jobs ran fine on quickly provisioned GitLab shell runners. Since the primary difference between the environments was the liberal allocation of machine resources in a shell runner, Sasha reasoned that the failures were likely due to the constrained CPU and memory resources of the Kubernetes pods. To test this hypothesis, Ingrid decided to add a new pod definition. She found it was difficult to discern which of the job types were failing due to CPU constraints, which ones due to memory constraints and which ones due to the combination of both. She knew it could be a lot of her time to discern the answer. She decided to simply define a pod that was more liberal on both CPU and memory and have it be selectable by runner tagging when more resources were needed for certain CI jobs. She created a GitLab Runner pod definition with 4GB of memory and 1750 millicores of CPU to cover the failing job types. Developers could then use these larger containers when the smaller ones failed by adding the […]

Read More

Mobile performance optimization with Adaptive Performance 4.0

Boat Attack starts off with plenty of scalers engaged by the menu scene, which was stabilized before the capture was done. In this example, the temperature rises quickly and the device goes into throttling. Adaptive Performance tries to stabilize the situation and reduce effects on the GPU, as this is clearly the bottleneck. The shadow scalers thereby reduce quality rapidly – but because that’s not enough, both the view distance and resolution decrease as well. The frame rate then stabilizes and the temperature drops. The game is rescued from throttling and its frame rate raises to 60 fps. Layer culling scaler With the layer culling scaler, you can dynamically adjust layer cull distances at runtime. This feature uses the indexer system to make certain decisions, like when and how much to increase or decrease layer cull distances for optimal performance and thermal stability. The sample we ship with Adaptive Performance loops in medium CPU load until it reaches critical frame rates and then decreases the cull distance of layers. The result of this is that the cull distance for layers changes depending on the CPU and GPU load. You can set a different value for the culling distance of each layer so that they scale proportionally. This helps you determine which objects to cull earlier to save performance. For details on how to do this, see the following code sample. Adaptive decals Adaptive decals target visual effects. In Amazing Adventures of Dr. Arm, there is a boss fight scenario that uses many particles and decal projectors. When the mobile device gets hot and throttling is imminent (or already occurring), the number of particles emitted scales down. In this case, less visually important emitters, things like the leaves blowing in the wind, tiny sparks, and other such elements, turn off completely. The scaler also reduces decal distances.

Read More

5 Easy Things To Learn Today About C++ Software

Hello Developers, C++ is one of the oldest and stronger programming language. It has many functions and methods to manipulate strings and doing string operations as fast as possible in your C++ software. These options and different string types allow you to develop low memory usage and faster applications in all sorts of situations. Today we will continue to look at some more string and wide string operations available in modern C++. We will learn to obtain string capacity and length. We will also learn how to compare strings. Iterators are another modern feature of C++ and we will learn how to use how to use then with Wide Strings. One of the important things is reading and writing text files. Also, we take a look at how to use wide strings in file I/O operations. Finally, we learn to use Form Properties of C++ Builder, Delphi and RAD Studio. Head to LearnCPlusPlus.org to learn all about how to create C++ software LearnCPlusPlus.org is packed full of great articles for professionals and beginners alike. The posts vary from articles suitable for people who are just starting to learn C++ – basics like string handling, pointers, loops, and all those fundamental building blocks of this rich and powerful programming language – to much more in-depth and advanced subjects like artificial neural networks and AI, along with the math behind it. Our focus is on the C++ language, particularly modern C++, and will work with almost any environment and IDE software you can choose although, of course, we believe RAD Studio C++ Builder is the best option! If you are new to RAD Studio, we think these posts may help you as much as a rapid introduction to programming in C++, all the way to the most robust, modern, and latest techniques for those more experienced with the language. For those who are perhaps wanting to expand their knowledge with the most up-to-date features, routines, and methodologies this is a great little boost (pun intended) to your C++ knowledge. The new RAD Studio 11, C++ Builder 11, Delphi 11 are released with great new features and we are developing and testing new examples for you with the latest RADS 11 that means.LearnCPlusPlus.org examples are working well with the latest C++ Builder. You can see more of our C++ posts on this blog by clicking the following dynamic search link: https://blogs.embarcadero.com/?s=C%2B%2B Here are today’s selections: How can we use C++ Builder in the most modern and efficient ways? These posts are designed to give you more information and to be easy to understand the modern and professional ways that we use in C++. Here are the topics, This Is How String Capacity And Lengths Work In A C++ App How To Make A Comparison Between Strings In A C++ App How To Use Wide String Iterators In Modern C++ Software The Modern Way To Read Formatted Wide Strings In A C++ App How To Use Form Properties In C++ Cross Platform Apps What kind of C++ software questions are we answering? These are the questions that we answer in this collection: How can I use the string capacity and length methods in a C++ app? What kind of methods I can use to get size of a std::string? How can I use the empty() method with strings? How to get length() of a std::string? How can I use size() property of […]

Read More

Extend TMS WEB Core with JS Libraries with Andrew: Tabulator Part 5: Editing Data in Tabulator

In our continuing Tabulator adventures, last time out we barely scraped the surface when it comes to interactions.  We had a little side adventure into tooltips, potentially applicable to many TMS WEB Core projects.  And we got quite a bit further down the path of making our example project, Actorious, more useful. Grid-type controls are a natural fit for effectively organizing and displaying all kinds of data.  But in some cases, we’ll actually want to give the user the ability to make changes to the data, either by editing it directly or by using other elements on the page.  In this article, we’re going to primarily be looking at this special subcategory of interactions and how to get the most out of Tabulator when building editing interfaces into your TMS WEB Core projects. Motivation. As we discussed at the outset of this Tabulator miniseries, the basic concept behind it and similar JavaScript grids is that they ultimately have a bit of a self-centered view of the world. Meaning that they are, in effect, the entire package of data and UI elements.  As developers, we’re basically connecting them up at a pretty high level, providing them with data and letting them do as much of the work as possible from that point on.  When it comes to editing data, this doesn’t really change. Tabulator, in particular, has many options related to editing data, which we’ll get into shortly.  The potential problem, though, is in keeping track of what it is doing in case you need to take those changes and apply them elsewhere, like in the actual data source that you’re using. From a Delphi standpoint, it might help to think of a JavaScript grid as a disconnected TClientDataSet.  You’re basically giving it a block of data.  And when it’s done, you’re getting a block of data (the changes) back.  What format that communication takes is entirely up to you, and we’ve got a few options, as usual. The mechanisms that you ultimately end up using will hopefully result in a very cohesive and highly integrated and performant product.  So let’s have a look at some of those options. Column Definitions. Again. As with so many things in Tabulator, the easiest way to get started is by adding some options to the Tabulator column definitions.  By default, columns are not editable at all, but can easily be set to be editable.  The only question is what kind of editor do you want?  Let’s start with a simple new example project, TabulatorEditor, and then work our way first through a few of the built-in editors.  Quick and easy.  The usual Project.html additions can be used to load the Tabulator library.  If you’re using the JSDelivr CDN, it also offers the ability to combine many libraries into a single request.  We’re going to end up using the latest version of Bootstrap, Luxon and FlatPickr, so why not combine them all.  Here’s what it looks like.             In our WebFormCreate procedure, we can then create a basic Tabulator setup similar to what we’ve done previously. In this case, there are just a bunch of different field data types, so we can play around with how the editors might work. The Tabulator Documentation has plenty of examples, so we’re not […]

Read More

Chart data import in Delphi

TMS FNC Chart v2.0 is a major milestone and we are already collecting feedback and thinking about new features for the next version. We listed some of the top requested features in this blog post, but if you have other exciting ideas, please let us know in the comments. The blog post also gives an overview of what v2.0 brings alongside some very interesting chart related topics! Data Import This specific blog post however, focuses on a very important aspect of application development: data import. TMS FNC Chart is designed with one thing in mind: flexibility. The main goal in the FNC architecture has always been flexibility, and in TMS FNC Chart, this is no different. TMS FNC Chart is capable of importing JSON, CSV & custom data arrays. While designing these specific features, we aimed for loading data with a single line of code, but with the ability to customize the details. After running through installation process, you’ll find a demo which focuses on data import and demonstrates how to bring out the maximum potential of the chart. As a small code snippet, you’ll see how easy it is to add & append data. procedure TForm1.LoadInitialData; var loadOptions: TTMSFNCChartLoadOptions; begin loadOptions := TTMSFNCChartLoadOptions.Create; try loadOptions.YRange := arEnabledZeroBased; TMSFNCBarChart1.LoadFromDataArray(loadOptions, 0, [123, 98, 54, 154, 128, 87, 103], nil, [‘Apple’, ‘Watermelon’, ‘Pineapple’, ‘Pear’, ‘Banana’, ‘Lemon’,’Grapefruit’, ‘Peach’]).LegendText := ‘Sold’; finally loadOptions.Free; end; end; The above code snippet loads the initial data. procedure TForm1.AppendData; var s: TTMSFNCChartSerie; begin s := TMSFNCBarChart1.AddSeriesFromDataArray([0.88, 1.32, 2.43, 0.76, 0.44, 1.03, 1.10]); s.YValues.Positions := [ypLeft]; s.LegendText := ‘Price’; end; Afterwards, we can append data and add new series without having to clear the ones that already exist. Code snippets are great to get started, but what’s even better is a video, explaining the capabilities in detail. Feedback In the coming weeks, we’ll bring out more videos, so stay tuned! Anything you wish to see covered in a video or blog post? Please let us know.

Read More

What Are Cross Platform Programming Languages?

Building cross-platform software is a challenging process. You need to consider many critical aspects for the successful development of the product. Choosing the best cross platform programming languages for development is at the top of that list. This article aims to aid your language selection by discussing cross platform programming languages, their evolution, features, and pros, and cons. A cross platform programming language is a programming language that enables developers to develop apps for various platforms using a single codebase. These apps can run seamlessly on multiple platforms without significant changes. Java, React Native, Flutter, Ionic, Sencha, and Xamarin are some popular cross platform programming languages and frameworks. How did the evolution of cross-platform programming languages happen? Cross-platform programming languages are not something novel. Cross-platform development has been around for more than two decades now. However, each language has evolved distinctly, adapting to various architectures and offering more features. First, C was considered a truly cross platform programming language in the early 70s. It was well-suited for system programming. Furthermore, C was capable of reusing the same source code across entirely different architectures for developing kernels and device drivers. However, it required some minor modifications to the code. After C, some other cross platform programming languages such as C++ and Delphi emerged to enlarge the field of cross-platform development further. C++ as a cross platform programming language C++ is also one of the initial cross-platform languages, even though it couldn’t shift into the world of the web and mobile. C++ is best suited for developing software like operating systems, database engines, game engines, compilers, and servers. At the same time, C++ is a great choice as a cross-platform language. You need to have sound knowledge and familiarity with the ecosystem to develop apps faster using it. Read this article to learn about the best IDE for the C++ newbie. The C++ builder by Embarcadero is packed with a set of robust libraries to boost productivity and deliver amazing user experience. Delphi is one of the most versatile cross platform programming languages Delphi is a strongly typed, event-driven, cross platform programming language with an extensive supportive tools and frameworks ecosystem. It also features a wide range of web and database libraries for the rapid development of apps that work on various platforms such as web, mobile, and internet-enabled devices. Delphi enables you to build a native app. A native app is an application designed to work on a specific device and its OS, utilizing that device’s device-specific software and hardware. These native apps can tap into specific resources, enabling them to easily access several services on a device like an accelerometer, microphone, and push notifications. The latest Delphi 11.1 release of Embarcadero helps you build native apps 5x Faster with a single codebase. Try Delphi 11.1 For Free Why do we need cross platform programming languages? Developing cross-platform software requires coding in a way that removes all the dependencies from a particular platform. To accomplish that, you have to use a programming language that supports you. That is where cross-platform programming languages come into play. The majority of popular programming languages support developing cross-platform software. However, some programming languages work better by supporting many platforms or offering solid abstraction layers to manage the differences between platforms transparently. Embarcadero offers a wide range of products such as RAD Studio, Delphi, and C++ Builder for developing […]

Read More

The Parallel Debugger plugin is now available for RAD Studio 11!

The Parallel Debugger plugin, originally from Parnassus, is now available in GetIt for RAD Studio 11.x (ie 11.0 and 11.1.) This follows up making Bookmarks and Navigator available a few weeks ago. The Parallel Debugger is an addon that lets you see what’s going on in all threads in your app at once. A traditional debugger in the IDE shows only one thread, one call stack, and so forth. The plugin shows you all call stacks for all threads next to each other (ie visually parallel matching that they are running in parallel), adds markup in the editor showing where each thread is executing, color-codes threads, lets you run, step or trace into on a per-thread basis, and more. Read the original announcement blog post to see the full set of features! Screenshot showing some of the Parallel Debugger features: parallel call stacks, coloured threads, extra editor markup, per-thread run/pause/step/trace, etc To install, go to the Tools menu in the IDE, GetIt Package Manager, and select the IDE Plugins section in the category selector on the left. You’ll see it listed: select it and click Install. The Parallel Debugger selected in GetIt. Note there are many other IDE addons in the same category too! The Debugger plugin does stress the various debuggers, because each of them is doing so much more (roughly linearly increased by the number of threads in your app.) It works best on Windows, and we don’t recommend using it for remote debugging, such as for macOS. It adds a new top-level menu called Thread, and in that is a submenu ‘Feature Level’. Keep that on ‘CPU Only’ when you don’t want the Parallel Debugger heavily involved. Then turn it back on when you need to do some debugging in parallel! We hope you find this useful, and helps you debug and understand your app’s parallel actions.

Read More