How To Build A Real-Time Multiplayer Virtual Reality Game (Part 2)

Original Source: https://www.smashingmagazine.com/2019/12/real-time-multiplayer-virtual-reality-game-part-2/

How To Build A Real-Time Multiplayer Virtual Reality Game (Part 2)

How To Build A Real-Time Multiplayer Virtual Reality Game (Part 2)

Alvin Wan

2019-12-05T11:00:00+00:00
2019-12-05T19:08:09+00:00

In this tutorial series, we will build a web-based multiplayer virtual reality game, where players will need to collaborate to solve a puzzle. In the first part of this series, we designed the orbs featured in the game. In this part of the series, we will add game mechanics and setup communication protocols between pairs of players.

The game description here is excerpted from the first part of the series: Each pair of players is given a ring of orbs. The goal is to “turn on” all orbs, where an orb is “on” if it’s elevated and bright. An orb is “off” if it’s lower and dim. However, certain “dominant” orbs affect their neighbors: if it switches state, its neighbors also switch state. Player 2 can control even-numbered orbs, and player 1 can control odd-numbered orbs. This forces both players to collaborate to solve the puzzle.

The 8 steps in this tutorial are grouped into 3 sections:

Populating User Interface (Steps 1 and 2)
Add Game Mechanics (Steps 3 to 5)
Setup Communication (Steps 6 to 8)

This part will conclude with a fully functioning demo online, for anyone to play. You will use A-Frame VR and several A-Frame extensions.

You can find the finished source code here.

The finished multiplayer game, synchronized across multiple clientsThe finished multiplayer game, synchronized across multiple clients. (Large preview)

1. Add Visual Indicators

To start, we will add visual indicators of an orb’s ID. Insert a new a-text VR element as the first child of #container-orb0, on L36.

<a-entity id=”container-orb0″ …>
<a-text class=”orb-id” opacity=”0.25″ rotation=”0 -90 0″ value=”4″ color=”#FFF” scale=”3 3 3″ position=”0 -2 -0.25″ material=”side:double”></a-text>

<a-entity position…>

</a-entity>
</a-entity>

An orb’s “dependencies” are the orbs it will toggle, when toggled: for example, say orb 1 has as dependencies orbs 2 and 3. This means that if orb 1 is toggled, orbs 2 and 3 will be toggled too. We will add visual indicators of dependencies, as follows, directly after .animation-position.

<a-animation class=”animation-position” … />
<a-text class=”dep-right” opacity=”0.25″ rotation=”0 -90 0″ value=”4″ color=”#FFF” scale=”10 10 10″ position=”0 0 1″ material=”side:double” ></a-text>
<a-text class=”dep-left” opacity=”0.25″rotation=”0 -90 0″ value=”1″ color=”#FFF” scale=”10 10 10″ position=”0 0 -3″ material=”side:double” ></a-text>

Verify that your code matches our source code for Step 1. Your orb should now match the following:

Orb with visual indicators for the orb’s ID and IDs of the orbs it will trigger

Orb with visual indicators for the orb’s ID and IDs of the orbs it will trigger (Large preview)

This concludes the additional visual indicators we will need. Next, we will dynamically add orbs to the VR scene, using this template orb.

2. Dynamically Add Orbs

In this step, we will add orbs according to a JSON-esque specification of a level. This allows us to easily specify and generate new levels. We will use the orb from the last step in part 1 as a template.

To start, import jQuery, as this will make DOM modifications, and thus modifications to the VR scene, easier. Directly after the A-Frame import, add the following to L8:

<script src=”https://code.jquery.com/jquery-3.3.1.min.js”></script>

Specify a level using an array. The array will contain object literals that encode each orb’s “dependencies”. Inside the <head> tag, add the following level configuration, :

<script>
var orbs = [
{left: 1, right: 4},
{},
{on: true},
{},
{on: true}
];
</script>

For now, each orb can only have one dependency to the “right” of it and one to the “left” of it. Immediately after declaring orbs above, add a handler that will run on page load. This handler will (1) duplicate the template orb and (2) remove the template orb, using the provided level configuration:

$(document).ready(function() {

function populateTemplate(orb, template, i, total) {}

function remove(selector) {}

for (var i=0; i < orbs.length; i++) {
var orb = orbs[i];
var template = $('#template').clone();
template = populateTemplate(orb, template, i, orbs.length);
$('#carousel').append(template);
}

remove('#template');
}

function clickOrb(i) {}

Next, populate the remove function, which simply removes an item from the VR scene, given a selector. Fortunately, A-Frame observes changes to the DOM, and thus, removing the item from the DOM suffices to remove it from the VR scene. Populate the remove function as follows.

function remove(selector) {
var el = document.querySelector(selector);
el.parentNode.removeChild(el);
}

Populate the clickOrb function, which simply triggers the click action on an orb.

function clickOrb(i) {
document.querySelector(“#container-orb” + i).click();
}

Next, begin writing the populateTemplate function. In this function, begin by getting the .container. This container for the orb additionally contains the visual indicators we added in the previous step. Furthermore, we will need to modify the orb’s onclick behavior, based on its dependencies. If a left-dependency exists, modify both the visual indicator and the onclick behavior to reflect that; the same holds true for a right-dependency:

function populateTemplate(orb, template, i, total) {
var container = template.find(‘.container’);
var onclick = ‘document.querySelector(“#light-orb’ + i + ‘”).emit(“switch”);’;

if (orb.left || orb.right) {
if (orb.left) {
onclick += ‘clickOrb(‘ + orb.left + ‘);’;
container.find(‘.dep-left’).attr(‘value’, orb.left);
}
if (orb.right) {
onclick += ‘clickOrb(‘ + orb.right + ‘);’;
container.find(‘.dep-right’).attr(‘value’, orb.right);
}
} else {
container.find(‘.dep-left’).remove();
container.find(‘.dep-right’).remove();
}
}

Still in the populateTemplate function, set the orb ID correctly in all of the orb and its container’s elements.

container.find(‘.orb-id’).attr(‘value’, i);
container.attr(‘id’, ‘container-orb’ + i);
template.find(‘.orb’).attr(‘id’, ‘orb’ + i);
template.find(‘.light-orb’).attr(‘id’, ‘light-orb’ + i);
template.find(‘.clickable’).attr(‘data-id’, i);

Still in the populateTemplate function, set the onclick behavior, set the random seed so that each orb is visually different, and finally, set the orb’s rotational position based on its ID.

container.attr(‘onclick’, onclick);
container.find(‘lp-sphere’).attr(‘seed’, i);
template.attr(‘rotation’, ‘0 ‘ + (360 / total * i) + ‘ 0’);

At the conclusion of the function, return the template with all the configurations above.

return template;

Inside the document load handler and after removing the template with remove(‘#template’), turn on the orbs that were configured to be on initially.

$(document).ready(function() {

setTimeout(function() {
for (var i=0; i < orbs.length; i++) {
var orb = orbs[i];
if (orb.on) {
document.querySelector("#container-orb" + i).click();
}
}
}, 1000);
});

This concludes the Javascript modifications. Next, we will change the template’s default settings to that of an ‘off’ orb. Change the position and scale for #container-orb0 to the following:

position=”8 0.5 0″ scale=”0.5 0.5 0.5″

Then, change intensity for #light-orb0 to 0.

intensity=”0″

Verify that your source code matches our source code for Step 2.

Your VR scene should now feature 5 orbs, dynamically populated. One of the orbs should furthermore have visual indicators of dependencies, like below:

All orbs are populated dynamically, using the template orbAll orbs are populated dynamically, using the template orb (Large preview)

This concludes the first section in dynamically adding orbs. In the next section, we will spend three steps adding game mechanics. Specifically, the player will only be able to toggle specific orbs depending on the player ID.

3. Add Terminal State

In this step, we will add a terminal state. If all orbs are turned on successfully, the player sees a “victory” page. To do this, you will need to track the state of all orbs. Every time an orb is toggled on or off, we will need to update our internal state. Say that a helper function toggleOrb updates state for us. Invoke the toggleOrb function every time an orb changes state: (1) add a click listener to the onload handler and (2) add a toggleOrb(i); invocation to clickOrb. Finally, (3) define an empty toggleOrb.

$(document).ready(function() {

$(‘.orb’).on(‘click’, function() {
var id = $(this).attr(‘data-id’)
toggleOrb(id);
});
});

function toggleOrb(i) {}

function clickOrb(i) {

toggleOrb(i);
}

For simplicity, we will use our level configuration to indicate game state. Use toggleOrb to toggle the on state for the ith orb. toggleOrb can additionally trigger a terminal state if all orbs are turned on.

function toggleOrb(i) {
orbs[i].on = !orbs[i].on;
if (orbs.every(orb => orb.on)) console.log(‘Victory!’);
}

Double-check that your code matches our source code for Step 3.

This concludes the “single-player” mode for the game. At this point, you have a fully functional virtual reality game. However, you will now need to write the multiplayer component and encourage collaboration via game mechanics.

4. Create Player Object

In this step, we will create an abstraction for a player with a player ID. This player ID will be assigned by the server later on.

For now, this will simply be a global variable. Directly after defining orbs, define a player ID:

var orbs = …

var current_player_id = 1;

Double-check that your code matches our source code for Step 4. In the next step, this player ID will then be used to determine which orbs the player can control.

5. Conditionally Toggle Orbs

In this step, we will modify orb toggling behavior. Specifically, player 1 can control odd-numbered orbs and player 2 can control even-numbered orbs. First, implement this logic in both places where orbs change state:

$(‘.orb’).on(‘click’, function() {
var id = …
if (!allowedToToggle(id)) return false;

}

function clickOrb(i) {
if (!allowedToToggle(id)) return;

}

Second, define the allowedToToggle function, right after clickOrb. If the current player is player 1, odd-numbered ids will return a truth-y value and thus, player 1 will be allowed to control odd-numbered orbs. The reverse is true for player 2. All other players are not allowed to control the orbs.

function allowedToToggle(id) {
if (current_player_id == 1) {
return id % 2;
} else if (current_player_id == 2) {
return !(id % 2);
}
return false;
}

Double-check that your code matches our source code for Step 5. By default, the player is player 1. This means that you as player 1 can only control odd-numbered orbs in your preview. This concludes the section on game mechanics.

In the next section, we will facilitate communication between both players via a server.

6. Setup Server With WebSocket

In this step, you will set up a simple server to (1) keep track of player IDs and (2) relay messages. These messages will include game state, so that players can be certain each sees what the other sees.

We will refer to your previous index.html as the client-side source code. We will refer to code in this step as the server-side source code. Navigate to glitch.com, click on “new project” in the top-right, and in the dropdown, click on “hello-express”.

From the left-hand panel, select “package.json,” and add socket-io to dependencies. Your dependencies dictionary should now match the following.

“dependencies”: {
“express”: “^4.16.4”,
“socketio”: “^1.0.0”
},

From the left-hand panel, select “index.js,” and replace the contents of that file with the following minimal socket.io Hello World:

const express = require(“express”);
const app = express();

var http = require(‘http’).Server(app);
var io = require(‘socket.io’)(http);

/**
* Run application on port 3000
*/

var port = process.env.PORT || 3000;

http.listen(port, function(){
console.log(‘listening on *:’, port);
});

The above sets up socket.io on port 3000 for a basic express application. Next, define two global variables, one for maintaining the list of active players and another for maintaining the smallest unassigned player ID.

/**
* Maintain player IDs
*/

var playerIds = [];
var smallestPlayerId = 1;

Next, define the getPlayerId function, which generates a new player ID and marks the new player ID as “taken” by adding it to the playerIds array. In particular, the function simply marks smallestPlayerId and then updates smallestPlayerId by searching for the next smallest non-taken integer.

function getPlayerId() {
var playerId = smallestPlayerId;
playerIds.push(playerId);

while (playerIds.includes(smallestPlayerId)) {
smallestPlayerId++;
}
return playerId;
}

Define the removePlayer function, which updates smallestPlayerId accordingly and frees the provided playerId so that another player may take that ID.

function removePlayer(playerId) {
if (playerId < smallestPlayerId) {
smallestPlayerId = playerId;
}
var index = playerIds.indexOf(playerId);
playerIds.splice(index, 1);
}

Finally, define a pair of socket event handlers that register new players and un-register disconnected players, using the above pair of methods.

/**
* Handle socket interactions
*/

io.on(‘connection’, function(socket) {
socket.on(‘newPlayer’, function() {
socket.playerId = getPlayerId();
console.log(“new player: “, socket.playerId);
socket.emit(‘playerId’, socket.playerId);
});

socket.on(‘disconnect’, function() {
if (socket.playerId === undefined) return;
console.log(“disconnected player: “, socket.playerId);
removePlayer(socket.playerId);
});
});

Double-check that your code matches our source code for Step 6. This concludes basic player registration and de-registration. Each client can now use the server-generated player ID.

In the next step, we will modify the client to receive and use the server-emitted player ID.

7. Apply Player ID

In these next two steps, we will complete a rudimentary version of the multiplayer experience. To start, integrate the player ID assignment client-side. In particular, each client will ask the server for a player ID. Navigate back to the client-side index.html we were working within Steps 4 and before.

Import socket.io in the head at L7:

<script src=”https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.1.1/socket.io.js”></script>

After the document load handler, instantiate the socket and emit a newPlayer event. In response, the server-side will generate a new player ID using the playerId event. Below, use the URL for your Glitch project preview instead of lightful.glitch.me. You are welcome to use the demo URL below, but any code changes you make will of course not be reflected.

$(document).ready(function() {

});

socket = io(“https://lightful.glitch.me”);
socket.emit(‘newPlayer’);
socket.on(‘playerId’, function(player_id) {
current_player_id = player_id;
console.log(” * You are now player”, current_player_id);
});

Verify that your code matches our source code for Step 7. Now, you can load your game on two different browsers or tabs to play two sides of a multiplayer game. Player 1 will be able to control odd-numbered orbs and player 2 will be able to control even-numbered orbs.

However, note that toggling orbs for player 1 will not affect orb state for player 2. Next, we need to synchronize game states.

8. Synchronize Game State

In this step, we will synchronize game states so that players 1 and 2 see the same orb states. If orb 1 is on for player 1, it should be on for player 2 as well. On the client-side, we will both announce and listen for orb toggles. To announce, we will simply pass the ID of the orb that is toggled.

Before both toggleOrb invocations, add the following socket.emit call.

$(document).ready(function() {

$(‘.orb’).on(‘click’, function() {

socket.emit(‘toggleOrb’, id);
toggleOrb(id);
});
});

function clickOrb(i) {

socket.emit(‘toggleOrb’, i);
toggleOrb(i);
}

Next, listen for orb toggles, and toggle the corresponding orb. Directly underneath the playerId socket event listener, add another listener for the toggleOrb event.

socket.on(‘toggleOrb’, function(i) {
document.querySelector(“#container-orb” + i).click();
toggleOrb(i);
});

This concludes modifications to the client-side code. Double-check that your code matches our source code for Step 8.

Server-side now needs to receive and broadcast the toggled orb ID. In the server-side index.js, add the following listener. This listener should be placed directly underneath the socket disconnect listener.

socket.on(‘toggleOrb’, function(i) {
socket.broadcast.emit(‘toggleOrb’, i);
});

Double-check that your code matches our source code for Step 8. Now, player 1 loaded in one window and player 2 loaded in a second window will both see the same game state. With that, you have completed a multiplayer virtual reality game. The two players, furthermore, must collaborate to complete the objective. The final product will match the following.

The finished multiplayer game, synchronized across multiple clientsThe finished multiplayer game, synchronized across multiple clients. (Large preview)

Conclusion

This concludes our tutorial on creating a multiplayer virtual reality game. In the process, you’ve touched on a number of topics, including 3-D modeling in A-Frame VR and real-time multiplayer experiences using WebSockets.

Building off of the concepts we’ve touched on, how would you ensure a smoother experience for the two players? This could include checking that the game state is synchronized and alerting the user if otherwise. You could also make simple visual indicators for the terminal state and player connection status.

Given the framework we’ve established and the concepts we’ve introduced, you now have the tools to answer these questions and build much more.

You can find the finished source code here.

Smashing Editorial
(dm, il)

Collective #571

Original Source: http://feedproxy.google.com/~r/tympanus/~3/F55jaj7OXKA/

WOTW

Inspirational Website of the Week: Esperanto

A fantastic interactive design that celebrates an exciting journey. Our pick this week.

Get inspired

C571_css

CSS: An Art, a Science, a Nightmare (Everything You Should Know)

In this excellent guide, Tania Rascia covers the practical parts of CSS that are important on a daily basis.

Read it

Divi

Our Sponsor
Work with the Powerful Divi Theme Builder

Learn how you can enjoy complete control over your entire website with the new and powerful Divi Theme Builder.

Check it out

C571_csslayout

CSS Layout

A fantastic collection of popular layouts and patterns made with CSS. Made by Phuoc Nguyen.

Check it out

C571_adventcode

Advent of Code 2019

Advent of Code is an Advent calendar of small programming puzzles for a variety of skill sets and skill levels that can be solved in any programming language you like.

Check it out

C571_subgrid

Use CSS Subgrid to layout full-width content stripes in an article template

Learn how to augment a Grid-infused article layout that allows for certain sections of content to break out into full-width areas.

Read it

An Introduction to Variable Fonts

An Introduction to Variable Fonts

An excellent guide to variable fonts by Jason Pamental.

Read it

C571_music

Music and Web Design

Brad Frost’s interesting thoughts on the parallels between Music and Web Design.

Read it

C571_aom

Web Components and the Accessibility Object model (AOM)

Léonie Watson writes about the AOM, an experimental JavaScript API that proposes several new features intended to solve existing accessibility use cases.

Read it

C571_drum

DrumBot

Play real-time music with a machine learning drummer that drums based on your melody. Read more about it in this article.

Check it out

C571_binary

Binary Music Player

A musical player, with a binary twist. Built by Tim Holman using Tone.JS.

Check it out

C571_posdcast

Smashing Podcast Episode 4 With Heydon Pickering: What Are Inclusive Components?

Drew McLellan talks to Smashing author Heydon Pickering about Inclusive Components.

Check it out

C571_StateofUX

The State of UX in 2020

An insightful list of what to expect for User Experience (UX) Design in the next year.

Check it out

C571_boxshadows

Make a smooth shadow, friend

A smooth shadow generator inspired by Tobias Ahlin’s article. By Philipp Brumm.

Check it out

C571_darkmaterials

Re-creating the ‘His Dark Materials’ Logo in CSS

Michelle Barker re-creates an interesting typographic logo with CSS.

Read it

C571_ff71

Firefox 71: A year-end arrival

A plethora of new developer tools features including the web socket message inspector, console multi-line editor mode and more are coming in the new Firefox version.

Check it out

C571_sweater

Holiday CSSweater Generator

A great CSS pattern generator with a geeky Christmas theme. By Adam Kuhn.

Check it out

C571_hippo

Interactive Hippo Button

A fun button that looks like a hungry Hippo. By Mariusz Dabrowski. Check out the written and video tutorial.

Check it out

C571_demosroundup

From Our Blog
Awesome Demos Roundup #11

A hand-picked collection of fantastic web experiments from the past weeks.

Check it out

C571_keys

Piano keyboard

An awesome Codevember demo by Ricardo Oliva Alonso.

Check it out

C571_motionpath

From Our Blog
Motion Paths – Past, Present and Future | Codrops

An article by Cassie Evans that explores a few ways of moving an element along a path, including the upcoming CSS motion path module and the newly released GSAP3.

Read it

Collective #571 was written by Pedro Botelho and published on Codrops.

The Ultimate Collection of Free Texture Downloads

Original Source: http://feedproxy.google.com/~r/1stwebdesigner/~3/hDIhS7_uMck/

Every designer could use some high-quality textures for their projects. You can use them as backgrounds, overlays, or just to make your graphics a little more interesting. And they look great in posters, banners, or even as part of a website.

But free, high quality textures can be hard to come by. That’s why we’ve put together this huge collection of texture downloads, free for use by any designer. Some require an email subscription to download, but that’s all.

Altogether there are nearly 300 textures and brushes here, sorted into three categories: nature and materials, abstract, and brushes.

Your Designer Toolbox
Unlimited Downloads: 500,000+ Web Templates, Icon Sets, Themes & Design Assets


DOWNLOAD NOW

Nature and Materials

These photorealistic textures draw from nature, as well as man-made materials like brick and plastic. You’ll find woods, stones, paper, and dirt that make great natural backgrounds or overlays.

7 Plywood Textures

Example of 7 Plywood Textures

Crumpled Paper Textures Set

Example of Crumpled Paper Textures Set

5 Stone Wall Textures Vol.2

Example of 5 Stone Wall Textures Vol.2

24 Free Dirt Textures

Example of 24 Free Dirt Textures

Brick Wall Textures Vol.2

Example of Brick Wall Textures Vol.2

Plastic Transparent Textures

Example of Plastic Transparent Textures

Arctic Frost Textures

Example of Arctic Frost Textures

6 Weathered Textures Vol.1

Example of 6 Weathered Textures Vol.1

Vintage Paper Textures Set

Example of Vintage Paper Textures Set

Abstract

Rather than drawing from nature, these textures are more abstract and random. They make great background textures for websites and posters, or pretty overlays for objects. You’ll find noise, splatters, foil, and watercolors mixed in here.

10 Free Textures To Simulate Holographic Foil Print Effects

Example of 10 Free Textures To Simulate Holographic Foil Print Effects

Dust & Noise Overlay Textures

Example of Dust & Noise Overlay Textures

Free Ink Stamp Texturizer Smart PSD for Adobe Photoshop

Example of Free Ink Stamp Texturizer Smart PSD for Adobe Photoshop

6 Watercolor Textures Vol.2

Example of 6 Watercolor Textures Vol.2

Rose Gold Foil Textures

Example of Rose Gold Foil Textures

25 Free Speckle Textures

Example of 25 Free Speckle Textures

Voyager Textures Background Set

Example of Voyager Textures Background Set

Brushes

Last but not least we have textured brushes. These make it super easy to add shading, splatters, or grain to any image; just use the brush to draw it on, and add a little realism to your graphics.

Stipple Shading Brushes for Adobe Photoshop

Example of Stipple Shading Brushes for Adobe Photoshop

10 Free Grain Shader Brushes for Adobe Photoshop

Example of 10 Free Grain Shader Brushes for Adobe Photoshop

10 Free Halftone Texture Brushes for Adobe Photoshop

Example of 10 Free Halftone Texture Brushes for Adobe Photoshop

30 Free Vintage Shading Brushes for Adobe Illustrator

Example of 30 Free Vintage Shading Brushes for Adobe Illustrator

14 Free Subtle Grunge Texture Brushes for Adobe Photoshop

Example of 14 Free Subtle Grunge Texture Brushes for Adobe Photoshop

10 Free Ink Splatter Photoshop Brushes and PNG Textures

Example of 10 Free Ink Splatter Photoshop Brushes and PNG Textures

15 Free Grit & Grain Texture Brushes for Adobe Photoshop

Example of 15 Free Grit & Grain Texture Brushes for Adobe Photoshop

Beautiful High-Resolution Textures

Whether you’re using a brush to carefully draw realistic grain on an image, adding a pretty foil overlay to an object, or downloading a futuristic texture to use as a background, there’s something for every designer here.

Most of these are totally free for use, but make sure to check the licenses before you include any of these in a commercial project. Once you have the go-ahead, go crazy using these gorgeous high-res textures in your web and graphic designs.


3 Essential Design Trends, December 2019

Original Source: https://www.webdesignerdepot.com/2019/12/3-essential-design-trends-december-2019/

This month’s collection of design trends is a gift to behold. Each of the trends are highly usable options that are versatile, giving you plenty of room to play and make them your own. That’s the best kind of trend, right?

Here’s what’s trending in design this month.

Whimsical Illustrations

It seems like whimsical illustrations are practically everywhere. Fun drawings that can be anything from line-style illustrations to full-color pieces of art are popping up in all kinds of projects – even for brands, companies, of business types that you might not expect. Whimsical illustrations are trending for a number of reasons:

They create just the right feel for a project that doesn’t need to be heavy;
You can design the main imagery to be whatever you want;
They provide a source of delight for users;
Every project using illustrations looks a little different, creating a custom design;
The proliferation of illustration kits has made creating this style easier than ever.

The thing that might be best about using whimsical illustrations is the personality they bring to a project. The right illustrated element – or series of elements – can emotionally tie users to the project while setting a scene. The possibilities are almost endless. Illustrations don’t have to apply only to lighthearted projects, even though “whimsical” might imply it. The illustrations for Violence Conjugale feature a sense of whimsy for a serious topic, and it works. (Maybe we all need a little more whimsy in our life?)

Black and Blue

It’s a classic color combination that’s making a big return to projects – black and blue palettes.

The contrast of a dark background and blue accents is eye-appealing and creates a harmonious and pleasing visual aesthetic. The projects below use this color trend in different ways, all with the same cool result.

Arm Yourself uses a black background with a black and white illustration to make bright blue lettering and accents pop off the screen. Color draws users into the interactive part of the homepage design with a drag to the bullseye instruction.

Carey uses a lighter, more teal blue on a charcoal black background for a lighter feel. The blue color pulls from the logo and brand mark with buttons that have a lot of contrast from the background and brighter elements in the design. The blue continues on the scroll with bold text on a fully black background, showing the versatility of this color choice.

Adera uses a simple blue button on a black and white image to create contrast and draw the eye to the active part of the design. The color palette flips on the scroll to a blue background with darker elements on top. Contrast is a vital factor here, helping dictate user flow and how to digest and interact with information on the screen.

Anything-But-Flat Scroll Transitions

Disclaimer: I am totally in love with this trend and can’t get enough of it.

Anything-but-flat scroll transitions is a versatile design trend that’s visually interesting and contributes to usability. (It’s a win-win!) This trend is exemplified by a transition element between “screens” or “scrolls” with a visual that isn’t just a box or flat line. Think of how most parallax designs or screen-based vertical viewpoints advance from one box to another. With this trend the transition is more fluid. The examples below do this in different ways:

Oroscopo takes advantage of the blobs trend that’s been popular all year with blob elements that create waves between content elements. Contrast between light and dark backgrounds magnify this effect, while other blog shapes create visual consistency.

MAHA Agriculture Microfinance uses a simple line between scroll elements but it’s got a texture to it that makes it just a little more visually interesting that having a flat line between the hero image area at the top and the secondary content block.

Akaru uses a pretty amazing animated fluid design to offset the branding in the center of the screen. The animation carries into the background of the content below the scroll. (You’ll want to scroll all the way to the bottom of this one to see the transition from the dark animation back to white.) The effect is stunning.

Here’s why this trend works so beautifully: The fluid transition is somewhat disruptive because the user doesn’t expect this visual and seeing the edge of a transitional element encourages scrolling. Whether the user scrolls to see how the transition changes or to preview more content is irrelevant as long as the interaction happens. It’s brilliant and beautiful, especially on desktop screens.

Conclusion

The best design trends are versatile enough that you can use them in new projects or incorporate them into websites that are already live for a little refresh.

A custom illustration can add extra interest to a hero area or page within your website, a tweak to the color palette can create a brilliant black and blue combination, or a neat transition can help users engage with the scroll.

If you want to spice up a project, these trends fit the bill for sure.

Source

p img {display:inline-block; margin-right:10px;}
.alignleft {float:left;}
p.showcase {clear:both;}
body#browserfriendly p, body#podcast p, div#emailbody p{margin:0;}

Motion Paths – Past, Present and Future

Original Source: http://feedproxy.google.com/~r/tympanus/~3/NVxaS65ELcc/

Making animations that “feel right” can be tricky.

When I’m stuck, I find Disney’s 12 principles of animation useful. They’re from the book ‘The Illusion of Life’ and although the book was written about hand-drawn character animation, a lot of the principles are relevant for animation on the web.

The 7th principle of animation is about arcs:

Most natural action tends to follow an arched trajectory, and animation should adhere to this principle by following implied “arcs” for greater realism.

In other words, animating along a curved path can make movement feel more realistic.

Straight lines are what browsers do best though. When we animate an element from one place to another using a translation the browser doesn’t take realism into account. It’ll always take the fastest and most efficient route.

This is where motion paths can come in handy. Motion paths give us the ability to move an element along a predefined path. They’re great for creating trajectories to animate along.

Use the toggle to see the paths.

See the Pen Alien Abduction- toggle by Cassie Evans (@cassie-codes) on CodePen.default

As well as being useful, they’re quite a lot of fun to play around with.

See the Pen Loop by Cassie Evans (@cassie-codes) on CodePen.default

So, how do you animate along a motion path?

I use GreenSock (GSAP) for most of my SVG animation and I made these demos using the newly released GSAP 3 and their MotionPathPlugin. So, if you want to skip to that bit, go ahead!

Otherwise let’s take a little journey through the past, present and future of motion path animation.

(Did someone say CSS motion paths?)

First, a little setup tip.

Make sure to keep the path and element you’re animating in the same SVG and co-ordinate space, otherwise things get a bit messy.

<svg xmlns=”http://www.w3.org/2000/svg” viewBox=”0 0 1300 800″>
<path class=”path” d=”M1345.7 2.6l2.4-4.4″/>
<g class=”rocket”>

</g>
</svg>
SMIL

If you google “SVG motion path animation”, you’re going to get a lot of hits talking about SMIL.

SMIL was the original proposed method for SVG animation. It included the ability to animate along a path using the <animatemotion> element.

It’s nice and declarative and currently the browser support is surprisingly good, covering all modern browsers except Edge and Opera Mini.

But, and this is a big but, the future of SMIL is uncertain, and has been for a while.

It was deprecated by Chrome a few years back and although they’ve now suspended that deprecation, implementations still vary and there’s no clear path towards cross-browser support.

Although it’s fun to play around with, SMIL isn’t very future-proof, so I’m only going to touch on it.

In order to animate along a path with the animateMotion element, you reference the path you want to animate along using path=”…” and define the element you want to animate using xlink:href=”#…”:

<animateMotion
path=”M20.2…”
xlink:href=”#rocket”
dur=”10s”
rotate=”auto”

/>

See the Pen loop SMIL by Cassie Evans (@cassie-codes) on CodePen.default

With SMIL effectively out of the picture, browser vendors are now focused on supporting modern alternatives like the CSS Motion Path Module.

CSS Motion Path Module
Attention: As of the time of writing, the examples in this section are experimental and best viewed in Chrome.

You can check out which features your browser supports in the demo below.

See the Pen Browser Support – CSS motion path module by Cassie Evans (@cassie-codes) on CodePen.default

If you’ve got all green smiley faces, you’re good to go. But you may have a sad face for offset-anchor. This is because this property is currently still experimental. It’s behind a flag in Chrome, meaning it’s not turned on by default.

You can choose to enable it by going to this URL in Chrome:

chrome://flags/#enable-experimental-web-platform-features

and enabling experimental web platform features.

This module is joint work by the SVG and CSS working groups, so unlike SMIL, we’ll be able to use CSS motion paths to animate both, HTML and SVG DOM elements. I love a CSS-only solution, so although it’s not ready to use in production (yet), this is pretty exciting stuff.

The motion path module consists of five properties:

offset (shorthand property for the following)
offset-path
offset-distance
offset-anchor
offset-rotate

offset-path

offset-path defines the path that we can place our element on. There are a few proposed values but path() seems to be the only one supported right now.

.rocket {
offset-path: path(‘M1345.7 2.6l2.4-4.4’);
}

path() takes a path string with SVG coordinate syntax, which may look scary, but you don’t have to write this out. You can create a path in a graphics editing program and copy and paste it in.

offset-distance

offset-distance specifies the position along an offset-path for an element to be placed. This can be either in pixels or as a percentage of the length of the path.

See the Pen Rocket – CSS motion path – offset-distance by Cassie Evans (@cassie-codes) on CodePen.default

offset-anchor

By default the element’s top left corner will be aligned with the path, but we can change this with offset-anchor.
offset-anchor behaves a lot like transform-origin. In fact if set to auto, it’s given the same value as the element’s transform-origin, so we can optionally use transform-origin for the same results.

Like transform-origin it accepts a position with x and y values, either as a percentage or a keyword like bottom or left.

Have a play with the values:

See the Pen Rocket – CSS motion path – offset anchor by Cassie Evans (@cassie-codes) on CodePen.default

offset-rotate

offset-rotate defines the direction the element faces on the path.

By default it’s set to auto and will rotate with the path. You can pass in an optional second value in degrees in order to tweak the direction of this rotation.

See the Pen Rocket – CSS motion path – offset-rotate – auto deg by Cassie Evans (@cassie-codes) on CodePen.default

If you want your element to face the same direction throughout, and not rotate with the path, you can leave out auto and pass in a value in degrees.

See the Pen Rocket – CSS motion path – offset-rotate – deg by Cassie Evans (@cassie-codes) on CodePen.default

These properties were renamed from motion to offset since this spec was proposed. This is because alone, these properties just provide another way to set the position and rotation of absolutely positioned elements. But we can create motion by using them in conjunction with CSS animations and transitions.

.rocket {
offset-path: path(‘M20.2…’);
offset-anchor: 50% 50%;
offset-rotate: auto;
/* if offset anchor isn’t supported we can use transform-origin instead */
transform-origin: 50% 50%;
animation: move 8s forwards linear;
transform-box: fill-box;
}

@keyframes move {
from {
offset-distance: 0%;
}
to {
offset-distance: 100%;
}
}

See the Pen Rocket – CSS motion path by Cassie Evans (@cassie-codes) on CodePen.default

Attention: SVG transform-origin quirks.

In this demo, I’m using a relatively new CSS property, transform-box.

This is to avoid a browser quirk that’s caught me out a few times. When calculating transforms and transform-origin, some browsers use the element’s bounding box as the reference box and others use the SVG viewbox.

If you set the value to fill-box the objects bounding box is used as the reference box.

And if you set the value to view-box the nearest SVG viewbox is used as the reference box.

You can see what happens to the center of rotation when we change it here:

See the Pen Rocket – CSS motion path – transform-box by Cassie Evans (@cassie-codes) on CodePen.default

GreenSock Animation Platform (GSAP)

While we wait for the CSS solution to be more widely implemented we’re in a bit of a motion path limbo. Thankfully there’s some JavaScript animation libraries that are bridging this gap.

I usually use GreenSock for SVG animation for a few reasons.

There are some cross browser quirks with SVG, especially with how transforms are handled. The folks at GreenSock go above and beyond to handle these inconsistencies.

Animation can also be a bit fiddly, especially when it comes to fine-tuning timings and chaining different animations together. GreenSock gives you a lot of control and makes creating complex animations fun.

They also provide some plugins that are great for SVG animation like DrawSVG, MorphSVG and MotionPathPlugin.

They’re all free to experiment with on Codepen, but some of the plugins are behind a membership fee. MotionPathPlugin is one of the free ones, and part of the new GSAP 3 release.

MotionPathPlugin gives you the ability to turn an SVG path into a motion path, or specify your own path manually. You can then animate SVG or DOM elements along that path, even if those elements are in a completely different coordinate space.

Here’s a demo with the necessary libraries added to start you off.

In order to use a plugin we have to register it, like this:

gsap.registerPlugin(MotionPathPlugin);

Then we can start animating. This is what a tween using the simplified GSAP 3 syntax looks like:

gsap.to(“.rocket”, {
motionPath: …
duration: 5,
});

The name ‘tween’ comes from the world of hand-drawn animation, too.

Tweening is the process of generating intermediate frames between two images to give the appearance that the first image evolves smoothly into the second image.

That’s pretty much what a GSAP tween does. You feed in the element you want to animate, the duration, and the properties you want to target and the tween will figure out the in-between states.

The motionPath attribute can be used shorthand, and passed a path:

gsap.to(“.rocket”, {
motionPath: “#path”,
duration: 5,
});

Or, if we want more control over the settings we can pass it an object of options:

gsap.to(“.rocket”, {
motionPath: {
path: “#path”,
align: “#path”,
autoRotate: true,
},
duration: 5,
});

See the Pen Rocket – GSAP motion path by Cassie Evans (@cassie-codes) on CodePen.default

Here are some of the properties we can control.

path

This defines the motion path we’re animating along, we can reference a path that exists in the document by using a selector,

motionPath: {
path: “#path”,
}

a string that contains SVG path data,

motionPath: {
path: ‘M125.7 655a9.4 9.4…’,
}

an object containing an array of x and y co-ordinates to move between,

motionPath: {
path: [{x: 100, y: 100}, {x: 300, y: 20}]
}

or a variable referring to one of these options:

const myPath = ‘M125.7 655a9.4 9.4…’

motionPath: {
path: myPath,
}
align

We can use this to align the element to the path, or other elements in the document by passing in a selector:

motionPath: {
path: “#path”,
align: “#path”
}

We can also align the element to itself if we want the animation to start from the element’s current position.

motionPath: {
path: “#path”,
align: “self”
}

In the next demo, the purple rocket is aligned to self and the green rocket is aligned to the path.

align: “self” is like moving the path to the element, rather than the element to the path.

See the Pen Rocket – GSAP motion path – align by Cassie Evans (@cassie-codes) on CodePen.default

By default, the element’s top left corner will be the center of rotation and alignment. In order to align the element accurately on the path you’ll need to set the element’s center of rotation, like this:

gsap.set(“.rocket”, {
xPercent: -50,
yPercent: -50,
transformOrigin: “50% 50%”
});
autoRotate

This is how we get our element to rotate along with the curvature of the path:

motionPath: {
path: “#path”,
align: “#path”
autoRotate: true,
}

We can also provide a number value. This will rotate along with the path, but maintain that angle relative to the path.

motionPath: {
path: “#path”,
align: “#path”
autoRotate: 90,
}
start & end

These properties let us define where on the path the motion should begin and end.

By default, it starts at 0 and ends at 1, but we can provide any decimal number:

motionPath: {
path: “#path”,
align: “#path”
autoRotate: true,
start: 0.25,
end: 0.75,
}

If you want the element to go backwards along the path, you can provide negative numbers.

See the Pen Rocket – GSAP motion path – align by Cassie Evans (@cassie-codes) on CodePen.default

immediateRender

If your element is starting off at a different position in the document and you want it to align with the path you might notice a jump as it moves from its position to the path.

See the Pen Rocket – GSAP motion path – align by Cassie Evans (@cassie-codes) on CodePen.default

You can fix force it to render immediately upon instantiation by adding immediateRender:true to the tween.

// animate the rocket along the path
gsap.to(“.rocket”, {
motionPath: {
path: “#path”,
align: “#path”,
autoRotate: true,
},
duration: 5,
ease: “power1.inOut”,
immediateRender: true,
});
MotionPathHelper

Another super cool feature of the GSAP 3 release is the MotionPathHelper.

It enables you to edit paths directly in the browser! I found this really helpful, as I’m always going back and forth between the browser and my graphics editor.

Give it a go in the demo below. When you’re done, click “copy motion path” to copy the SVG path data to your clipboard. Paste the new path data into the d=”” attribute in the SVG code to update your path.

There are instructions on how to edit the path in the GSAP docs.

See the Pen Rocket – GSAP motion path – helper by Cassie Evans (@cassie-codes) on CodePen.default

GreenSock is a ton of fun to play around with!

There are a bunch of other features and plugins that when paired with motion path animation can be used to create really cool effects.

In this demo, DrawSVG is progressively showing the text path as some staggered elements animate along the path using MotionPathPlugin:

See the Pen Squiggle text animation by Cassie Evans (@cassie-codes) on CodePen.default

If you’ve had fun with these examples and want to explore GreenSock some more, Christina Gorton has written The New Features of GSAP 3 providing a practical overview.

GreenSock also have a great getting started guide.

Happy animating!

Motion Paths – Past, Present and Future was written by Cassie Evans and published on Codrops.

10 Awesome Cyber Monday Deals That You Should Check Out (Up to 94% Off)

Original Source: https://www.webdesignerdepot.com/2019/12/10-awesome-cyber-monday-deals-that-you-should-check-out-up-to-94-off/

It’s that time of the year again. If you skipped Black Friday there’s still Cyber Monday.

And there are tools and resources out there that you’ll find only once a year at this great price. We’ve gathered the best of them in this article.

Bookmarking this page isn’t a solution. Don’t let a slow decision ruin your chance of getting these products or resources at a discounted rate. Act fast and don’t let them slip by.

1. Brizy Cloud Website Builder

In addition to the Cyber Monday savings you could realize, Brizy has lots of free stuff to offer as well, including the website builder itself. This premium product enables designers to create multipage websites fast, easily, and efficiently. Thanks to the 150+ customizable layouts and more than 700 design blocks that come with the package, coding is not necessary.

There is a small catch. You should sign up for a free account to be able to save what you build. You have full control over what you build and how your websites and those of your clients will appear on responsive devices.

Where does the Cyber Monday deal come in? Aside from the Free Forever plan, there are two annual paid plans (Personal and Studio). These are very affordable plans that have much more to offer than the free plan and can be yours at a 40% discount if you order 2 December or 3 December. You might check out Brizy before that date to see if a paid plan is the preferred choice for you. Use discount code CM40OFF.

2. Smart Slider 3 Pro

Smart Slider Pro 3 features a free plan and three paid plans (Single Domain, Business, and Unlimited). Give it a test drive for free. Yes, you can demo it for free. And if you like it, you can buy one of the paid plans at a discount until December 3.

Smart Slider 3 Free allows you to build beautiful responsive sliders. The paid plans provide additional special effects such as parallax animation and the popular Ken Burns effect.

You won’t get bogged down with extraneous features you have no use for. There are two different editing modes (content and canvas) to work with. In the content mode the slide acts as a page builder, in the canvas mode you can work with layers unobstructed.

Features include 180+ sample sliders (one click installation), a layer animation builder, and an astonishing array of animations and special effects. Any of the pro plans can be yours at a Cyber Monday discount of 40%. Use code SAVE4019.

3. Paymo

Paymo is a work management software application teams can use to plan their workflow, track time, and invoice clients. Having all these functions managed by a single app ensures that everything is kept in sync. Project managers will know exactly how much time (including billable hours) is spent on each task, making it easy to send accurate reports and charge clients correctly and fairly.

Paymo integrates with Adobe to allow you to track work time directly on Photoshop, InDesign, Illustrator, and Premier.

Live, up-to-date reports can be generated for sharing with team members and project stakeholders. Paymo also helps team management with task planning, tracking expenses, performing leave management tasks, and more. Other important features include Gantt charting, Kanban Boards, and a resource scheduler.

Upon subscribing, use code GVX233 for a 30% Paymo discount.

4. TheGem – Creative Multi-Purpose High-Performance WordPress Theme

TheGem is a bold and beautiful WordPress theme that is regarded by many, including its 40K satisfied customers, as featuring the most complete designer’s toolkit of any theme on the market. WPBakery ensures easy and intuitive front-end page editing, plus more than 90 pre-built complete websites, installable with one click, allows you to get off to a quick start.

Premade templates and design elements are easily combinable. This premier theme is yours at a 50% discount Cyber Monday.

5. Beaver Builder

Beaver Builder is drag and drop website building plugin that enables you to separate page building from your theme, giving you total control over your content. Beaver Builder works with any theme, and you can even switch themes without any loss of content. 30+ landing pages come with the package, no coding is necessary, and Beaver Builder is SEO friendly and mobile responsive. No discount code is required. The 25% discount is automatically applied during checkout from Black Friday through Cyber Monday.

6. Kalium

Kalium is a superior choice for beginners and advanced WordPress users alike. It is easy to use and easy to maintain, it includes several of the most popular WordPress plugins, and it supports all the better known ones. This creative multipurpose theme is an award winning top seller. It’s trusted by 30,000+ clients and provides top customer support.

Normally selling for $60, Kalium can be yours Cyber Monday for $30; a 50% discount and a great deal.

7. Mobirise Website Builder

Mobirise is an offline website building app for Windows and Mac that features an extremely easy to use interface. It’s mobile friendly, it’s free for both commercial and non-profit use, and you can build fast, responsive, Google-friendly websites in minutes. Mobirise’s Website Builder Kit, normally priced at $2,654, features all premium themes, 200+ blocks, and 66 Mobirise themes and extensions.

On Monday you can purchase this all-in-one Kit for $149, a whopping 94% discount!

8. Simple Author Box

The Simple Author Box plugin’s features give you the ability to add guest authors and multiple authors to your posts, add links to author’s social networks, and select specific post types where you want your author box to show up. Simple Author Box is Gutenberg block compatible.

Although a free version is available, signing up for a subscription plan is recommended. The Cyber Monday offer of a 30% discount on all lifetime licenses is valid until 4 December.

9. MyThemeShop

This is for the designer who wants to be able to choose among a huge variety of premium themes, domain licenses, plugins, and memberships in conversion tracking, user behavior, and social media platform tool usage and more.

For Cyber Monday, MyThemeShop’s annual fee is discounted to $99.47. This Cyber Monday special is valid from 1 December to 7 December.

10. WordLift

As you write content, WordLift is busy adding semantic markups to feed to search engine crawlers with the intent of helping you reach a broader audience. This semantic SEO tool uses natural language processing, analyzes content, and transforms any text into machine-friendly content.

A quality SEO tool like WordLift makes a great investment as it produces greatly superior results as compared to attempting to create SEO friendly content on your own. Cyber Monday features a 50% discount on your first subscription.

Conclusion

Cyber Monday will fall on the 2nd of December you can witness some of the biggest online deals of the year on tech-related items. Many of these deals are available in physical stores as well. However, online shopping is generally much more convenient, especially if all you have to do is confirm your order and perhaps press “Download”. As far as comparisons with Black Friday are concerned, Cyber Monday discounts are at least as large, and often larger.

 

[– This is a sponsored post on behalf of BeTheme –]

Source

p img {display:inline-block; margin-right:10px;}
.alignleft {float:left;}
p.showcase {clear:both;}
body#browserfriendly p, body#podcast p, div#emailbody p{margin:0;}

Wacom Cyber Monday 2019: New deals just added!

Original Source: http://feedproxy.google.com/~r/CreativeBloq/~3/9m0UcSMh1Y8/wacom-black-friday-and-cyber-monday-deals

Hoping to pick up a hot deal in the Wacom Cyber Monday sale? Read on… In this article, we'll be bringing you the best Wacom Cyber Monday deals as soon as they go live. Wacom has long ruled the roost then it comes to graphics tablets, and the holiday sales are a great time to tick one up for a bargain price. Scroll down to check out the biggest savings available right now. 

The holiday offers kicked off early this year, but as usual the biggest deals have been saved for Black Friday and Cyber Monday themselves. The event is almost over, but there's still time to snag a good Cyber Monday Wacom deal if you're quick.

If you've been on the hunt for a bargain Wacom product then you'll know that it's not always easy to find a decent discount. That's not to say there aren't great deals to be had, you just need to know where to look and when to hit the Buy button. This time of year offers up probably one of the best chances you'll get at making a worthy saving on one of Wacom's popular products, and we've curated the strongest offers in this article for you to browse. 

Not sure which Wacom is the best choice for you? Check out our guide to the best drawing tablets for more information to help you make your selection. Alternatively, if you're thinking about buying one of Apple's tablets, see our iPad Black Friday deals hub.

Browse all Wacom Cyber Monday deals

There are many retailers offering Wacom Cyber Monday deals. If you'd rather check out the offers yourself, use the following links. If not, scroll down to read our curated list of the best deals available in the US and UK.

Amazon: Discounts on Wacom run up to 41%Walmart: Great deals across tablets including accessoriesBest Buy: Plenty of deals that include Creative Cloud subscriptions Park Cameras: Some tidy discounts on tabletsB&H: Save on the Wacom Cintiq Pro

The Cintiq family has expanded in the last 12 months, so we're seeing older models for a reduced price. Check out today's best deals below.

Wacom Cintiq Cyber Monday deals: US
Wacom Cintiq Cyber Monday deals: UK

The Cintiq Pro has some fantastic top-of-the-range tablets, and we've seen some fantastic discounts so far. Check out today's offers below.

Wacom Cintiq Pro Cyber Monday deals: US
Wacom Cintiq Pro Cyber Monday deals: UK

The Wacom Intuos family sits at the lower end of the company's price range, but that doesn't mean there aren't discounts. Acting as Wacom's perfect jumping on point for digital artists, a Wacom Intuos Black Friday discount would be a smart way for more creatives to get to grips with its products. Below are all the best Wacom Intuos Black Friday deals.

Wacom Intuos Cyber Monday deals: US
Wacom Intuos Cyber Monday deals: UK

Last year the Intuos Pro range enjoying a reduced price to celebrate Wacom's 35th anniversary, and this year we're already seeing discounts. See below for the hottest prices on these capable creative tablets.

Wacom Intuos Pro Cyber Monday deals: US
Wacom Intuos Pro Cyber Monday deals: UK
Wacom Bamboo deals: UK
Wacom Cyber Monday: What happened last year?

Last year, the Wacom Intuos Pro Black Friday and Cyber Monday discounts proved to be the most popular offer, so it makes sense for Wacom to attempt to repeat this success. However, we're also keeping out eyes out for any Wacom Cintiq Pro Black Friday discounts. Other items that flew off the digital shelves include the Bamboo Slate and the accompanying Bamboo Sketch, so be sure to keep these in mind over the shopping season too.

Wacom Black Friday and Cyber Monday: product predictions 

Based on last year's trading, we can make a number of predictions around the kind of Wacom Black Friday and Cyber Monday discounts we'll see in 2019. We've separated them into products below to make it easier to find the kind of device you're looking for, what savings you could potentially make, as well as any good deals available right now. 

If you see a Wacom tablet you like at a price to suit your budget, be sure to buy it quickly. The best Wacom Black Friday deals usually go fast, especially because graphics tablets discounts are some of the most hotly anticipated offers around Black Friday and Cyber Monday.

How to get the best Wacom Black Friday and Cyber Monday deals

If you're on the lookout for a Wacom Black Friday deal, be sure to bookmark this page. We're updating this page live with the best offers on Wacom products. Another good place to keep an eye on is the Wacom Store itself, which is sure to promote its biggest discounts. Of course, other online retailers such as Amazon, Best Buy and John Lewis will also be getting in on the action with their own deals.

Remember, getting a Wacom tablet with add-ons is a great way to save even more money, and refurbished models can be another way to bring the price down even further.


94% Off: Get the Complete Facebook Ads Course: Beginner to Advance for Only $11

Original Source: http://feedproxy.google.com/~r/Designrfix/~3/Kv5jDXJskJA/complete-facebook-ads-course-deal

There are billions of people who use Facebook on a daily basis. Many of them check their accounts several times a day. Placing a highly targeted ads on the platform can help you reach your target audience. It is a tremendous way to increase traffic and exposure for your business, generate leads and sales, and […]

The post 94% Off: Get the Complete Facebook Ads Course: Beginner to Advance for Only $11 appeared first on designrfix.com.

Black Friday MacBook deals: the best MacBook Pro and Air offers right now

Original Source: http://feedproxy.google.com/~r/CreativeBloq/~3/XvDqBHOrqF0/best-macbook-deals-black-friday-cyber-monday

Black Friday MacBook deals have arrived. If you’ve been holding out, waiting for the best MacBook Pro Black Friday deals, a big MacBook Air price cut or even a huge discount on the older 2018 Macbook – today is your day. We’re working around the clock to bring you the very best MacBook Black Friday deals on all models, as soon as they drop (and you’ll find the best MacBook Cyber Monday deals here on this page next week, too).

We’re seeing some fantastic discounts on the 2019 MacBook models at the moment. There are also some great 2018 MacBook Pro deals, as retailers look to shift their stock after the launch of the new 16-inch MacBook Pro. Read on for our pick of the best Black Friday MacBook deals right now – and once you’ve found the lowest price, have a browse of our best Apple Black Friday deals too. 

The best Black Friday and Cyber Monday MacBook Pro deals: US
Jump to: UK Macbook Pro Black Friday deals
The best Black Friday and Cyber Monday MacBook Pro deals: UK
The best Black Friday and Cyber Monday MacBook Air deals: US
Jump to: UK Macbook Air Black Friday deals
The best Black Friday and Cyber Monday MacBook Air deals

Can't see exactly what you want in the deals above? The widget below will pull in the best prices across a range of MacBook models, in your region. We'll also be updating the section above with any good new offers as soon as they appear, so bookmark this page and check back. 

Alternatively, browse our ultimate guide to the Apple Black Friday sale, or our general Black Friday and Cyber Monday deals page, or check out our product-specific guides for the best Black Friday iPad deals, AirPod deals, Apple Pencil deals and Apple Watch deals. 

Jump back to top
Black Friday and Cyber Monday MacBook deals 2019: Our predictions

Black Friday and Cyber Monday MacBook deals 2018: MacBook

Don’t expect to see many serious price cuts on the standard MacBook

The standard MacBook is a popular choice, and it's easy to see why. If portability is your thing, it's worth noting that the most up-to-date 12-inch MacBook is both thinner and lighter than the old 13-inch MacBook Air, with better specs and a Retina display.

What this popularity means, though, is that you're unlikely to see much in the way of massive Black Friday or Cyber Monday MacBook deals on the standard models. However the introduction of new 2019 models means there may well be great bargains to be had on last year's still highly capable models. Keep your eyes peeled, and be prepared to act fast, as these deals are likely to get snapped up quickly.

Black Friday and Cyber Monday: MacBook Pro predictions

Black Friday and Cyber Monday MacBook deals 2018: MacBook Pro with Touch Bar

The MacBook Pro is available with a Touch Bar, for a price

It usually a safe bet that the biggest bargains will be on slightly older models. The good news is that Apple has just launched a brand new 16" MacBook Pro, which means we're likely to see some price drops on the previous 15" MacBook Pro (2019) as retailers seek to shift stock.

The MacBook Pro's high price – especially on, say, the Touch Bar models – means it's easier for retailers to deliver a huge temporary price cut and still turn a profit, so if you're looking for a powerful creative laptop it's worth bearing in mind. You'll still be paying out quite a bit for it, but it'll be worth the expense.

Black Friday and Cyber Monday: MacBook Air predictions

Black Friday and Cyber Monday MacBook deals 2018: MacBook Air

It’s getting on a bit, but the older MacBook Air could be a good bargain option

The MacBook Air was refreshed in July 2019, which means we'll likely be seeing some offers on older models. We expect there to be some fantastic Black Friday MacBook Air deals on offer this year as retailers clear out their old stock. 

The downside to choosing an older Air is that it's the least powerful MacBook you can get… it's not even the thinnest and lightest any more. However if you simply have to have a MacBook but you're on a budget, it's a strong choice. These are the best savings we saw last year…

How to get the best MacBook deals on Black Friday

The best advice we have for you is this: be sure to decide just how much you want to spend on a Black Friday MacBook deal (or a MacBook on Cyber Monday, of course), and if you see one within that budget, go for it. The best deals can be gone in minutes, so don't waste time if you know you're looking at a solid gold bargain. Bookmark this page and check back to make sure you know what to expect and you can jump on the best Black Friday MacBook deals before they sell out.

Preparation is key when it comes to getting good Black Friday MacBook deals, or picking up a MacBook Cyber Monday bargain, especially when you bear in mind that a lot of retailers can't wait for Black Friday, and so start shipping their bargains well in advance of the big day. In the run-up to Black Friday and Cyber Monday we'll be keeping tabs on new deals as they appear, so keep checking back for offers that you won't want to miss.

You'll need to decide whether it's a standard MacBook you want, an Air or a full-fat MacBook Pro. If you're planning to use your new MacBook as an all-round work machine then it's worth holding out for a good deal on a Pro as it'll be able to cope with just about everything you throw at it. If you're less of a power user then the ordinary MacBook should suit your needs, and while the older Air's more limited it should be the one to go for if you want a MacBook at rock-bottom prices. The latest Air may also be for you if you prioritise a portable and thin machine over screen size.

Beware of older models – they're likely to see the biggest discounts but they'll be packing less power than more up-to-date machines. Although you could consider getting an SSD to speed things up. And of course, use a bit of common sense while shopping; look out for cashback offers, always check the guarantee and make sure you keep your receipt in case of faults or buyer's remorse.

MacBook, MacBook Pro and MacBook Air features and specs that creatives should look out for

Black Friday and Cyber Monday MacBook deals 2018: features and specs

Many MacBooks are severely lacking in ports; bear that in mind when make your choice

There might only be three main models of MacBook to choose from, but there are plenty of variations in the line that are well worth noting when you're looking for Black Friday MacBook deals. 

Firstly, the CPU: the MacBook Air's is the least powerful of the lot, although the most recent 2019 version improves things with an 8th-generation Core i5 processor, with Turbo Boost up to 3.6GHz. Older models feature an old Intel Broadwell chipset running at 1.6GHz, or 1.8GHz for more recent models. 

Both the MacBook and MacBook Pro boast beefier 8th and 9th generation chipsets; with the latest Pro really turning up the heat: up to 2.7GHz quad-core Core i7 in the 13-inch Touch Bar model,  while the 15-inch Touch Bar version goes up to a 2.9GHz six-core Core i9.

Lower end MacBooks – the older Air and the 13-inch MacBook Pro – only give you 128GB SSD, which is likely to mean that you'll need to invest in some external storage; the new MacBook Air starts with 128GB but can be specced up to a whopping 1.5TB SSD if you have the budget. All other MacBook models feature 256GB SSD; bear in mind that if you work with large files then you'll probably burn through that pretty quickly.

If you're going to need to plug peripherals into your new MacBook, check the number of available ports; the standard MacBook only has one USB-C port, while most MacBook Pros have four. The latest MacBook Air features a pair of Thunderbolt 3 ports, while the older model has three ports: they're USB 3.0 and Thunderbolt 2, and while they shouldn't give you any problems, bear in mind you might need an adapter for more recent peripherals.

Display-wise, all the MacBooks apart from the original Air feature crisp Retina displays. And they'll all serve you well in terms of battery, but watch out for MacBook Pros with a Touch Bar; Apple claims that this makes no difference but our friends at TechRadar have found that the Touch Bar can take a fair toll on battery life.

Related articles:

The best Black Friday iPad deals in 2019MacBook Pro (13-inch, 2018) and Blackmagic eGPU reviewThe best laptops for graphic design in 2019
The best Black Friday and Cyber Monday MacBook Pro deals: US

Free Bootstrap Website Templates Worth Checking Out

Original Source: http://feedproxy.google.com/~r/1stwebdesigner/~3/VVUDQinsiic/

Web developers have long been using Bootstrap to create unique, beautiful websites. The HTML, CSS, and JavaScript framework offers an easy-to-use and even easier to implement toolkit for designers and developers to create responsive websites.

And where there’s a framework, there will always be free templates built by developers for anyone to use. Here are some of the best general-purpose Bootstrap themes online, totally free to download and edit for your own websites.

UNLIMITED DOWNLOADS: Email, admin, landing page & website templates

DOWNLOAD NOW

Creative

Example of Creative

This simple yet beautiful one-page theme is made for small businesses. With a full-screen header, clean design, and working lightbox gallery, it makes a perfect mini-portfolio for any creative startups.

Grayscale

Example of Grayscale

Grayscale is an elegant multipurpose theme with a minimal dark palette. The template would work well to show off a project or introduce your brand. A beautiful header with a call to action button scrolls you right down into a small portfolio, followed by a newsletter subscription box and social media links.

Freelancer

Example of Freelancer

If you’re a freelancer, you’ll like this portfolio template. The flat, cartoony design is very appealing and will certainly make you stand out. And the portfolio section includes popup lightbox windows with room to describe all your projects, plus a contact form you can get working with a few PHP tweaks.

Resume

Example of Resume

Professional and elegant, this template is perfect for an online resume. The clean theme features fixed side navigation and sections to list experiences and skills, with a design that gets to the point while still being aesthetically pleasing. A great way to impress future bosses and clients.

New Age

Example of New Age

Need a template with a pop of color? New Age is filled with bright and vivid designs, including a beautiful header gradient that’s sure to capture attention. The modern one-page design was made to showcase your app, product, or anything else.

Tabler

Example of Tabler

Looking for a build-your-own Bootstrap admin panel with a clean dashboard interface? There are plenty of interface pieces and useful components already made for you. Just put them all together to create a unique template.

Coming Soon

Example of Coming Soon

Got a big project but aren’t quite ready to reveal it? Coming Soon is a great landing page, with room for a short blurb, newsletter sign-up, social icons, and a huge video background. The video includes a fallback image for mobile users so you don’t need to worry about performance.

NewBiz

Example of NewBiz

This professional business template comes with everything a startup will need. Eye-catching scroll and hover animations keep users interested, while each section has something unique like a lightbox portfolio or a scrolling slider. This is definitely a more feature-packed theme.

Regna

Example of Regna

Regna is a business-oriented template that opens with a beautiful header and transitions to a clean, professional look. There are plenty of animated effects, useful sections, and even a sortable portfolio gallery. The pro version comes with a working contact form and removed attribution.

CoreUI

Example of CoreUI

Every business needs a good admin panel, and CoreUI lets you build your own. Use their customizable components to put together a dashboard that has everything you want. Widgets, charts, cards and popups – and the pro version comes with even more elements.

Rapid

Example of Rapid

Rapid offers a light and sophisticated template made for businesses of any kind. Elegant animations are found on every scroll, and the theme includes all the sections you’ll need to present your brand. There’s a filterable portfolio, pricing section, contact form, and plenty more.

Beautiful Bootstrap Templates

Thanks to Bootstrap template designers, you don’t need to build a website from scratch. Just install one of these themes and tweak the images and text, or build on them to add your own elements. It’s a real timesaver. Try one of these beautiful, functional Bootstrap themes and make them work for you.