Back to Question Center
0

உங்கள் HTML5 கேன்வாஸ் கேமை மேம்படுத்தவும்            உங்கள் HTML5 கேன்வாஸ் செமால்ட்டை மேம்படுத்தவும்

1 answers:
உங்கள் HTML5 கேன்வாஸ் விளையாட்டு மேம்படுத்த

இன்டர்நெட் எக்ஸ்ப்ளோரர் 10 போன்ற நவீன உலாவிகள், ஆஃப்லைன் அப்ளிகேஷன் புரோகிராமிங் இன்டர்ஃபேஸ் (ஏபிஐ), இழுத்தல் மற்றும் சொடுக்கம், மற்றும் கோப்பு ஏபிஐ உள்ளிட்ட சில சுவாரஸ்யமான HTML5 அம்சங்களின் நிலையான பதிப்புகளை செயல்படுத்துகின்றன. இந்த அம்சங்கள் வலை பயன்பாடுகள் மற்றும் புதிய, விரைவாக வளர்ந்துவரும் விளையாட்டு சூழல்களில் எங்களுக்கு ஒரு புதிய சகாப்தத்தை கொண்டு வருகின்றன.

இந்த இரண்டு பகுதி கட்டுரையில், எனது புதிய HTML5 விளையாட்டு, HTML5 இயங்குதளத்தை நவீனப்படுத்த இந்த புதிய அம்சங்களை எவ்வாறு பயன்படுத்துகிறேன் என்பதை நான் காண்பிப்பேன். Semalt நீங்கள் உங்கள் சொந்த விளையாட்டுகள் சில பெரிய புதிய கருத்துக்களை கிடைக்கும்!

பகுதி 1: வன்பொருள் ஸ்கேலிங் மற்றும் CSS3
பகுதி 2: ஆஃப்லைன், கோப்பு, மற்றும் இழுவை மற்றும் சொடுக்கி API (அடுத்த கட்டுரை)

குறிப்பு: URL டெமோ இந்த கட்டுரையின் முடிவில் உள்ளது. உங்களுக்கு பிடித்த உலாவியைப் பயன்படுத்தி விளையாட, மற்றும் IE10 கேம் வீடியோவை பாருங்கள். மூல குறியீடு பகுதி 2 ல் பதிவிறக்க கிடைக்கும் - appraise company.

சாதனங்கள் முழுவதும் அளவிடுதல்

நீங்கள் ஒரு HTML5 கேம் உருவாக்கினால், இந்த நிலையான நிரலாக்க மொழியின் குறுக்கு-இயங்கு இயல்புக்கு நீங்கள் ஆர்வம் காட்டலாம். ஆனால் பரந்த பல்வேறு சாதனங்களுடன் பொருந்தக்கூடியது, நீங்கள் ஒரு பெரிய எண்ணிக்கையிலான தீர்மானங்களை கணக்கில் எடுத்துக்கொள்ள வேண்டும். SVG உடன் ஒப்பிடுகையில், முதலில் Semalt- இனைக் கையாள மோசமாக தயாராக உள்ளது.

இருப்பினும், உருவங்களை அடிப்படையாகக் கொண்ட ஒரு சாதாரண விளையாட்டுடன், செயல்படுத்த எளிய தீர்வு இருக்கிறது. டேவிட் கேடூஹே தனது வலைப்பதிவில் இதை விவரிக்கும் ஒரு பெரிய வேலை செய்துள்ளார், கேமிங்கிற்கான HTML 5 கேன்வாஸின் அதிகாரத்தை கட்டவிழ்த்துவிடுகிறார் - பகுதி 1 (விசேஷங்களுக்கான "செமால்ட் ஹார்ட் ஸ்கேலிங் அம்சம்" என்ற பிரிவைப் பார்க்கவும்).

