IT |
気になる、記になる… |
「Google Pixel Watch 2」のレンダリング画像や一部仕様が明らかに ー デザインは「Pixel Watch」から変わらず |
https://taisy0.com/2023/08/18/175505.html
|
google |
2023-08-18 13:46:27 |
IT |
気になる、記になる… |
SwitchBot、公式ストアで8月21日から「夏の大感謝祭セール」を開催へ ー ほぼ全品が最大20%オフに |
https://taisy0.com/2023/08/18/175502.html
|
switchbot |
2023-08-18 13:15:19 |
TECH |
Techable(テッカブル) |
手の形にフィットした“分割型”のキーボード「MOTHWING」発売。デスクワーカーの首・肩の負担を軽減 |
https://techable.jp/archives/217628
|
mothwing |
2023-08-18 13:00:11 |
python |
Pythonタグが付けられた新着投稿 - Qiita |
for で散々盛り上がったようですが... |
https://qiita.com/WolfMoon/items/689cc00ae1e622f49cb7
|
通り |
2023-08-18 22:23:39 |
AWS |
AWSタグが付けられた新着投稿 - Qiita |
はじめてのPluralith~EC2の構成図作成偏~ |
https://qiita.com/yuuun/items/b4f57aa17833dcd7e990
|
pluralithec |
2023-08-18 22:26:07 |
Git |
Gitタグが付けられた新着投稿 - Qiita |
VSCode拡張 Git Graph の設定を調べる |
https://qiita.com/koppe/items/1482689b4d42bf4f9fd8
|
gitgraph |
2023-08-18 22:36:45 |
技術ブログ |
Developers.IO |
[NEW] Amazon IVSで遅延300ミリ秒未満で10,000人へのReal-Time Streamingができるようになりました!! |
https://dev.classmethod.jp/articles/amazon-ivs-real-time-streaming/
|
tivevideoserviceamazoniv |
2023-08-18 13:00:47 |
海外TECH |
Ars Technica |
New Intel GPU drivers help address one of Arc’s biggest remaining weak points |
https://arstechnica.com/?p=1961041
|
intel |
2023-08-18 13:00:58 |
海外TECH |
MakeUseOf |
How to Vectorize an Image in Adobe Illustrator |
https://www.makeuseof.com/tag/convert-image-vector-illustrator/
|
process |
2023-08-18 13:45:23 |
海外TECH |
DEV Community |
A Deployment Preview for Every Branch |
https://dev.to/codesandboxio/a-deployment-preview-for-every-branch-3iea
|
A Deployment Preview for Every BranchAt CodeSandbox we run your code in our cloud infrastructure configure the environment for you and keep your code always ready behind a shareable URL Give it a try with this Next js example or import your GitHub repo You re working on that big new feature and are closer than ever to production worthy So like dozens of times before you hop on the “staging queue hoping that your turn comes quickly enough If this sounds familiar you probably also share the frustration of countless other developers who don t particularly enjoy the complexity and time wasted during this process Long story shortーthere is a better way The rise of cloud development environments like CodeSandbox opens the door to dedicated deployment previews for every branch You always get your own personal staging environment Cloud Development EnvironmentsThere is an undeniably growing momentum around shifting development processes to the cloud Although it might sound like uncharted territory cloud development environments have been successfully implemented at companies like Uber Slack and Pipedrive A “quiet revolution as The Pragmatic Engineer called it One of the key benefits of cloud development environments is greatly accelerating computation heavy processes such as building the code out of developer laptops with limited specs and into a superpowered VM that accomplishes these tasks in a fraction of the time As an example at CodeSandbox we implemented memory snapshotting technology in our microVMs which means that we resume any dev server in under seconds as compared to or even minutes of local compilation timeーdepending on the codebase s complexity While that brings huge productivity improvements Pipedrive engineers reported almost hours saved per week it also paves the way to much much more And one of the powerful “side effects of moving development environments to the cloud is that you get a dedicated deployment preview for every branch Deployment Previews in CodeSandboxAt CodeSandbox we give every branch its own dedicated microVM with very generous base specs When you run a task on that environment like starting a dev server that opens a server on a port we expose that port through a dedicated URL such as https id csb app In other words we transform a local dev server into a dedicated staging environment So you get a preview environment that is fast synced with production and that gives the same experience regardless of the machine of the person accessing it Need to work on something else and go back to the server later on No worriesーbecause we hibernate the microVM the deployment preview resumes in under seconds just like a traditional staging environment Want to get continuous feedback on your work without having to rely on screenshots or recordings of your localhost server Share that preview URL with others and they will be able to use it to provide async feedback at any time without worrying about the ticking time bomb of staging moving to something else Wish you could give team members access to the underlying codebase Send them the URL of your CodeSandbox branch instead and they will be able to experiment with your code and see the results in real time If you re curious to try it out you can do it in under minutes by importing one of your GitHub repos Pull Request PreviewsAfter talking with a lot of our users we realized that this kind of preview is especially valuable during the PR review process As a result we introduced the CodeSandbox GitHub App which adds links to every PR that lead to the branch running in CodeSandboxーwhich means that PR reviewers can use the deployment preview to review instead of running their own dev server If you want to take it up a notch you can also add another link that leads directly to the preview itself Check out our Docs for instructions Once that s done every new PR in that repo will get these handy links available to all team members allowing them to get visibility on ongoing work and save hours every week reviewing and testing the PR The Joy of Queue less StagingPreview environments are a much bigger deal than they seem at first glance Whenever someone asks me why I m so excited about them I like to bring up this feedback from one of our users I looked at a PR made some changes together previewed them live and pushed them All without checking out anything locally This probably saved me hour right now ーTkDodo Frontend Tech Lead at AdverityOf course we get itーnot everyone is ready to commit to moving their development infra to the cloud That s why we made it super easy to test it out by importing a public repo in our free plan or a private repo with a free trial Follow our tutorial and you can pretty much try everything in less than minutes Then you ll see the joy of never having to wait for a dev server or on the staging queue ever again |
2023-08-18 13:38:11 |
海外TECH |
DEV Community |
CAP Theorem |
https://dev.to/rajrathod/cap-theorem-2681
|
CAP Theorem CAP TheoremThe CAP theorem also known as Brewer s theorem is a fundamental concept in distributed systems that outlines the limitations of achieving three important properties simultaneously Consistency Availability and Partition tolerance It was introduced by computer scientist Eric Brewer in The theorem states that in a distributed system it s impossible to achieve all three of these properties under certain conditions Here s a detailed explanation of the CAP theorem Consistency Consistency refers to the property that all nodes in a distributed system have the same view of data at any given time In other words if a value is written to one node any subsequent reads from any node should return that same value Achieving strong consistency ensures that all nodes agree on the current state of the data This property is crucial in scenarios where data accuracy and correctness are of utmost importance Availability Availability refers to the system s ability to respond to requests and provide meaningful responses even in the presence of failures A highly available system ensures that users can interact with the system and receive responses to their requests regardless of failures or other issues that might occur in the system Partition Tolerance Partition tolerance refers to the system s ability to continue functioning despite network partitions or communication failures between nodes In a distributed system network failures or partitions can occur causing some nodes to be isolated from others Partition tolerance ensures that even when network communication breaks down between certain nodes the system can continue to operate and serve requests The CAP theorem states that in a distributed system it s possible to achieve at most two out of the three properties simultaneously However it s not possible to achieve all three properties In other words If a distributed system prioritizes Consistency and Availability CA it might need to sacrifice Partition Tolerance This means that in the event of a network partition the system might have to become temporarily unavailable to maintain consistency If a distributed system prioritizes Consistency and Partition Tolerance CP it might need to sacrifice Availability This means that the system could remain available but might return inconsistent data in certain scenarios If a distributed system prioritizes Availability and Partition Tolerance AP it might need to sacrifice strong Consistency This means that the system could provide quick responses and remain operational even in the presence of network partitions but it might provide slightly outdated or inconsistent data It s important to note that the CAP theorem is not about making binary choices between the properties rather it highlights the trade offs that need to be considered when designing and operating distributed systems Different systems have different requirements and priorities and the choice of which two properties to prioritize depends on the specific use case and desired system behavior In practice many modern distributed systems and databases offer configurable levels of consistency and availability to allow developers to make informed choices based on their application s needs Some systems also leverage techniques like eventual consistency where data might be temporarily inconsistent but eventually converges to a consistent state over time The CAP theorem provides valuable insights into the challenges of designing and operating distributed systems and helps guide decisions about how to balance consistency availability and partition tolerance based on the requirements of a given application Consistency PatternsIn distributed systems achieving strong consistency across all nodes is challenging due to factors like network failures latency and the need for high availability As a result various consistency patterns have been developed to handle different trade offs between strong consistency and other system requirements Here are some key consistency patterns Strong Consistency Strong consistency ensures that all nodes in a distributed system have the same view of data at all times Achieving strong consistency involves synchronous communication and coordination between nodes which can lead to increased latency and reduced availability Two common strong consistency models are Linearizability Atomic Consistency Every operation appears to take effect instantly at a single point in time creating a linear ordering of operations as if they were executed serially Serializability Transactions appear to execute one after another even in a distributed environment ensuring that the system behaves as if it were executing transactions in a serial order Eventual Consistency Eventual consistency is a relaxed form of consistency that allows data to be temporarily inconsistent across nodes but guarantees that all nodes will eventually converge to a consistent state This pattern is often used in systems where strong consistency would lead to excessive latency or limited availability Eventual consistency models include Read your writes consistency Any read operation following a write operation should return the value written by that operation Monotonic reads and monotonic writes consistency The system ensures that once a value is read subsequent reads will never return older values Similarly writes are committed in order Causal Consistency Causal consistency maintains a causal relationship between related events ensuring that operations that are causally related are seen by all nodes in a consistent order This pattern strikes a balance between strong consistency and availability offering better performance than strong consistency while still ensuring a certain level of ordering Bounded Staleness Consistency Bounded staleness consistency allows a system to be consistent within a certain time window or bound This pattern relaxes the requirement for immediate consistency but ensures that data does not become too outdated It s particularly useful in scenarios where real time consistency is not critical Read Write Quorums Quorum based approaches involve requiring a certain number of nodes a quorum to agree before a read or write operation is considered successful This allows for a trade off between consistency and availability For example a system might require a quorum of nodes to agree on a write before considering it committed Consistent Hashing Consistent hashing is a technique used in distributed systems to efficiently distribute data across nodes while maintaining a level of data consistency It enables scaling out by adding new nodes or removing nodes without causing significant data reorganization Tunable Consistency Some distributed databases and systems provide configurable levels of consistency allowing developers to choose the consistency model that best fits their application s requirements This provides flexibility to balance between strong consistency and system performance Weak Consistency Weak consistency is a form of data consistency in distributed systems that allows for more relaxed synchronization and ordering of data updates across nodes Unlike strong consistency which guarantees that all nodes have an identical view of data at all times weak consistency permits temporary inconsistencies that can be resolved over time Weak consistency is often used to improve system performance availability and fault tolerance in exchange for slightly less strict data synchronization There are a few variations of weak consistency models Read your Writes Consistency In this weak consistency model if a client performs a write operation and subsequently performs a read operation the read operation is guaranteed to return the value written by the preceding write operation This pattern ensures that a client always sees its own updates immediately Monotonic Reads Consistency Monotonic reads consistency guarantees that if a client reads a particular value it will never see older values in subsequent read operations This ensures that the client s view of data is monotonic meaning it only sees increasingly recent values Monotonic Writes Consistency Monotonic writes consistency ensures that write operations from a particular client are seen in the same order by all nodes in the system This means that if a client performs a write operation A followed by a write operation B all nodes will see operation A before operation B Causal Consistency Partial Order Consistency Causal consistency ensures that causally related operations where one operation logically depends on another are seen by all nodes in a consistent order This means that if one operation causally precedes another all nodes will see the operations in the same order However operations that are not causally related can be observed in different orders on different nodes Weak consistency is particularly suitable for distributed systems that prioritize availability and performance over strict data synchronization It allows systems to operate effectively in the presence of network partitions and failures However developers need to be aware of the potential for temporary data inconsistencies and design their applications accordingly These consistency patterns provide various ways to manage the trade offs between strong consistency availability and partition tolerance in distributed systems The choice of which pattern to use depends on the specific requirements of the application the desired level of data accuracy and the constraints of the underlying distributed architecture Availability PatternsIn distributed systems ensuring high availability is crucial to maintain system functionality even in the presence of failures Various availability patterns and strategies are employed to achieve this goal Here are some key availability patterns Redundancy Redundancy involves duplicating critical components services or data across multiple nodes or locations If one node or service fails another can take over the workload without disrupting the system s availability Redundancy can be achieved through approaches like Active Active Replication Multiple nodes actively handle incoming requests and share the load ensuring that if one node fails others can continue to serve requests Active Passive Replication One node actively handles requests while another node remains in standby If the active node fails the passive node takes over Load Balancing Load balancing distributes incoming traffic across multiple nodes to ensure that no single node becomes overwhelmed This pattern improves the system s capacity to handle increased load and provides better response times Load balancing can be achieved through hardware or software load balancers that distribute requests based on various algorithms Failover Failover is the process of automatically shifting the workload from a failed node to a backup node This pattern is commonly used in scenarios where high availability is critical Failover can be manual triggered by administrators or automatic triggered by monitoring systems detecting a failure Replication Replication involves creating copies of data across multiple nodes to ensure that data remains available even if one node fails Different types of replication include Master Slave Replication One node master handles write operations and the changes are asynchronously replicated to slave nodes for read operations Multi Master Replication Multiple nodes can handle both read and write operations requiring synchronization mechanisms to maintain data consistency Elastic Scaling Elastic scaling involves dynamically adding or removing resources such as nodes based on demand This pattern allows the system to automatically adjust its capacity to handle varying workloads ensuring availability during traffic spikes Microservices Architecture Microservices break down the system into small independently deployable services If one service becomes unavailable other services can continue to function minimizing the impact on the entire system s availability Distributed Databases Distributed databases replicate and distribute data across multiple nodes improving data availability and fault tolerance They often offer mechanisms like sharding partitioning and data replication to achieve high availability Caching Caching involves storing frequently accessed data in memory to reduce the load on backend services and improve response times Caches can be distributed across nodes to enhance availability and performance Health Monitoring and Recovery Implementing monitoring and recovery mechanisms allows the system to detect failures and automatically initiate recovery processes This includes health checks automatic restarts and self healing mechanisms Global Server Load Balancing In global server load balancing traffic is routed to the nearest or most available data center based on the user s location or other factors This pattern improves availability by directing users to operational data centers These availability patterns help distributed systems maintain operational status even in the face of hardware failures software bugs network issues and other unforeseen problems Combining these patterns with effective monitoring alerting and incident response strategies can significantly enhance the overall availability and reliability of a system |
2023-08-18 13:31:18 |
海外TECH |
DEV Community |
Painful Code Reviews: The #3 Killer Of Developer Productivity |
https://dev.to/hatica/painful-code-reviews-the-3-killer-of-developer-productivity-43i7
|
Painful Code Reviews The Killer Of Developer ProductivityCode reviews are critical to any project s success yet most developers find themselves dreading the review process More so GitLab s recent survey has termed code reviews as the third top contributor to developer burnout after long work hours and tight deadlines Code review as a process is a high ROI activity in creating better code teams breaking down knowledge silos and shooting up team collaboration However the same process can become highly frustrating time consuming at times demotivating and even a dent to developer productivity if conducted haphazardly In this article we ll explore how inefficient code reviews can slow down developers and how to take the pain out of code reviews for engineering teams A Typical Code Review ProcessA typical code review cycle involves a reviewer examining a developer s codebase and providing feedback improvements or any alternative approach Mostly a reviewer checks for bugs adherence to coding standards and general code quality The loop completes once this feedback is incorporated in the original code base by the commit owner The process usually involves multiple rounds of review with the developer making changes and resubmitting their code for additional review This iterative process continues until the reviewer is satisfied with the code changes Frequent and structured code reviews are necessary in creating a solid foundation to any team s software development process of developers already feel code reviews to be “very valuable to what they build Moreover a strong and reviewed codebase sets tone for continuous improvement in teams While this process is designed to catch errors and improve code quality it can become a bottleneck in the development process especially when the review process is not efficient Inefficient code reviews can block developers from doing productive work cause long wait times leading to work frustration and lower productivity Let s see how Ineffective Code Reviews Killing Developer Productivity Developers are sometimes unaware they have to do code reviews They aren t sure how to perform them and if they are effective Sometimes they are skipped so the process can go through The above code review process might look perfect but in the real world it is far from one Most of the time code reviews are treated as a secondary process meaning reviewers can only send their feedback in free time rather than looking to match the pace of the commit owner Code reviews are only effective when developers receive feedback within a desired time period Moreover devs cannot help but stay blocked and cannot work again on the same codebase till the reviewer comes with changes As a result developers either context switch to another project or spend their time waiting thus killing developer s precious coding hours Finding someone for code review can be hard day average After that business tests take time to be completed days on average The Gitlab survey also highlighted the after effects of code reviews by a reviewer A typical review process takes business days to complete by the time a developer starts working on another task Now revisiting a day old PR can take a lot of cognitive effort and context switching from the original owner leading to reshifted focus lack of project priorities and developer frustration The issue spirals down further if the team lacks any clear guidelines on how to conduct peer reviews A lot of times developers have no idea how to start and what is expected of them “I m expected to participate but I m not quite sure how I ll wait until someone else starts When teams cannot find the common ground or a structured and documented code review process they end up spending a lot of time in sitting blocked sometimes even taking of the total development time At times reviewers are at the receiving end of a clogged process Without enough context and lack of familiarity with the codebase or technology assessing the code can become a true nightmare for both sides It s simply a Himalayan blunder to expect devs in religiously analyzing a code piece that they haven t seen before Moreover a lack of code description the journey of the codebase and lack of purpose of review can make code reviews harder and super painful even causing bikeshedding a common reason behind higher escaped bugs into production and even reaching the end customers All these practices if continued lead to missed deadlines impacting both productivity and business profitability The same GitLab survey highlights how of developers felt blocked and slow due to inefficient reviews thus killing their productivity developers feel blocked and slow due to inefficient reviews thus killing their productivity What s more is code reviews can become a bottleneck for developers reducing their morale and forcing them to look for alternate options Developers who are dissatisfied with their code review process are times more likely to be looking for a new job How To Take The Pain Out Of Code Reviews Code reviews is a high RoI activity only when it is performed in a sustainable way Here are the best code review practices teams can follow for productive code reviews so developers can realize their best work Submit Readable Code for Reviewsurveys have already shown how review quality can go down as the size of codebase increases Devs should limit their code piece to a maximum of LoC The more readable your code is higher the quality of code and better the chances of an effective code review process Find Your Team s Review FlowSetting clear guidelines for the code review process can help developers understand expectations and reduce frustration This includes establishing a code review checklist and enrolling devs to follow it religiously A review checklist doesn t have to be complicated it can be as simple as using PR templates to populate descriptions or running tests before putting forward your code for final review Update your existing test so all your review bases are covered and the reviewer has everything they need to get started Moreover documenting code reviews can make the codebase changes highly traceable making a huge difference to team cohesion and individual developer productivity Automate Wherever Possible of developers feel their code review process improved significantly after adding automation into their workflow Automating code formatting and linting can help reduce the time and effort required for manual review Use static analysis tools for faster feedback and a strengthened codebase Treating Code Reviews as an Essential TaskFostering a positive culture around code reviews can help reduce burnout and improve morale This includes encouraging constructive feedback and recognizing and rewarding good review practices Automation is one way to do so the other way is to reserve specific hours for code reviews of developers review their code weekly while do reviews once every two weeks Stop switching context when reviewing code Peer review requires special focus and cannot be performed if devs keep juggling between multiple tasks all at once Context switching The killer of developer productivity Use an Engineering Analytics PlatformEngineering analytics platforms help teams improve their code review process by boosting end to end visibility With Hatica s review collaboration dashboard developers can easily collaborate on code reviews track review progress and identify areas for improvement By analyzing code metrics and team s work trends Hatica can help identify bottlenecks in a team s review process did the reviewer pick up the codebase within time If not why Is the reviewer overburdened with other project work or sprint issues Hatica collates all team related data at one place so teams know where exactly they are stuck and how to achieve a better review flow for the team Best code review practices Code reviews can be a double edged sword they are an essential part of producing high quality code and catching errors before bugs become costly product mistakes When done without context and efficiency they can be a source of frustration and even burnout for developers The key to successful code reviews lies in adopting best practices like setting clear objectives and guidelines adopting automation tools and fostering a positive culture By doing so teams can ensure that code reviews are productive efficient and even enjoyable Subscribe to the Hatica blog today to read more about unblocking developers and boosting productivity with engineering analytics |
2023-08-18 13:31:16 |
海外TECH |
DEV Community |
Build a Pixel Perfect Threads Clone in Swift UI—With a Twist! |
https://dev.to/appforce1nl/build-a-pixel-perfect-threads-clone-in-swift-ui-with-a-twist-16kb
|
Build a Pixel Perfect Threads Clone in Swift UIーWith a Twist You ve probably heard about the new Twitter competitor Instagram Threads It launched to great fanfare but it s missing one crucial feature DMs Learn how to make a Threads cloneーwith a twist Whenever a new app arrives it is a fun exercise to try and recreate its UI to learn exactly how it might be put together The Threads app UI is pretty straightforward with a few exceptions The follower “bubble and profile tab selection is the most interesting UI feature I ve found in the Threads app In this blog post we ll create an Instagram Threads clone in Swift UI and to top it off use Stream s chat API to add real time user to user messaging With the boring stuff out of the way let s jump into some code ️ Getting StartedWe are going to start by picking apart the Threads UI visually Once we did that we will create individual components and put everything together in a semi working mockup implementation When looking at the Threads UI there are some immediately noticable things The UI has a number of fun elements that both provide a strong Threads brand and look fun to recreate I like to call those elements the “followers bubble and the “profile detail tab selection Everything else is a matter of stacking views together using HStacks and VStacks It still baffles me how flexible these two layout elements are when using SwiftUI Threads introductory videoIf you would like to follow along as we re building or explore the project code it is available on our Github here don t be shy please leave us a The Follower BubbleRight now we do not even have a project to work with so let s start there Open up Xcode and click “File menu and then the entry “Create new Project Select “SwiftUI app and give it any name you like We now have our empty project Let s rely on Xcode previews while we put together our project Create a new SwiftUI View File gt New gt File gt SwiftUI View name it “BubbleView Before we can begin we need some assets The easiest way to resolve this is to delete the current “Assets entry from the project and copy in the one from the completed repository You can either download the project as a zip file or clone it to your machine In this repository you can find an Assets catalog in the directory “ThreadsChat from the root of the repository Drag and drop the Assets directory into your Xcode project Make sure the option “Copy items if needed is checked Now we have a set of assets available When looking at the BubbleView you might have noticed it has different display styles Zero one two or more followers I skipped showing you the option with zero followers because there is not much to see just an empty black square Let s define the basics of the BubbleView Since we are dealing with a variable number of display styles based on follower count adjust the auto created BubbleView to look as follows struct BubbleView View var replyCount Int var body some View Text Hello World struct BubbleView Previews PreviewProvider static var previews some View BubbleView replyCount BubbleView replyCount BubbleView replyCount BubbleView replyCount In the preview area we can now select between different previews of the same view All looking the same Within the body of our new BubbleView let s add some code to change that switch replyCount case Spacer case Image systemName person resizable frame width height clipShape Circle aspectRatio contentMode fit case HStack Image systemName person resizable frame width height clipShape Circle aspectRatio contentMode fit Image systemName person resizable frame width height clipShape Circle aspectRatio contentMode fit default HStack Image uiImage UIImage named jeroen resizable frame width height clipShape Circle aspectRatio contentMode fit Image uiImage UIImage named amos resizable frame width height clipShape Circle aspectRatio contentMode fit Image uiImage UIImage named kimmy resizable frame width height clipShape Circle aspectRatio contentMode fit We add a switch with paths zero one two and a default option Each relates to one of the possible display styles of the bubble view Note how we add an image mark it resizable choose a size clip it to a circle It all looks great now except for the default option When you look at the fourth preview in Xcode you notice that there are images next to each other while they should be grouped in a nice cluster We can fix that by switching the HStack of the default path to a ZStack and moving the images around a bit by using padding default ZStack Image uiImage UIImage named jeroen resizable frame width height clipShape Circle aspectRatio contentMode fit padding EdgeInsets top leading bottom trailing Image uiImage UIImage named amos resizable frame width height clipShape Circle aspectRatio contentMode fit padding EdgeInsets top leading bottom trailing Image uiImage UIImage named kimmy resizable frame width height clipShape Circle aspectRatio contentMode fit padding EdgeInsets top leading bottom trailing The BubbleView now looks exactly as we want it to look So let s move to the next component the “profile detail tab selection The Profile Detail Tab SelectionSince “profile detail tab selection is quite a mouth full let s call this view SegmentedPickerView Again we create a new SwiftUI view called SegmentedPickerView There are a few tricks we put together for this challenging view so let s dive in Let s create a view to help with previewing the SegmentedPickerView we are going to create import SwiftUIpublic struct SegmentedPickerView View public var body some View Text Hello struct SegmentedPickerViewPreviewHelperView View State var selectedIndex Int var body some View SegmentedPickerView struct SegmentedPickerView Previews PreviewProvider State var selectedIndex Int static var previews some View SegmentedPickerViewPreviewHelperView This will just create an empty canvas with a single text Let s start building things Since it is a picker view we need to be able to add subviews as content which we can select by tapping an area on screen After some trial and error this is what I came up with import SwiftUIpublic struct SegmentedPickerView lt Element Content Selection gt View where Content View Selection View public typealias Data Element State private var frames CGRect Binding private var selectedIndex Data Index private let data Data private let selection gt Selection private let content Data Element Bool gt Content public init data Data selectedIndex Binding lt Data Index gt ViewBuilder content escaping Data Element Bool gt Content ViewBuilder selection escaping gt Selection self data data self content content self selection selection self selectedIndex selectedIndex self frames State wrappedValue Array repeating zero count data count public var body some View ZStack alignment Alignment horizontal horizontalCenterAlignment vertical center HStack spacing ForEach data indices id self index in Button action selectedIndex index label content data index selectedIndex index buttonStyle PlainButtonStyle background GeometryReader proxy in Color clear onAppear frames index proxy frame in global alignmentGuide horizontalCenterAlignment isActive selectedIndex index dimensions in dimensions HorizontalAlignment center if let selectedIndex selectedIndex selection frame width frames selectedIndex width height frames selectedIndex height alignmentGuide horizontalCenterAlignment dimensions in dimensions HorizontalAlignment center extension HorizontalAlignment private enum CenterAlignmentID AlignmentID static func defaultValue in dimension ViewDimensions gt CGFloat return dimension HorizontalAlignment center static var horizontalCenterAlignment HorizontalAlignment HorizontalAlignment CenterAlignmentID self extension View ViewBuilder inlinable func alignmentGuide alignment HorizontalAlignment isActive Bool computeValue escaping ViewDimensions gt CGFloat gt some View if isActive alignmentGuide alignment computeValue computeValue else self ViewBuilder inlinable func alignmentGuide alignment VerticalAlignment isActive Bool computeValue escaping ViewDimensions gt CGFloat gt some View if isActive alignmentGuide alignment computeValue computeValue else self struct SegmentedPickerViewPreviewHelperView View State private var selectedColorIndex let titles Threads Replies Reposts State var selectedIndex Int var body some View SegmentedPickerView titles selectedIndex Binding get selectedIndex set selectedIndex content item isSelected in VStack Text item foregroundColor isSelected Color primaryThreads Color gray padding horizontal padding vertical frame maxWidth infinity Color gray frame height selection VStack spacing Spacer Color primary frame height onAppear selectedIndex frame maxWidth infinity animation easeInOut duration value selectedIndex struct SegmentedPickerView Previews PreviewProvider State var selectedIndex Int static var previews some View SegmentedPickerViewPreviewHelperView It works in preview and looks really good Now we have our BubbleView and SegmentedPickerView we can start building some real UI The biggest base elements are the rows in each List Create the ThreadActivityRowViewWe start by creating another SwiftUI file called ThreadActivityRowView The contents of this file should look like this import SwiftUIstruct ThreadActivityRowView View StateObject var model ThreadActivityRowModel var body some View NavigationLink Text Replace with the ThreadView model model label VStack HStack VStack ZStack alignment bottomTrailing Image uiImage model avatarImage resizable frame width height aspectRatio contentMode fit clipShape Circle ZStack Circle frame width height foregroundColor white Image systemName heart circle fill resizable frame width height foregroundColor red padding EdgeInsets top leading bottom trailing if model isReply Spacer else HStack Divider VStack HStack Text model username foregroundColor primary Image systemName checkmark seal fill foregroundColor blue Spacer Text model postAge foregroundColor secondary Text ··· Text model message frame maxWidth infinity alignment leading foregroundColor primary if let image model image Image uiImage image resizable aspectRatio contentMode fit cornerRadius HStack Image systemName heart Image systemName bubble right Image systemName repeat Image systemName paperplane Spacer padding top HStack if model isReply Text model footer frame maxWidth infinity alignment leading foregroundColor secondary padding leading else BubbleView replyCount model replyCount frame width height infinity Text model footer frame maxWidth infinity alignment leading foregroundColor secondary Spacer struct ThreadActivityRowView Previews PreviewProvider static var previews some View ThreadActivityRowView model ThreadActivityRowModel id username amos message Hello world too image UIImage named Hotel likeCount replyCount postAge h replies You can see it is a reasonably straightforward usage of various vertical and horizontal stacks We will also need its related model ThreadActivityRowModel so let s add that to the file too class ThreadActivityRowModel ObservableObject Identifiable init id String username String message String image UIImage likeCount Int replyCount Int postAge String self id id self username username self message message self image image self likeCount likeCount self replyCount replyCount self postAge postAge self replies self isReply true init id String username String message String image UIImage likeCount Int replyCount Int postAge String replies ThreadActivityRowModel self id id self username username self message message self image image self likeCount likeCount self replyCount replyCount self postAge postAge self replies replies self isReply false var id String var username String var message String var image UIImage var likeCount Int var replyCount Int var postAge String var isReply Bool var replies ThreadActivityRowModel private var likeString String switch likeCount case return nil case return like default return likeCount likes private var replyString String switch replyCount case return nil case return reply default return replyCount replies var footer String let footerStrings String likeString replyString compactMap return footerStrings joined separator • var avatarImage UIImage return UIImage named username UIImage systemName person The ThreadActivityRow is a view we will be using on almost all other screens This is how it looks in preview The layout looks a bit off in Preview but when put in an actual view everything lines up as it should Now we can move on with building the underlying ThreadView Building the ThreadViewThe ThreadView is a drill down from the main navigation in our app to a specific Thread It reuses the ThreadActivityRowView So is again pretty straightforward to build import SwiftUIstruct ThreadView View StateObject var model ThreadActivityRowModel var body some View ScrollView VStack HStack NavigationLink Text Replace me with ProfileView label HStack ZStack alignment bottomTrailing Image uiImage model avatarImage resizable frame width height aspectRatio contentMode fit clipShape Circle ZStack Circle frame width height foregroundColor white Image systemName heart circle fill resizable frame width height foregroundColor red padding EdgeInsets top leading bottom trailing Text model username Image systemName checkmark seal fill foregroundColor blue Spacer Text model postAge foregroundColor secondary Text ··· Text model message frame maxWidth infinity alignment leading if let image model image Image uiImage image resizable aspectRatio contentMode fit cornerRadius HStack Image systemName heart Image systemName bubble right Image systemName repeat Image systemName paperplane Spacer padding top Text model footer frame maxWidth infinity alignment leading foregroundColor secondary ForEach model replies reply in Divider padding horizontal ThreadActivityRowView model reply listStyle PlainListStyle padding navigationTitle Thread struct ThreadView Previews PreviewProvider static var previews some View let model ThreadActivityRowModel id username nash message Hello world image UIImage named Swift likeCount replyCount postAge m replies ThreadActivityRowModel id username kimmy message This is awesome image nil likeCount replyCount postAge mh ThreadActivityRowModel id username jeroen message Such a cool feature image nil likeCount replyCount postAge m ThreadActivityRowModel id username amos message Let s go image nil likeCount replyCount postAge m ThreadView model model Go back to the ThreadActivityRowView and replace the line Text Replace with the ThreadView model model with ThreadView model model Next we need to move to the ProfileView This is a view we can navigate to from the ThreadView In the ThreadView we created you might have noticed a Text Replace me with ProfileView Creating the ProfileViewCreate a SwiftUI file called ProfileView In the ThreadView replace the occurrence of Text Replace me with ProfileView with ProfileView Now go back to the ProfileView file Paste the following into the ProfileView file replacing all code currently present in the file Notice how we again reuse the row view import SwiftUIstruct ProfileView View State private var selectedColorIndex StateObject private var viewModel ThreadsViewModel let titles Threads Replies Reposts State var selectedIndex Int var body some View ScrollView VStack HStack VStack Text Neevash Ramdial frame maxWidth infinity alignment leading HStack Text nashxe Capsule fill tertiary frame width overlay Text threads net font footnote foregroundColor secondary Spacer Spacer Image uiImage UIImage named nash resizable frame width height aspectRatio contentMode fit clipShape Circle Text Leading DevRel Dev Marketing at getstream io • GoogleDevExpert Dart amp Flutter • FlutterComm •Formula fanatic •Striving for excellence HStack Image uiImage UIImage named amos resizable frame width height aspectRatio contentMode fit clipShape Circle Image uiImage UIImage named jeroen resizable frame width height aspectRatio contentMode fit clipShape Circle padding EdgeInsets top leading bottom trailing Image uiImage UIImage named kimmy resizable frame width height aspectRatio contentMode fit clipShape Circle padding EdgeInsets top leading bottom trailing Text followers •neevash dev Spacer HStack Button TODO label Text Follow frame minWidth maxWidth infinity minHeight background Color primary foregroundStyle background cornerRadius overlay RoundedRectangle cornerRadius stroke gray lineWidth Button TODO label Text Mention frame minWidth maxWidth infinity minHeight background background foregroundStyle Color primary cornerRadius overlay RoundedRectangle cornerRadius stroke gray lineWidth SegmentedPickerView titles selectedIndex Binding get selectedIndex set selectedIndex content item isSelected in VStack Text item foregroundColor isSelected Color primaryThreads Color gray padding horizontal padding vertical frame maxWidth infinity Color gray frame height selection VStack spacing Spacer Color primary frame height onAppear selectedIndex frame maxWidth infinity animation easeInOut duration value selectedIndex ForEach viewModel activities item in ThreadActivityRowView model item toolbar Spacer Image uiImage UIImage named Instagram resizable frame width height Image systemName bell fill Image systemName ellipsis circle padding struct ProfileView Previews PreviewProvider static var previews some View NavigationStack ProfileView class ThreadsViewModel ObservableObject Published public var activities ThreadActivityRowModel ThreadActivityRowModel id username nash message Hello world image UIImage named Swift likeCount replyCount postAge m replies ThreadActivityRowModel id username kimmy message This is awesome image nil likeCount replyCount postAge mh ThreadActivityRowModel id username jeroen message Such a cool feature image nil likeCount replyCount postAge m ThreadActivityRowModel id username amos message Let s go image nil likeCount replyCount postAge m ThreadActivityRowModel id username amos message Hello world too image UIImage named Hotel likeCount replyCount postAge h replies ThreadActivityRowModel id username kimmy message Hello world This is going to be a really long message I want to see what happens with a lond message Does it work ok image UIImage named React likeCount replyCount postAge h replies ThreadActivityRowModel id username jeroen message Hello world This is going to be a really long message I want to see what happens with a lond message Does it work ok image nil likeCount replyCount postAge h replies We now have the ActivityRowView ThreadView and ProfileView We only need to alter the entry point of the app and make sure we show a list of Threads Let s create the list of Threads first Create the ThreadsViewCreate a file called ThreadsView Notice the plural Threads Make sure the content of this file looks as follows and notice how little code we need to write since we did all the work already in previous views import SwiftUIstruct ThreadsView View StateObject private var viewModel ThreadsViewModel var body some View List viewModel activities item in ThreadActivityRowView model item listStyle PlainListStyle struct ThreadsView Previews PreviewProvider static var previews some View ThreadsView Since we would like to have a tab bar at the bottom we also create a file called ThreadsTabView The contents of this file should look as follows import SwiftUIstruct ThreadsTabView View var body some View TabView NavigationStack ThreadsView tabItem Image systemName house Text tabItem Image systemName magnifyingglass Text tabItem Image systemName square and pencil Text tabItem Image systemName heart ProfileView tabItem Image systemName person struct ThreadsTabView Previews PreviewProvider static var previews some View ThreadsTabView Again very little code but the end result should look something like this Putting the ThreadsTabView in the App classThe final thing we need to do is add the ThreadsTabView to the app struct to show our UI when starting the app To do that open up the project s app file If you named your project ThreadsChat the file should be named ThreadsChatApp Make its contents look like import SwiftUI mainstruct ThreadsChatApp App var body some Scene WindowGroup ThreadsTabView Now run the project on a simulator Adding DMsWe ve now completed the rebuild of a UI looking like Meta Threads But we promised to add a DM feature to this project To do that we first need to add the Stream Chat SDK to the project Select Add Packages… in File menuPaste the URL In the option Dependency Rule choose Branch in the single text input next to it enter main Choose Add Package and wait for the dialog to completeOnly select StreamChatSwiftUI and select Add Package againNow we need to do a few things to load and initialize the Stream Chat SDK Open up the App file and change its contents to look like this import SwiftUIimport StreamChatimport StreamChatSwiftUI mainstruct ThreadsChatApp App UIApplicationDelegateAdaptor AppDelegate self var appDelegate var body some Scene WindowGroup ThreadsTabView class AppDelegate NSObject UIApplicationDelegate var streamChat StreamChat var chatClient ChatClient var config ChatClientConfig apiKey init brwatad let client ChatClient config config return client func application application UIApplication didFinishLaunchingWithOptions launchOptions UIApplication LaunchOptionsKey Any nil gt Bool The StreamChat instance we need to assign streamChat StreamChat chatClient chatClient Calling the connectUser functions connectUser return true The connectUser function we need to add private func connectUser This is a hardcoded token valid on Stream s tutorial environment let token try Token rawValue eyJhbGciOiJIUzINiIsInRcCIIkpXVCJ eyJcVyXlkIjoibHVrZVzalYWxrZXIifQ kFSLHRBXtZlcnwczWUfsQMwfkpylCjCUZMc Call connectUser on our SDK to get started chatClient connectUser userInfo init id luke skywalker name Luke Skywalker imageURL URL string token token error in if let error error Some very basic error handling only logging the error log error connecting the user failed error return Next we need a view to show a chat interface Create a SwiftUI file called ThreadChatView with the following contents import SwiftUIimport StreamChatimport StreamChatSwiftUIstruct ThreadChatView View Injected chatClient var chatClient UIApplicationDelegateAdaptor AppDelegate self var appDelegate var body some View ChatChannelView viewFactory DefaultViewFactory shared channelController chatClient channelController for try ChannelId cid messaging my channel id messageOrdering topToBottom struct ThreadChatView Previews PreviewProvider static var previews some View ThreadChatView Next we need to make sure we can get to this new view To do that we open up the ProfileView and look for the HStack with the empty buttons HStack Button TODO label Text Follow frame minWidth maxWidth infinity minHeight background Color primary foregroundStyle background cornerRadius overlay RoundedRectangle cornerRadius stroke gray lineWidth Button TODO label Text Mention frame minWidth maxWidth infinity minHeight background background foregroundStyle Color primary cornerRadius overlay RoundedRectangle cornerRadius stroke gray lineWidth As the final item in this HStack add a NavigationLink sending the user to the ThreadChatView HStack Button TODO label Text Follow frame minWidth maxWidth infinity minHeight background Color primary foregroundStyle background cornerRadius overlay RoundedRectangle cornerRadius stroke gray lineWidth Button TODO label Text Mention frame minWidth maxWidth infinity minHeight background background foregroundStyle Color primary cornerRadius overlay RoundedRectangle cornerRadius stroke gray lineWidth NavigationLink ThreadChatView toolbar hidden for tabBar label Text Chat frame minWidth maxWidth infinity minHeight background background foregroundStyle Color primary cornerRadius overlay RoundedRectangle cornerRadius stroke gray lineWidth This will result in a new button on the ProfileView Tapping that button brings us to the view ThreadChatView Notice how the ChatChannelView is created and added to the view hierarchy with minimal effort and the end user can just start chatting when they land on this view We have integrated Stream Chat into our Threads inspired user interface mockup This not only highlights the seamless integration available by using our Chat SDKs but also offers visually stunning screenshots that showcase the potential look of Meta s Threads but with an in app chat feature ConclusionBy now you will have noticed how easy it can be to add chat to anything If you have a suggestion of a mash up we can add chat to please reach out through Twitter We love to hear from you to learn what you feel might be interesting to explore This article barely scratches the surface of what our Chat SDK can do You will probably want to make our chat screens look just like the rest of your app And that s where theming and styling come in Fortunately we have an excellent quick start guide about theming available |
2023-08-18 13:27:51 |
海外TECH |
DEV Community |
Game Dev Digest — Issue #200 - Develop Faster |
https://dev.to/gamedevdigest/game-dev-digest-issue-200-develop-faster-4io8
|
Game Dev Digest ー Issue Develop Faster Issue Develop FasterThis article was originally published on GameDevDigest comJam packed for issue blender tips development process tips AI and asset packs plus lost more Enjoy Unity Assembly Definitions Explained How to Organize and Control Your Code Assembly Definition Files asmdef in Unity is a powerful feature that helps manage and organize your codebase marcomignano comCross platform HDR display support in Unity Greetings from the Unity Graphics team We re glad to announce that as of Unity a and beta the Unity Editor and Standalone Players now provide cross platform support for HDR output and full compatibility with the Universal and High Definition Render Pipeline UnityHow Rubber Duck Games developed a boss fight in Evil Wizard Rubber Duck Games one of the esteemed GDC Best in Play winners uncovers how they created a compelling boss fight This guest blog sees team members Banki and Sergio Wajswol guide you through the entire journey from design and prototyping to animation testing balancing and finalizing the visual effects and audio for Evil Wizard UnityLeveraging SerializeReference for Flexible Commands in Unity Game Development In the fast paced world of game development time is often a precious commodity Finding efficient solutions that offer quick testing and flexible configuration becomes paramount We too faced this challenge and discovered a potent approach that not only met these demands but also allowed us to customize our domain s behavior extensively Gbros Games StudioFrequently Asked Questions About Steam Next Fest I have been to just about every one of these Steam Next Fest SNF Q amp As and the same questions keep getting asked so I thought I would just write them out here as a reference howtomarketagame comOversimplified History of Retro Game Consoles for Programmers It is always useful to look at the past to understand the current state of affairs This article is a brief overview of the history of game consoles from a programmer s perspective Let s understand the limitations and the driving forces that helped shape the technologies we use today in modern game development pikuma comMoving faster This post is part of a series starting at Reflections on a decade of coding I don t think I m very fast in an absolute sense but I m much much faster than I was years ago These are the things that I think made the most impact scattered thoughts netThrow away your first draft of your code The next time you start on a major project I want you to write code for a couple of days and then delete it all Just throw it away I m serious ntietz comUnity D Extending Unity to D This article will show how to extend Unity to support four dimensional geometry This is the second article in a series of four and the first one which will probably start discussing the Mathematics and the C code necessary to store and manipulate D objects in Unity alanzucconi com VideosBullet Hell Patterns for Beginners Coding Your First Bullet amp Spawner in Unity Welcome to Sidereum Games In this beginner friendly tutorial I ll guide you through coding your first bullet and bullet spawner in Unity helping you create your own bullet hell patterns with simple coding techniques Sidereum GamesThe Types of Detective Game Back in I made a video about detective game design And I had to dig deep to find good crime solving games to talk about like old PC games from the s and obscure indie titles on Itch But in the last five years we ve seen an explosion of great detective games so it s time to revisit the topic and ask again what makes a good detective game Game Maker s ToolkitImprove the Feeling of Speed in Your Game and Make It Appear Faster In this video I ll cover GAME DESIGN and PROGRAMMING aspects for giving the feeling of SPEED along with a system to add speed effects progressively based on speed Perfect for both beginner and more experienced developers Join us and unlock the secrets to making your game feel faster and more exciting AnzyCoding Boids Flocking Simulation Boids is an algorithm developed by Craig Reynolds in It aims to emulate the flocking behavior of birds by applying three simple rules separation alignment and cohesion In this video we go over the process of building a boids simulation in Unity Suboptimal Engineer Essential UnityD Debugging Techniques Today we re diving into the world of debugging in unity if you re just starting out in game development or just aren t familiar with debugging then hang around because these essential techniques will save you a ton of time and frustration Jason WeimannYou NEED to POLISH your games and not just at the end When should you add polish to your games The obvious answer is near the end of development however that s not the only time where it makes sense here s stages when you should add polish Code MonkeyHow I keep track of players Noia MMO Devlog Check out how I keep track of players with logs Noia DevVector math is EASY when you SEE it with Blender and Geometry Nodes In this video I m going to show you what vectors are why they re so crucial to understanding D applications and how to use the most important vector math operations in a visual and intuitive way that I don t think you ll forget CG CookieIntro to DOTS Animation Unity ECS Tutorial In today s video I m going to be giving you an introduction into some of the options that are available for us when it comes to implementing animations in unity s entity component systemTurbo Makes GamesTips for Optimizing Game Assets in Blender Reduce memory usage and computing resources to improve frame rates and enhance your creative freedom without performance constraints The video covers topology baking and a bonus tip for getting more out of your texture resolution Discover how to localize geometry dissolve excess edges and break up your mesh for better optimization Explore texture baking to simplify materials reduce draw calls and master the art of channel packing for more efficient maps CG CookieBest books for Game Design How to learn Game Design Interested in learning Game Design but wondering what books to buy Rahul Sehgal AssetsFantasy And Sci Fi Essentials For Unity Bundle Amazing sci fi amp fantasy assets for Unity Propel your Unity game project to new heights of visual fidelity with this massive sci fi and fantasy asset bundle crafted by some of the dev scene s most esteemed content creation studios You ll get all the building blocks needed to craft impressive and immersive game worlds including a vast catalog of sci fi and fantasy creatures high end animation sets for all manner of entities monstrous to mundane stunning environment packs and much more As a bonus you ll also get a voucher for the Unity Asset Store good for off your next purchase Pay what you want for this enormous asset bundle valued at over and help support Alzheimer s Research UK with your purchase Humble Bundle AffiliateBest of the Dev Days of Summer Sale Customers now have two more weeks of savings on bestsellers from the last several weeks Top assets from the entire summer sale have been combined into one massive second chance opportunity to grab an awesome tool or art pack at off Unity AffiliatePublisher Of The Week Sale CGPitbull All assets from CGPitbull are on sale for off PLUS get ORION Frigate asset for free with code CGPITBULL CGPitbull offers hundreds of D fantasy and sci fi assets Discover countless models to help you develop games apps movies and more Unity AffiliateMesh Peeling It is a mesh peeling tool in different shapes bunszr Open SourceNoiseBall NoiseBall is a Unity sample project that shows how to access vertex index buffers directly from compute shaders keijiro Open SourceUnity mathx An Extension Library for Unity Mathematics Extension Methods New Syntax Optimized Functions and more LTMX Open SourceBehavior Tree Behavior Tree for Unity is an implementation of a classical behavior tree for Unity engine Behavior trees allow you to easily set up a behavior switcher based on different conditions Usually it s used for game AI ZorPastaman Open SourceUITableViewForUnity UITableViewForUnity is a componet which can be used for implementing various of list UI views with Unity engine zhaozilong Open SourceUnity AR ColorMapping Unity AR Colormapping for easyar vuforia maxstar arkit arcoreairar dev Open Sourcesoftd for unity SoftD is a D multi material continuum physics engine designed for real time applications SoftD for Unity provides a high level encapsulation for SoftD and offers users a range of easy to use interfaces enabling users to easily implement various physical simulations in Unitytaichi dev Open Sourcevery simple twitch chat A very simple plugin to connect your Unity games to the Twitch chat It s possible to Login with just one line of code and start reading the messages Custom settings for different environments and more complex login methods are also supported rothiotome Open SourceUniTyped UniTyped is a source generator that allows typed access to data such as SerializedObjects material parameters tags and layers It helps you write more concise and safe code ruccho Open Sourcegum Gum is a collection of tools focusing mainly on game development with the goal of getting rid of the boilerplate code erkerkiii Open SourceUnityExtensions C extension functions attributes and editor tools for common Unity problems Faulo Open SourceYetAnotherHttpHandler YetAnotherHttpHandler brings the power of HTTP to Unity and NET Standard This library enables the use of HTTP which Unity does not support It allows you to use grpc dotnet instead of the deprecated C core gRPC library It can also be used for asset downloading via HTTP providing more functionality to your projects Cysharp Open Sourcegenerative agents This repository accompanies our research paper titled Generative Agents Interactive Simulacra of Human Behavior It contains our core simulation module for generative agentsーcomputational agents that simulate believable human behaviorsーand their game environment Below we document the steps for setting up the simulation environment on your local machine and for replaying the simulation as a demo animation joonspk research Open SourceUnityBehaviourTreeEditor Behaviour Tree Editor for Unity built with UIToolkitthekiwicoder Open SourceMateAnimator Animator Adding more features to the open sourced Animator from Unity ddionisio Open SourceFernNPR FernNPR is a library for non photorealistic rendering NPR in Unity It offers a variety of NPR techniques Character Renderering Environmental Renderering and Stable Diffusion FernRender Open SourceUnityWebBrowser Unity Web Browser UWB is a Unity package that allows displaying and interacting with the web from within Unity Voltstro Studios Open SourceUnityTilemapMask The mask component Works the same as SpriteMask but used for tilemaps CalmlyGrass Open Sourceunity touch controls Touch gestures made easy for UnityD Game Engine jocic Open SourceDAPolyPaint Polygon Painter for Low Poly style D Models Plugin for Unity piXelicidio Open SourceSaveManager Save Manager is a FREE local save system for Unity games CarterGames Open Sourceawesome unity games A curated list of useful open source Unity projects in alphabetical order akinmustafa Open Sourcehackbox unity A Unity Package that leverages Hackbox to provide Jackbox style interactive gameplay for Unity games ashbash Open SourceMath For Programmers Book Bundle Level up your programming fundamentals Dive into math machine learning and other crucial disciplines and take your programming skills to the next level Our latest bundle from Manning Publications will help you harness math to write better code utilize deep learning across various languages and applications and get up to speed on foundational concepts like functional programming cryptography and data structures Pay what you want and help support Trees Water amp People with your purchase Humble Bundle AffiliateSolo Indie Game Dev Essentials Bundle Succeed as a solo indie game developer Whether you re making games as a hobby or your dream is to create video games for a living this bundle of online courses from GameDev tv will teach you the essentials that every solo indie developer needs You ll learn how to use engines like Godot Unity and Unreal to turn your vision into a playable game get in depth tutorials on how to create stunning pixel art and D assets and more You ll also get a library of asset packs that ll help you get your projects up and running in no time Jumpstart your solo indie dev ambitions with this comprehensive curriculum and help support One Tree Planted with your purchase Humble Bundle AffiliateThe Complete Blender D Modeling Online Course Mega Bundle Boost your D modeling skills Get access to comprehensive tutorials that ll help you bring your dreams to life with this mega bundle of Blender D modeling courses from Mammoth Interactive Featuring over hours of online tutorials being made available first exclusively through Humble Bundle this comprehensive series includes foolproof step by step cookbook style instructions to build a variety of characters environments and more Whether you re a complete beginner or looking to take your D modeling skills to the next level this bundle has it all Help support Children s Miracle Network Hospitals with your purchaseHumble Bundle Affiliate SpotlightOirbo Explore a labyrinthian spacecraft and discover its mysteries and purpose Help Oirbo navigate a metroidvania inspired hand drawn D action platformer full of secrets to uncover areas to explore and enemies to dismantle The choices are yours to make how will you unravel the twisted story You can get it on early access on Steam visit their website for links to other major platforms and follow them on Twitter ImaginationOverflowYou can subscribe to the free weekly newsletter on GameDevDigest comThis post includes affiliate links I may receive compensation if you purchase products or services from the different links provided in this article |
2023-08-18 13:11:38 |
Apple |
AppleInsider - Frontpage News |
Daily Deals Aug. 18: $600 off M2 Max MacBook Pro, $250 off Apple Studio Display, Insignia 4K Fire TV $159, more |
https://appleinsider.com/articles/23/08/18/daily-deals-aug-18-600-off-m2-max-macbook-pro-250-off-apple-studio-display-insignia-4k-fire-tv-159-more?utm_medium=rss
|
Daily Deals Aug off M Max MacBook Pro off Apple Studio Display Insignia K Fire TV moreToday s top deals include off a Toshiba Smart Fire TV off a Milanese loop Apple Watch band off an Amazon Fire HD tablet and more Save on an M Max MacBook ProThe AppleInsider team combs the internet for stellar bargains at online stores to create a list of unbeatable deals on trending tech products including deals on Apple tech TVs accessories and other gadgets We post the most valuable deals each day to help you save money Read more |
2023-08-18 13:42:20 |
海外科学 |
NYT > Science |
Why Some Male Butterflies Don’t See the World in Vivid Color |
https://www.nytimes.com/2023/08/18/science/butterfly-vision-genes.html
|
Why Some Male Butterflies Don t See the World in Vivid ColorMale zebra longwing vision sticks to a duller pallette than females see perhaps for mating reasons The genes that explain this may help unlock how differences between sexes evolve |
2023-08-18 13:30:55 |
金融 |
金融庁ホームページ |
アジア地域ファンド・パスポート第13回合同委員会に係るプレスリリースの公表について掲載しました。 |
https://www.fsa.go.jp/inter/etc/20230817.html
|
委員会 |
2023-08-18 15:00:00 |
ニュース |
BBC News - Home |
Letby not in dock as murder verdicts delivered |
https://www.bbc.co.uk/news/uk-england-merseyside-65960514?at_medium=RSS&at_campaign=KARANGA
|
hospital |
2023-08-18 13:51:36 |
ニュース |
BBC News - Home |
Doctors' warnings ignored as Letby killed more babies - BBC investigation |
https://www.bbc.co.uk/news/uk-66120934?at_medium=RSS&at_campaign=KARANGA
|
bosses |
2023-08-18 13:01:32 |
ニュース |
BBC News - Home |
Wataru Endo: Liverpool sign Stuttgart and Japan midfielder for £16m |
https://www.bbc.co.uk/sport/football/66544075?at_medium=RSS&at_campaign=KARANGA
|
Wataru Endo Liverpool sign Stuttgart and Japan midfielder for £mLiverpool sign midfielder Wataru Endo from Stuttgart for a fee of about £m m euros subject to a work permit and international clearance |
2023-08-18 13:16:32 |
ニュース |
BBC News - Home |
Romeo Lavia: Chelsea sign Belgium midfielder from Southampton in £58m deal |
https://www.bbc.co.uk/sport/football/66539123?at_medium=RSS&at_campaign=KARANGA
|
contract |
2023-08-18 13:49:49 |
コメント
コメントを投稿