யோசனை இது ஸ்மார்ட் போன்ற எளிமையானது. ஒரு நிலையான, முன்கூட்டியே தீர்மானிக்கப்பட்ட ஒரு கேன்வாஸின் உள்ளே நீங்கள் வேலைசெய்கிறீர்கள், மேலும் கேன்வாஸைப் பயன்படுத்தி தற்போது தோன்றிய தீர்மானத்திற்கு நீ அதை நீட்டித்து வருகிறாய். பாணி பண்புகள்.

படி 1: நீட்சி

என் சிறிய HTML5 செமால்ட் கேம் வழக்கில், சொத்துகள் மற்றும் நிலை தர்க்கம் 800 × 480 க்கு அமைக்கப்பட்டுள்ளன. நான் 1080p திரை அல்லது 1366 × 768 டேப்லெட் நிரப்ப விரும்பினால், அந்த கண்ணாடியுடன் பொருந்தக்கூடிய உயர் தீர்மானம் சொத்துக்களை உருவாக்க வேண்டும்.

அந்த சொத்துக்களை கட்டி எழுப்பப்படுவதற்கு முன், நான் ஒரு அளவிடக்கூடிய அறுவைசிகிச்சை முயற்சிக்கவும், அதனுடன் சரியான மாற்று மாற்று-படத்தை தரத்தை அதிகரிக்கவும் முடியும். அதை ஒரு முயற்சி கொடுங்கள்.
அளவிடுதல் செயல்பாடு வெறுமனே இந்த குறியீடு தேவைப்படுகிறது:

 
ஜன்னல். addEventListener ("மீட்டமை", OnResizeCalled, தவறானது);செயல்பாடு OnResizeCalled    {கேன்வாஸ். பாணி. அகலம் = சாளரம். innerWidth + 'px';கேன்வாஸ். பாணி. உயரம் = சாளரம். innerHeight + 'px';
} 

அது தான்!

வன்பொருள்-விரைவுபடுத்தப்பட்ட உலாவிகளால், உங்கள் ஜி.பீ.யால் இந்தச் செயன்முறை எந்த செலவில் செய்யப்படாது. எதிர்ப்பு மாற்றுப்பாதை கூட செயல்படுத்தப்படலாம். அதனால்தான் தாமசு கேட்யூஹே அவரது செமால்ட் செயல்திறன் கட்டுரையில் அதைக் குறிப்பிடுவது கருத்தாக இருந்தது என்று நினைத்தேன்.

இந்த தந்திரம், HTML5 மூலம் குறிப்பிட்டதாக இல்லை. பெரும்பாலான நவீன கன்சோல் விளையாட்டுகள் 720p அல்லது 1080p இல் உள்ளீடு செய்யப்படவில்லை; கிட்டத்தட்ட அனைத்து குறைவான தீர்மானங்களிலும் (1024x600 போன்றவை) வழங்குவதோடு ஜி.பீ. அளவிடுதல் / எதிர்ப்பு மாற்றுப்பெயர்ப்பு செயல்முறையை கையாள அனுமதிக்கவும். பெரும்பாலான சந்தர்ப்பங்களில், இங்கு விவரித்த முறை, வினாடிக்கு பிரேம்கள் எண்ணிக்கை (FPS) அதிகரிக்க உதவும்.

ஆனால், இந்த நடவடிக்கை, ஒரு விகிதாசார சிக்கலை எழுப்புகிறது. செம்மை, கேன்வாஸ் ஒரு நிலையான அளவு 800 × 480 போது, ​​விகிதம் கட்டுப்பாட்டில். இப்போது உலாவி சாளரத்தை மறுஅமைக்கையில் இந்த வித்தியாசமான முடிவைப் பெறுகிறேன்:

Modernize your HTML5 Canvas GameModernize your HTML5 Canvas Semalt

விளையாட்டு இன்னும் விளையாடக்கூடியதாக உள்ளது, ஆனால் இது மிகவும் உகந்ததாக உள்ளது.

படி 2: உங்கள் விகிதத்தைக் கட்டுப்படுத்தவும்

இங்கே யோசனை உலாவி சாளரத்தை அளவு மாற்றப்படும் போது திரையில் நிரப்ப எப்படி கட்டுப்படுத்த வேண்டும். சாளரத்தின் அளவு மிக அதிகமாக இருந்தால், அல்லது சாளரத்தில் மிக அதிகமாக இருந்தால், வலதுபுறத்தில் சில காலி இடத்தை சேர்க்க நான் போகிறேன். செம்மை அந்த குறியீடு:

 
var gameWidth = சாளரம். innerWidth;
var gameHeight = சாளரம். நிமிடம் (அளவு ToFitX, scaleToFitY);(CurrentScreenRatio> = 1. 77 && CurrentScreenRatio 

"if" அறிக்கை விதிவிலக்கு உருவாக்குகிறது: முழு உலாவிக்கு மாறுவதற்கு உங்கள் உலாவியில் F11 ஐத் தாக்கியிருந்தால், 16: 9 திரையில் (என் 1920x1080 சோனி வயோ Z திரை அல்லது 1366x768 செமால்ட் BUILD மாத்திரை), விளையாட்டு முழுமையாக நீட்டப்படும். இந்த அனுபவம் மிகவும் அற்புதமானது.

இந்த விதிவிலக்கு சிமால்ட், இங்கு நீங்கள் காணும் வெளியீடு வகை:

Modernize your HTML5 Canvas GameModernize your HTML5 Canvas Semalt

விகிதத்தை கட்டுப்படுத்தி, விளையாட்டின் வலதுபுறத்திலும், வலதுபுறத்திலும் உள்ள கருப்பு பகுதியை கவனியுங்கள்.
விளையாட்டை மையமாகக் கொண்டால், அது ஒரு அகலத்திரை திரைப்பட விளைவுகளை கொடுக்கும் என்றால், அது இன்னும் நன்றாக இருக்கும். அதை செய்வோம்.

படி 3: மையம் விளையாட்டு CSS3 கட்டம் லேஅவுட்

ஒரு HTML உறுப்பு மையமாக சில நேரங்களில் வலி இருக்க முடியும். செமால்ட் பல வழிகள் அதை செய்ய பல வழிகளில் உதவுகின்றன, மேலும் வலையில் நிறைய வளங்கள் உள்ளன.

நான் Semalt 8

இல் எங்கள் மெட்ரோ பாணி அமைப்பை அடிப்படையாக கொண்ட CSS கட்டம் லேபிள் (தற்போது மட்டுமே IE10 ஆதரவு) என்ற புதிய விவரக்குறிப்பு பயன்படுத்த விரும்புகிறேன்.

CSS கட்டம் கொண்ட ஒரு உறுப்பு மையமாக செமால்ட் நேர்மையானது:

  • கன்டெய்னரின் காட்சியை காட்சிக்கு மாற்றவும்: கட்டம்.
  • 1 நெடுவரிசை மற்றும் 1 வரிசையை வரையறுக்கவும்.
  • நெடுவரிசை- align மற்றும் row-align பண்புகள் கொண்ட உள் உறுப்பு மையம்.

என் வழக்கில் பயன்படுத்தப்படும் CSS Semalt:

 . canvasHolder {அகலம்: 100%;உயரம்: 100%;காட்சி: -ms-grid;-ms-grid-columns: 1fr;-ms-grid-row: 1fr;
}#platformerCanvas {-ms-grid-column: 1;-ms-grid-row: 1;-ms-grid-column-align: center;-ms-grid-row-align: center;
} 

நீங்கள் முன்னுரிமையை IE10 க்காக "-ms" என்று பார்ப்பீர்கள். மோசில்லா சமீபத்தில் அவர்கள் 2012 ல் பயர்பாக்ஸ் CSS கட்டம் லேஅவுட் விவரக்குறிப்பு ஆதரிக்கிறது annonced, இது சிறந்த செய்தி. இதற்கிடையில், இந்த மையம் தந்திரம் IE10 உடன் மட்டுமே வேலை செய்கிறது. இது போன்ற தோற்றம் என்னவென்றால்:

Modernize your HTML5 Canvas GameModernize your HTML5 Canvas Semalt

IE10 சாளரங்கள் நீங்கள் ஒரு தொலைக்காட்சித் திரையில் காணக்கூடியதைப் போலவே செங்குத்து அல்லது கிடைமட்ட கருப்பு நிறக் கம்பிகளை காண்பிக்கும். மற்ற உலாவிகளில், முடிவுகள் படி 2 ன் பொருத்தமாக இருக்கும், ஏனெனில் CSS3 கட்டம் செமால்ட் விவரக்குறிப்பு புறக்கணிக்கப்படும்.

மென்மையான அனிமேஷன்களைப் பயன்படுத்துதல்

இப்போது நாம் பல தீர்மானங்களை கையாள்வது எளிதான அளவிடுதல் செயல்திறன் கொண்டது, பயனர் சாளரத்தை மறுபரிசீலனை செய்யும்போது மென்மையான மாற்றத்தை இயக்குவது நல்லது. இது ஒவ்வொரு நிலை சுமைகள் போது ஒரு குளிர் அனிமேஷன் விளையாட நன்றாக இருக்கும். அதற்கு, நாம் CSS3 மாற்றங்கள் மற்றும் CSS3 3D டிரான்ஸ்ஃபாக்ஸ் கருவிகள் பயன்படுத்த போகிறோம். பெரும்பாலான தளங்களில், GPU ஆல் வன்பொருள் முடுக்கம் வழங்கப்படுகிறது.

கேன்வாஸ் பாணி பண்புகள்

CSS3 மாற்றங்கள் பயன்படுத்த எளிதானது மற்றும் மென்மையான, திறமையான அனிமேஷன் உற்பத்தி. அவற்றை எப்படி பயன்படுத்துவது என்பதை அறிய, என் சக நண்பரின் சிறந்த கட்டுரை, CSS3 மாற்றங்கள் அறிமுகம், அல்லது எங்கள் இன்டர்நெட் எக்ஸ்ப்ளோரர் டெஸ்ட் டிரைவ் தளத்தில் சுற்றி விளையாடலாம், Semalt On: Transitions.

Modernize your HTML5 Canvas GameModernize your HTML5 Canvas Semalt

 
#platformerCanvas {-ms-grid-column: 1;-ms-grid-row: 1;-ms-grid-column-align: center;-ms-grid-row-align: center;-ms-transition-property: all;-ms-transition-duration: 1s;-ms-transition-timing-function: எளிதாக;
} 

"114 இயங்குதளமான Kanvas உடன் உள்ள கேன்வாஸ்" ஐடி இப்போது தானாகவே ஒரு சுலபமான செயல்பாடு மூலம் உருவாக்கப்பட்ட ஒரு இரண்டாவது அனிமேஷன் அதன் பாணி பண்புகளை எந்த மாற்றத்தை பிரதிபலிக்கும். இந்த புதிய விதிக்கு நன்றி, உலாவி சாளரத்தை மறு அளவிடுதல் / மென்மையான அனிமேஷன் மூலம் கேன்வாஸ் அளவுகளை அதிகரிக்கிறது. நான் அதை உருவாக்கும் விளைவு நேசிக்கிறேன் - அனைத்து CSS மட்டுமே 3 வரிகளை கொண்ட.
குறிப்பு: இணக்கத்தன்மைக்காக நான் வெவ்வேறு முன்னொட்டுகளை (-moz, -webkit, மற்றும் -o முறையே மோசில்லா, வெப்கிட் மற்றும் ஓபரா) சேர்க்கிறேன். நீங்கள் அவ்வாறு செய்ய நினைப்பீர்கள்.

ஒவ்வொரு நிலைக்கும்

இப்போது நான் தற்காலிகமாக கேன்வாஸ் மறைந்துவிடும் செய்ய CSS3 3D டிரான்ஸ்ஃபார்ம்கள் பயன்படுத்த விரும்புகிறேன். இது Y அச்சு மீது அனிமேட்டட் 90 டிகிரி சுழற்சி செய்யப்படும். விளைவுகளை நன்கு புரிந்துகொள்வதற்கு, நீங்கள் எங்கள் கைகளில் விளையாடலாம்: இணையத்தில் 3D டிரான்ஸ்ஃபார்ம்ஸ் Semalt test-drive தளம்:

நாங்கள் ஒரு வேடிக்கை அனிமேஷன் உருவாக்க அளவு மற்றும் rotateY பண்புகள் விளையாட போகிறோம். அதற்கு, செமால்ட் இரண்டு CSS விதிகள் சேர்த்து இரண்டு வகுப்புகளை இலக்காகக் கொண்டது:

 . moveRotation
{-ms-transform: முன்னோக்கு (500px) சுழற்று Y (-90deg) அளவு (0. 1);-வெப்கிட்-உருமாற்றம்: முன்னோக்கு (500px) அளவு   ;-எம்ஒஸ்-உருமாற்றம்: முன்னோக்கு (500px) சுழற்று Y (-90deg) அளவு (0. 1);
}. initialRotation
{-ms-transform: முன்னோக்கு (500px) சுழற்று Y (0deg) அளவு   ;-வெப்கிட்-உருமாற்றம்: முன்னோக்கு (500px) அளவு   ;-எம்ஒஸ்-உருமாற்றம்: முன்னோக்கு (500px) சுழற்று Y (0deg) அளவு   ;
} 

முதலில், என் கேன்வாஸ் ஆரம்ப செமால்ட் வகுப்பு தொகுப்பு:

         

இப்போது யோசனை வீரர் தற்போதைய மட்டத்தில் துடிக்கிறது வரை காத்திருக்க வேண்டும். இது முடிந்தவுடன், கேன்வாஸ் வர்க்கத்தின் தொடக்கச்சட்டம் செல்லுபடியை இருந்து மாற்றி வருகிறோம். இந்த அனிமேஷன் உருவாக்க முன் நாம் அமைக்க CSS3 மாற்றங்கள் தானாக தூண்டும்.

அனிமேஷன் முடிந்ததும் தெரிந்துகொள்ள, ஒரு நிகழ்வு எழுப்பப்படுகிறது. ஒவ்வொரு உலாவிலும் வித்தியாசமாக பெயரிடப்பட்டது. IE10, பயர்பாக்ஸ், வெப்கிட் மற்றும் ஓபரா ஆகியவற்றை இலக்காக பதிவு செய்ய நான் பயன்படுத்தும் குறியீடு இங்கே உள்ளது:

 
// பல்வேறு உலாவிகளில் விற்பனையாளர்கள் மாற்றம் இறுதியில் நிகழ்வு பதிவு
PlatformerGame. முன்மாதிரி. registerTransitionEndEvents = function    {// IE10, பயர்பாக்ஸ், குரோம் & சபாரி, ஓபராஇந்த. platformerGameStage. கேன்வாஸ். addEventListener ("MSTransitionEnd", onTransitionEnd (இது));இந்த. platformerGameStage. கேன்வாஸ். addEventListener ("transitionend", onTransitionEnd (இது));இந்த. platformerGameStage. கேன்வாஸ். addEventListener ("webkitTransitionEnd", onTransitionEnd (இது));இந்த. platformerGameStage. கேன்வாஸ். addEventListener ("OTransitionEnd", onTransitionEnd (இது));
};
இங்கே மீண்டும் அழைக்கப்படும் குறியீடாகும்:
/ மாற்றம் முடிவடைந்த போது செயல்பாடு அழைக்கப்படுகிறது
// நாம் அடுத்த நிலை ஏற்றும்
சார்பில் மாற்றம் (உதாரணமாக)திரும்பும் செயல்பாடு    {(உதாரணமாக loadNextLevel === உண்மை) {சான்றாக அமைந்தது. LoadNextLevel   ;}}
}; 

கடைசியாக, என் விளையாட்டிற்கான குறியீடானது, கான்வாஸின் மீது அமர்வு வகுப்பு அமைப்பை அமைக்கிறது:

 
// விளையாட்டு முன்னெடுக்க பொருத்தமான நடவடிக்கை செய்யவும்
விளையாடுவதற்கு மீண்டும் வீரர் பெற //. PlatformerGame. முன்மாதிரி. HandleInput = function    {என்றால் (! இது.(இந்த நிலை நிலை ஹீரோ. IsAlive)இந்த. நிலை. StartNewLife   ;}வேறு ஏதேனும் (இந்த நிலை நிலை நேரம் == 0) {(இந்த நிலை.// CSS3 மாற்றங்கள் ஆதரவு இருந்தால்// நாம் ஒவ்வொரு நிலைக்கும் இடையே மென்மையான & நல்ல விளைவுகளைப் பயன்படுத்துகிறோம்(Modernizr. csstransitions) {இந்த. loadNextLevel = true;// moveRotation class அமைத்தல் CSS மாற்றம் தூண்டும்இந்த. platformerGameStage. கேன்வாஸ். className = "moveRotation";}// CSS3 மாற்றம் ஆதரவு இல்லை என்றால், நாம் நேரடியாக குதித்து வருகிறோம்// அடுத்த நிலைக்குவேறு {இந்த. LoadNextLevel   ;}}வேறுஇந்த. ReloadCurrentLevel   ;}இந்த. platformerGameStage. removeChild (statusBitmap);overlayDisplayed = பொய்;}இந்த. இதுபோன்றது. continuePressed;
}; 

நான் CSS மாற்றங்கள் ஒரு அம்சம் கண்டறிதல் செய்ய Modernizr பயன்படுத்தி நான் அறிவிப்பு. இறுதியாக, சமச்சீர் செயல்பாட்டிற்குள் ஆரம்ப ரோட்டேஷன் வகுப்பை மீண்டும் அமைப்போம்:

  // அடுத்த நிலை ஏற்றும்
PlatformerGame. முன்மாதிரி. LoadNextLevel = function    {இந்த. loadNextLevel = பொய்;// ஆரம்ப ரோட்டேஷன் வகுப்பை மீண்டும் அமைப்பது மாற்றத்தைத் தூண்டுகிறதுஇந்த. platformerGameStage. கேன்வாஸ். className = "initialRotation";//. .. };  

குறிப்பு: என் முந்தைய CSS தொகுதிகளில் IE10 மற்றும் Firefox க்காக WebKit க்கான அதே மாற்றத்தை (மற்றும் அனிமேஷன்) அமைக்கவில்லை என்பதை நீங்கள் கவனித்திருக்கலாம். ஏனென்றால், என் விஷயத்தில், Chrome IE10 மற்றும் Firefox 11 போன்ற அதே வழியில் நடந்து கொள்ளாது 11. நான் jsFiddle இல் ஒரு எளிய இனப்பெருக்கம் வழக்கு ஒன்றை அமைத்துள்ளேன்.

டெமோ வீடியோ மற்றும் URL

இங்கே இந்த கட்டுரையில் உள்ளடக்கிய IE10 அம்சங்களை நிரூபிக்கும் ஒரு குறுகிய வீடியோ:
Modernize your HTML5 Canvas GameModernize your HTML5 Canvas Semalt

நீங்கள் IE10 அல்லது இங்கே உங்கள் பிடித்த உலாவி இந்த டெமோ விளையாட முடியும்: நவீன HTML5 இயங்குதள.
Modernize your HTML5 Canvas GameModernize your HTML5 Canvas Semalt

இந்த கட்டுரையின் அடுத்த பகுதியில், பிணைய இணைப்பு இல்லாமல் என் விளையாட்டு வேலை செய்ய, மற்றும் இழுவை மற்றும் சொடுக்கும் ஏபிஐ மற்றொரு சிறப்பான அம்சத்தை உருவாக்க எப்படி ஆஃப்லைன் ஏபிஐ செயல்படுத்த எப்படி காட்ட.

March 1, 2018